Вы находитесь на странице: 1из 18

service requestor

application object (client)

service provider
application object (service provider)

SOAP-based middleware

SOAP messages exchanged on top of, HTTP, SMTP, or other transport converts procedure calls to/from XML messages sent through HTTP or other protocols.

SOAP-based middleware

Copyright Springer Verlag Berlin Heidelberg 2004

<operation name="orderGoods"> <input message = "OrderMsg"/> </operation>

WSDL of service provider

WSDL compiler (client side)

WSDL compiler (server side)

service requestor
application object (client) stub

service provider
application object (service provider) skeleton

SOAP-based middleware

SOAP messages

SOAP-based middleware

Copyright Springer Verlag Berlin Heidelberg 2004

service requestor
application object (client) stub

service provider
application object (service provider) skeleton

SOAP-based middleware

SOAP messages

SOAP-based middleware

Copyright Springer Verlag Berlin Heidelberg 2004

SOAP messages (to look for services)

SOAP messages (to publish service description)

SOAP-based middleware

service descriptions
UDDI registry

SOAP envelope SOAP header header block

SOAP body
body block

Copyright Springer Verlag Berlin Heidelberg 2004

SOAP envelope SOAP body PurchaseOrder document -product item -quantity

SOAP envelope SOAP body Acknowledgement document -order id

(a) Document-style interaction SOAP envelope SOAP body method name orderGoods input parameter 1 product item input parameter 2 quantity SOAP envelope SOAP body method return return value order id

(b) RPC-style interaction Copyright Springer Verlag Berlin Heidelberg 2004

<ProductItem> <name></name> <type></type> <make></make> </ProductItem>

<ProductItem name= type= make= />

<ProductItem name= <type></type> <make></make> </ProductItem>

Copyright Springer Verlag Berlin Heidelberg 2004

<?xml version='1.0' ?> <env:Envelope xmlns:env="http://www.w3.org/2002/06/soap-envelope" > <env:Header> <t:transactionID xmlns:t="http://intermediary.example.com/procurement" env:role="http://www.w3.org/2002/06/soap-envelope/role/next" env:mustUnderstand="true" > 57539 </t:transactionID> </env:Header>

envelope header

blocks
<env:Body> <m:orderGoods env:encodingStyle="http://www.w3.org/2002/06/soap-encoding" xmlns:m="http://example.com/procurement"> <m:productItem> <name>ACME Softener</name> </m:productItem> <m:quantity> 35 </m:quantity> </m:orderGoods> </env:Body> </env:Envelope>

body

Copyright Springer Verlag Berlin Heidelberg 2004

HTTP Post SOAP envelope SOAP header transactional context SOAP body

service requestor
SOAP engine HTTP engine

name of the procedure input parameter 1 input parameter 2

service provider
HTTP engine SOAP engine

client implementation (other tiers)

HTTP Post SOAP envelope SOAP header transactional context SOAP body return parameter

service implementation (other tiers)

Copyright Springer Verlag Berlin Heidelberg 2004

Copyright Springer Verlag Berlin Heidelberg 2004

service requestor
client implementation
invokes the service as a local call

service provider
service implementation
invokes the local procedure of the service implementation

client stub
invoke SOAP engine to prepare SOAP message

server stub
the router parses the message, identifies the appropriate stub, and delivers the parsed message

SOAP engine
packages SOAP into HTTP and passes it to an HTTP client that sends it to the provider

SOAP router
passes the content of the HTTP message to the router

HTTP engine

HTTP server

WSDL specification abstract part


types messages operations port types

concrete part
bindings services and ports

Copyright Springer Verlag Berlin Heidelberg 2004

<?xml version="1.0"?> <definitions name="Procurement" targetNamespace="http://example.com/procurement/definitions" xmlns:tns="http://example.com/procurement/definitions" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/" > <message name="OrderMsg"> <part name="productName" type="xs:string"/> <part name="quantity" type="xs:integer"/> </message>

abstract part messages

