Transcript 投影片 1
Web Services
Information Management
NTU
What Are Web Services?
Semantically encapsulate discrete
functionality
Loosely coupled, reusable components
Programmatically accessible
Distributed over the Internet
Information Management
NTU
A Web Services Technology Stack
*
**
* WSFL has been replaced by BPEL4WS.
** An alternative is ebXML (a UN/CEFACT standard for EDI-style
information exchange).
Source: The Stencil Group
Information Management
NTU
The Core Layers
Common Internet Protocols (HTTP, HTTPS,
SMTP, …): the basic communication framework
for Web services
XML: a widely accepted format for exchanging
data and its corresponding semantics
SOAP: an XML-based protocol for messaging
and RPC-style communication between
applications (in a distributed environment)
Information Management
NTU
The Higher-Level Layers
WSDL: an XML-based description of how to
connect to a particular Web service
UDDI: a set of protocols and a public
directory for registration and real-time lookup
of Web services
BPEL4WS: a framework for defining new
business processes that utilize existing web
services.
* ebXML: defines core components, business
processes, registry and repository, messaging
services, ...
Information Management
NTU
Implementation Models of Web Services
Source: Sun Microsystems, Inc.
Information Management
NTU
A SOAP Use Case
Source: Sun Microsystems, Inc.
Information Management
NTU
Core Structures of UDDI
Source: Sun Microsystems, Inc.
Information Management
NTU
How WSDL Works
Source: Sun Microsystems, Inc.
Information Management
NTU
How ebXML Works
Source: Sun Microsystems, Inc.
Information Management
NTU
Web Services on .NET
Source: TheServerSide.com
Information Management
NTU
Web Services on J2EE
Source: TheServerSide.com
Information Management
NTU
Processing a Web Service Request
Source: TheServerSide.com
Information Management
NTU
Registering/Discovering a Web Service
Source: TheServerSide.com
Information Management
NTU
Messaging and RPC-Style Requests
Source: TheServerSide.com
Information Management
NTU
The JAX* Suite
JAXR (Java API for XML Registries): to look
up the business partner's web service.
JAX/RPC (Java API for XML RPC): to send
RPC requests to external web services.
JAXM (Java API for XML Messaging): to
send SOAP/ebXML messages to external
web service.
JAXP (Java API for XML Parsing) and
JAXB (Java API for XML Binding): to
transform Java data into an XML format and
to convert the received XML data back into a
Java language construct, and to perform
XSLT transforms to convert schemas.
Information Management
NTU
Invoking Another Web Service
Source: TheServerSide.com
Information Management
NTU
Simple Object Access Protocol
(SOAP)
For information exchange in a distributed
environment
Message format based on XML
Can be combined with various transport
protocols
Originally developed by Microsoft
SOAP Version 1.2 now a working draft
Information Management
NTU
Parts of SOAP
The SOAP envelope: for describing what is in
a message and how to process it.
The SOAP binding framework (added in
Version 1.2): for exchanging SOAP envelopes
between peers using an underlying transport
protocol
The SOAP encoding rules: for exchanging
instances of application-defined data types.
The SOAP RPC representation: a
convention for representing remote procedure
calls and responses.
Information Management
NTU
A SOAP Message
<env:Envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope">
<env:Header>
<n:alertcontrol xmlns:n="http://example.org/alertcontrol">
<n:priority>1</n:priority>
<n:expires>2001-06-22T14:00:00-05:00</n:expires>
</n:alertcontrol>
</env:Header>
<env:Body>
<m:alert xmlns:m="http://example.org/alert">
<m:msg>Pick up Mary at school at 2pm</m:msg>
</m:alert>
</env:Body>
</env:Envelope>
Information Management
NTU
Composition of a SOAP Envelope
Source: http://www.w3.org/TR/soap12-part1/
Information Management
NTU
A SOAP Envelope
<env: Envelope xmlns:env="http://www.w3.org/2001/09/soap-envelope/"
env:encodingStyle="http://www.w3.org/2001/09/soap-encoding/">
<env:Header>
<t:Transaction xmlns:t="some-URI">
env:mustUnderstand="1"
5
</t:Transaction>
</env:Header>
<env:Body>
<m:GetLastTradePrice xmlns:m="some-URI">
<symbol>DEF</Symbol>
</m: GetLastTradePrice>
</env:Body>
</env : Envelope>
Information Management
NTU
SOAP Request and Response
Request (partial)
<env:Body>
<m:GetLastTradePrice xmlns:m="some-URI">
<symbol>DEF</symbol>
</m:GetLastTradePrice>
</env:Body>
Response (partial)
<env:Body>
<m:GetLastTradePriceResponse xmlns:m="some-URI">
<price>22.50</price>
</m: GetLastTradePriceResponse>
</env:Body>
Information Management
NTU
SOAP Message in an HTTP Request
POST /StockQuote HTTP/1.1
Host: www.example.org
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://example.org/2001/06/quotes"
<env:Envelope xmlns:env="http://www.w3.org/2001/09/soapenvelope" >
<env:Body>
<m:GetLastTradePrice
env:encodingStyle="http://www.w3.org/2001/09/soap-encoding"
xmlns:m="http://example.org/2001/06/quotes">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</env:Body>
Information Management
NTU
</env:Envelope>
SOAP Message in an HTTP Response
POST /StockQuote HTTP/1.1
HTTP/1.1 200 OK
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
<env:Envelope xmlns:env="http://www.w3.org/2001/09/soapenvelope" >
<env:Body>
<m:GetLastTradePriceResponse
env:encodingStyle="http://www.w3.org/2001/09/soap-encoding"
xmlns:m="http://example.org/2001/06/quotes">
<Price>34.5</Price>
</m:GetLastTradePriceResponse>
</env:Body>
</env:Envelope>
Information Management
NTU
A SOAP Use Case
Source: Sun Microsystems, Inc.
Information Management
NTU