Professional Documents
Culture Documents
Disadvantages
Overhead
Lack of versatility (very basic forms of service
interactions)
Discovery, aggregation,
Processes choreography, …
WSDL
Description (self-describing services)
www.ibm.com/websphere
www.hp.com/go/webservices
www.microsoft.com/net
otn.oracle.com/webservices
www.sun.com/sunone
www.xmlbus.com
…
SOAP-based SOAP-based
middleware middleware
SOAP messages
(to interact)
SOAP-based
middleware
service descriptions
UDDI registry
A. Brogi and S. Corfini Web Services - 9
Goal of middleware
ease the interaction between applications across
heterogeneous computing platforms, offering
programming abstractions that hide complexity
example: Remote Procedure Call (RPC)
RPC
RPC hides communication details
behind a procedure call and TCP
bridges heterogenous platforms
IP
example scenario
a company that has its customer data, inventory data
and purchasing order from customers stored in three
different applications
how to integrate them? Use Web services!
A. Brogi and S. Corfini Web Services - 10
Service-oriented Computing
Evolution of programming:
structured programming (Algol,Fortran,C…)
object-oriented programming (SmallTalk,Java,C#…)
component-oriented programming (CORBA,COM,.NET…)
… and …
Service-oriented Computing
notion of service as the basic element for developing
next generation heterogeneous distributed applications
strong industrial and academic interest
many examples of available (Web) services
</env:Header>
<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>
SOAP header
transactional
context
SOAP body
name of the
service requestor procedure service provider
input parameter 1
SOAP HTTP HTTP SOAP
engine engine input parameter 2 engine engine
SOAP header
transactional
context
SOAP body
return
parameter
WSDL specification
abstract part
types
messages
port types
concrete part
bindings
services
abstract
xmlns="http://schemas.xmlsoap.org/wsdl/" >
<portType name="procurementPortType">
<operation name="orderGoods">
<input message = "OrderMsg"/>
operation and
</operation> port type
</portType>
<service name="ProcurementService">
<port name="ProcurementPort" binding="tns:ProcurementSoapBinding"> port and
<soap:address location="http://example.com/procurement"/>
</port>
service
</service>
</definitions>
A. Brogi and S. Corfini Web Services - 26
UDDI
<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
overviewDoc </overviewURL>
(refer to WSDL </overviewDoc>
specs and to API
<overviewDoc>
<overviewURL useType=”text”>
specs) http://uddi.org/pubs/uddi_v3.htm#PubV3
</overviewURL>
</overviewDoc>
classification <categoryBag>
information
<keyedReference keyName=”uddi-org:types:wsdl”
keyValue="wsdlSpec"
(specifies that this tModelKey="uddi:uddi.org:categorization:types”/>
tModel is about <keyedReference keyName=”uddi-org:types:soap”
keyValue="soapSpec"
XML, WSDL, and tModelKey="uddi:uddi.org:categorization:types”/>
SOAP specs) <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>
</tModel>
Client 1 2 Server 3
Server stubs
Client stubs
6 5 4
Vehicle.owl
Vehicle
Car Bus
XML http://www.w3.org/XML/
SOAP http://www.w3.org/TR/soap/
WSDL http://www.w3.org/TR/wsdl/
UDDI http://www.uddi.org/