<portType name="procurementPortType"> <operation name="orderGoods"> <input message = "OrderMsg"/> </operation> </portType>

operation and port type

<binding name="ProcurementSoapBinding" type="tns:procurementPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="orderGoods"> <soap:operation soapAction="http://example.com/orderGoods"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="ProcurementService"> <port name="ProcurementPort" binding="tns:ProcurementSoapBinding"> <soap:address location="http://example.com/procurement"/> </port> </service> </definitions>

concrete part binding

port and service

WSDL of service provider

2
WSDL compiler (client side) WSDL compiler (server side)

1
WSDL generator

service requestor
application object (client)
stub

service provider
application object (service provider)
skeleton

SOAP-based middleware

SOAP messages

SOAP-based middleware

Copyright Springer Verlag Berlin Heidelberg 2004

businessEntity name contacts description identifiers categories businessService service key name description categories

tModel tModel tModel key key key name name name description description description overviewDoc overviewDoc overviewDoc identifiers identifiers identifiers categories categories categories

bindingTemplate binding key description address detailed info references to tModels

tModel tModel key key name name description description overviewDoc overviewDoc identifiers identifiers categories categories

Specs stored at the providers site

Stored in the UDDI registry

overviewDoc (refer to WSDL specs and to API specs)

<tModel tModelKey=uddi:uddi.org:v3_publication> <name>uddi-org:publication_v3</name> <description>UDDI Publication API V3.0</description> <overviewDoc> <overviewURL useType=wsdlInterface> http://uddi.org/wsdl/uddi_api_v3_binding.wsdl#UDDI_Publication_SoapBinding </overviewURL> </overviewDoc> <overviewDoc> <overviewURL useType=text> http://uddi.org/pubs/uddi_v3.htm#PubV3 </overviewURL> </overviewDoc> <categoryBag> <keyedReference keyName=uddi-org:types:wsdl keyValue="wsdlSpec" tModelKey="uddi:uddi.org:categorization:types/> <keyedReference keyName=uddi-org:types:soap keyValue="soapSpec" tModelKey="uddi:uddi.org:categorization:types/> <keyedReference keyName=uddi-org:types:xml keyValue="xmlSpec" tModelKey="uddi:uddi.org:categorization:types/> <keyedReference keyName=uddi-org:types:specification keyValue="specification" tModelKey="uddi:uddi.org:categorization:types/> </categoryBag>

classification information (specifies that this tModel is about XML, WSDL, and SOAP specs)

</tModel>

Copyright Springer Verlag Berlin Heidelberg 2004

service requestor

service provider

SOAP/HTTP

SOAP/HTTPS

Inquiry API

Publishers API

Inquiry API

Publishers API

Web service interface Subscription, Replication, and Custody transfer APIs (SOAP/HTTPS)

Web service interface

service descriptions
UDDI registry A

service descriptions

UDDI registry B

Copyright Springer Verlag Berlin Heidelberg 2004

service requestor

service provider

WSDL service descriptions

SOAP/HTTP Inquiry API

SOAP/HTTPS
Publishers API tModel businessEntity

Web service interface

service descriptions
UDDI registry

businessService bindingTemplate

Copyright Springer Verlag Berlin Heidelberg 2004

<?xml version="1.0"?> <find_tModel generic="1.0" xmlns="urn:uddi-org:api"> <categoryBag> <keyedReference tModelKey="UUID:C25893AF-1977-3528-36B5-4192C2AB9E2C" keyName="uddi-org:types" keyValue="wsdlSpec"/> <keyedReference tModelKey="UUID:A15019C5-AE14-236C-331C-650857AE0221" keyName="book pricing" keyValue="36611349"/> </categoryBag>

Copyright Springer Verlag Berlin Heidelberg 2004

service provider

service implementation server stub SOAP router HTTP engine

WSDL generator

WSDL service descriptions

WSDL compiler

UDDI publisher

businessEntity businessService bindingTemplate tModel

Inquiry API

Publishers API

UDDI registry

Вам также может понравиться