400 likes | 469 Views
CP3024 Lecture 10. Web Services. What are Web Services?. “encapsulated, loosely coupled, contracted software objects offered via standard protocols” ZapThink Research. Web Services. Encapsulated Web Service implementation is invisible to entities outside the service
E N D
CP3024 Lecture 10 Web Services
What are Web Services? • “encapsulated, loosely coupled, contracted software objects offered via standard protocols” ZapThink Research
Web Services • Encapsulated • Web Service implementation is invisible to entities outside the service • Exposes an interface but hides details • Loosely Coupled • Service and consumer software can be redesigned independently
Web Services • Contracted • Description of service is available to consumer • Standard Protocols • TCP/IP • HTTP • XML • SOAP • WSDL • UDDI
Self-describing • Every web service has a published public interface • Minimum of human readable documentation • SOAP services should have interfaces written in XML
Discoverable • Simple mechanism for publishing details about a web service • Simple mechanism for finding a service and its interface • Mechanism could be completely decentralised or centralised registry
A Web Service .. • Is available over network • Uses standardised XML messaging • Is independent of any given OS or language • Is self describing via XML • Is easily discoverable
Web Usage Shift • Human-centric Web • Majority of web transactions initiated by a human • Application-centric Web • Inter-application interchanges • E.g. credit card approval
A Web Service In Action XML XML
Possible Protocols • HTTP POST/GET • XML-RPC • SOAP • Simple Object Access Protocol
Example Service • Return a set of keys given a set of functional dependencies • Service called keyservice • Method called getCandidateKeys • String argument fdSet • Argument sent “{{a}->{b}}”
XML-RPC Service Invocation <?xml version="1.0" encoding="ISO-8859-1"?> <methodCall> <methodName> keyservice.getCandidateKeys </methodName> <params> <param> <value>{{a}->{b}}</value> </param> </params> </methodCall>
XML-RPC Response <?xml version="1.0" encoding="ISO-8859-1"?> <methodResponse> <params> <param> <value> {{a}} </value> </param> </params> </methodResponse>
SOAP • SOAP envelope specification • Rules for encapsulating the data being transferred • Data encoding rules • Rules for encoding data types • RPC conventions • Rules for invoking remote methods
Example Service Request <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV= http://schemas.xmlsoap.org/soap/envelope/ xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getCandidateKeys xmlns:ns1="urn:examples:keyservice" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> <fdSet xsi:type="xsd:string">{{a}->{b}}</fdSet> </ns1:getCandidateKeys> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Example Service Reply <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <ns1:getCandidateKeysResponse xmlns:ns1="urn:examples:keyservice" SOAP-ENV:encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/"> <return xsi:type="xsd:string">{{a}}</return> </ns1:getCandidateKeysResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Soap Message Envelope (required) Header (optional) Body (required) Fault (optional) Structure of SOAP Messages
Fault Response <?xml version='1.0' encoding='UTF-8'?> <SOAP-ENV:Envelope xmlns:SOAP-ENV= "http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Exception from service object: FD: Unexpected end of input</faultstring> <faultactor>/soap/servlet/rpcrouter</faultactor> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Web Services Definition Language (WSDL) • Uses XML to describe a web service • Describes the interface of available functions • Specifies data type information for all requests and responses • Holds binding information about the transport protocol • Contains address information to locate the service
Major Elements • definitions • types • message • portType • binding • ports • service
WSDL definitions <definitions name="KeyService" targetNamespace= "http://localhost:8080/wsdl/Lucchesi.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap= "http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns= "http://localhost:8080/wsdl/Lucchesi.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
WSDL types • Optional element • Defines complex types e.g. arrays and structures • Not used in the example
WSDL message <message name="CandidateKeyRequest"> <part name="FDSet" type="xsd:string"/> </message> <message name="getKeys"> <part name="return" type="xsd:string"/> </message>
WSDL portType <portType name="Key_PortType"> <operation name="getCandidateKeys"> <input message="tns:CandidateKeyRequest" name="Request"/> <output message="tns:getKeys“ name="Response"/> </operation> </portType>
WSDL binding <binding name="Key_Binding" type="tns:Key_PortType"> <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="getCandidateKeys"> <soap:operation soapAction="Generate keys"/> <input name="Request"> <soap:body encodingStyle= http://schemas.xmlsoap.org/soap/encoding/ namespace="urn:examples:keyservice" use="encoded"/> </input>
WSDL Binding <output> <soap:body encodingStyle= "http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:examples:keyservice" use="encoded"/> </output> </operation> </binding>
WSDL Service <service name="Key_Service"> <documentation> WSDL File for KeyService </documentation> <port binding="tns:Key_Binding" name="Key_Port"> <soap:address location= “http://localhost:8080/soap/servlet/rpcrouter” /> </port> </service>
WSDL In Action • Can use WSDL description to generate client code • Can use WSDL description to automatically invoke a service • Can generate WSDL from server code
UDDI • Universal Description, Discovery and Integration • Specification for distributed directory of businesses • Data stored in an XML format • UDDI business registry • Launched May 2001 by IBM and Microsoft
UDDI Development • Developed by IBM, Microsoft and Ariba • Ariba/IBM collaboration on B2B • IBM/Microsoft collaboration on SOAP • Microsoft/Ariba collaboration on BizTalk and cXML • Three revisions and then transfer to standards body • Launched September 2000
UDDI Development • Version 2.0 announced July 2001 • Internationalisation • Complex organisations • Better searching mechanisms • Version 3.0 announced July 2002 • Increased security • Improved WSDL support • Multi-registry topologies • Proactive notifications
UDDI Technical Architecture • UDDI data model • XML schema describing businesses and web services • UDDI API • SOAP based API for publishing and searching UDDI data • UDDI cloud services • Sites implementing UDDI which synchronise regularly
UDDI Data Model • businessEntity • Information about a business • businessService • Information about a web service • bindingTemplate • Information about accessing a service • tModel • Pointer to external technical specification
businessEntity businessService bindingTemplate tModel Relationships
find_binding find_business find_service find_tModel get_bindingDetail get_businessDetail get_serviceDetail get_tModelDetail UDDI Inquiry API
get_authToken discard_authToken save_binding save_business save_service save_tModel delete_binding delete_business delete_service delete_tModel UDDI Publishing API
Use Of UDDI • Publishing • Advertise services • Allow discovery of standards in use • Searching • Locate details about electronic services of business partners • Search for suppliers
Summary • Web Services • Mechanism for electronic business on the Web • Based on XML • SOAP • WSDL • UDDI