1 / 39

Web Services Core Technologies

SOA and Web Services Web Services Standards The XML! S OAP WSDL UDDI. Web Services Core Technologies. Service Oriented Architecture (SOA). SOA is an example of a the composite computing model :

davida
Download Presentation

Web Services Core Technologies

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SOA and Web Services • Web Services Standards • The XML! • SOAP • WSDL • UDDI Web ServicesCore Technologies

  2. Service Oriented Architecture (SOA) • SOA is an example of a the composite computing model: • “an architecture that uses distributed, discovery-based execution to expose and manage a collection of service-oriented software assets” • In this model: • capabilities (i.e. software assets) should be dynamically discoverable • should be a clear separation of the software's capabilities and its implementation • should be possible to quickly assemble impromptu computing communities with minimal coordinated planning efforts, installation technicalities or human intervention.

  3. SOA Triad of Operations

  4. Resource Discovery Resource Communication Resource Availability Centralized Decentralized Note: This is for the current Web Services, technology stack - in principal you can host web services in a number of ways

  5. Web Service Protocols Service Registry • Web Services Protocols based on XML • Messaging • SOAP • Service Description • WSDL • Service Discovery • UDDI • Many Others • BPEL, WSRF, WS-Addressing, WS-Security, • WS-Notification • SOAP, WSDL and UDDI are de-facto standards Find (UDDI) Publish (UDDI) Describe (WSDL) Service Consumer Service Provider Bind (SOAP)

  6. SOAP • Simple Object Access Protocol (SOAP) • Now just SOAP • Has its roots in RPC as you can tell by the name • Envelope for exchanging XML messages • Doesn’t define message exchange pattern • Not restricted to request/response • Doesn’t specify transport protocol • Normally tunnelled through HTTP POST, but can be any protocol that can carry a SOAP envelope • Structurally very similar to an (X)HTML document…

  7. SOAP Document • Envelope • Top-level wrapper • Header (optional) • Security and authentication information (WS-Security) • Routing information (WS-Addressing) • Resource information (WSRF) • … • Body • XML encoded application data • Attachments (optional and used less now) • Additional non XML-data (binary, unencoded text, etc.) SOAP Envelope (Required) SOAP Header (Optional) Extension Information e.g. routing, security SOAP Body (Required) Application Data e.g. request, response error

  8. SOAP Request (HTTP) POST /InStock HTTP/1.1 Host: www.stock.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> ... (optional header information) </soap:Header> <soap:Body xmlns:m="http://www.stock.org/stock"> <m:GetStockPrice> <m:StockName>IBM</m:StockName> </m:GetStockPrice> </soap:Body> </soap:Envelope> HTTP Header SOAP Envelope SOAP Header SOAP Body This envelope is dependent on HTTP

  9. SOAP Response (HTTP) HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle ="http://www.w3.org/2001/12/soapencoding"> <soap:Header> ... (optional header information) </soap:Header> <soap:Bodyxmlns:m ="http://www.stock.org/stock"> <m:GetStockPriceResponse> <m:Price>34.5</m:Price> </m:GetStockPriceResponse> </soap:Body> </soap:Envelope>

  10. SOAP Faults • SOAP fault sent instead of normal response if something goes wrong <Body xmlns=http://www.w3.org/2001/12/soap-envelope> <Fault> <faultcode>Client</faultcode> <faultstring>Something went wrong</faultstring> <detail>Application specific error information</detail> </Fault> </Body> • Fault Code • Client – Message incorrectly formed by client • Server – Problem on server so message could not proceed • VersionMismatch – Invalid namespace for SOAP envelope • MustUnderstand – Header element not understood

  11. WS-Addressing • The previous example was dependent on HTTP to have an address • WS-Addressing overcomes this • Allows addressing information to be embedded in the SOAP header • E.g. To, From, FaultTo • These values can also be transferred in a SOAP body using an EndpointReference xml structure • WS-Addressing specifies how an EndpointReference can be mapped to a bunch of SOAP headers.

  12. WS-Addressing Simple EndpointReference: <wsa:EndpointReference> <wsa:Address>http://example.com/service</wsa:Address> </wsa:EndpointReference> Gets mapped to SOAP Header: <soap:Header> <wsa:MessageID>urn:uuid:2</wsa:MessageID> <wsa:To>http://example.com/service</wsa:To> </soap:Header> EPR Can contain other info, e.g.: ReferenceParameters – application specific keys Service description location – WSDL file

  13. EndpointReference toSOAP Headers EndpointReference SOAP Envelope Address Header http://server.com To http://server.com ReferenceParameters Element … Element … Element Element Body CM0356/CMT606 Spring 2008

  14. SOAP Request(HTTP & WS-Addressing) POST /StockMarketService HTTP/1.1 Host: www.stock.org Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <?xml version="1.0"?> <soap:Envelope xmlns:soap=http://www.w3.org/2001/12/soap-envelope xmlns:wsa="http://www.w3.org/2005/08/addressing" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> <wsa:MessageID>urn:uuid:1</wsa:MessageID> <wsa:ReplyTo> <wsa:Address>http://example.com/business/client</wsa:Address> </wsa:ReplyTo> <wsa:To>http://www.stock.org/StockMarketService</wsa:To> <wsa:Action>http://www.stock.org/GetStockMarket</wsa:Action> </soap:Header> <soap:Bodyxmlns:m="http://www.stock.org/stock"> <m:GetStockMarket> <m:MarketName>DOW</m:MarketName> </m:GetStockMarket> </soap:Body> </soap:Envelope> HTTP Header SOAP Envelope SOAP Header SOAP Body

  15. SOAP Response(HTTP & WS-Addressing) HTTP/1.1 200 OK Content-Type: application/soap+xml; charset=utf-8 Content-Length: nnn <soap:Envelope xmlns:soap=http://www.w3.org/2001/12/soap-envelope xmlns:wsa="http://www.w3.org/2005/08/addressing" soap:encodingStyle ="http://www.w3.org/2001/12/soapencoding"> <soap:Header> <wsa:MessageID>urn:uuid:2</wsa:MessageID> <wsa:RelatesTo>urn:uuid:1</wsa:RelatesTo> <wsa:To>http://example.com/business/client</wsa:To> <wsa:Action> http://www.stock.org/GetStockMarketResponse</wsa:Action> </soap:Header> <soap:Bodyxmlns:m ="http://www.stock.org/stock"> <m:GetStockMarketResponse> <wsa:EndpointReference> <wsa:Address>http://www.dow-service.com</wsa:Address> </wsa:EndpointReference> </m:GetStockMarketResponse> </soap:Body> </soap:Envelope>

  16. SOAP • XML based • Simple and Lightweight • Compared to CORBA, RMI, DCOM etc. • Language and OS Independent • Unlike RMI (Java) or DCOM (Windows) • Transport Protocol Independent • Transfer Protocol Independent with WS-Addressing • Extensible • Additional features can be included in header • Vendor Support • IBM, Microsoft, Apache, HP, Sun, etc

  17. WSDL • Web Service Definition Language (WSDL) • WSDL documents describe: • Where the service resides, and • How to invoke the service • Generally available as web pages • e.g. http://bouscat.cs.cf.ac.uk/someService?WSDL • Location of WSDL relative to Web Service not specified • Like CORBA Interface Definition Language (IDL) but more flexible

  18. WSDL Documents (1) • Types • What data types will be transmitted • Messages • What messages will be transmitted • Port Types • What operations (functions) will be supported • Bindings • How will the messages be transmitted on the wire? • What message protocol (e.g. SOAP) specific details are there? • Service • Where is the service located? Types Messages Port Types Bindings Service

  19. WSDL Documents (2) • Service can have multiple ports • A port is an endpoint to which messages are sent • e.g. http://cs.cf.ac.uk/service • Each port is bound to: • A message protocol • e.g. SOAP • A port type • via the binding element • Port types specify: • Operation name • Input message type • Output message type • Types defined using XML Schemas Service Port (http://host/) Port Binding (e.g. SOAP) Binding Abstract Definition Port Type (in) Message Operation(s) (out) Message

  20. WSDL Documents (3) <message name="getBookRequest"> <part name="param" element="isbn"/> </message> <message name="getBookResponse"> <part name="resp" element="book"/> </message> <portType name="bookPortType"> <operation name="getBook"> <input message="getBookRequest"/> <output message="getBookResponse"/> </operation> </portType> point to xml in the types section Abstract Definition of Service

  21. WSDL Documents (4) <binding type="bookPortType" name="bookBind"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name=“getBook”> <soap:operationsoapAction="getBook"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="Hello_Service"> <port binding="bookBind" name="bookPort"> <soap:address location="http://localhost/bookservice"/> </port> </service>

  22. UDDI • Universal Description, Discovery and Integration (UDDI) Protocol • Originally Microsoft, IBM and Ariba • Registry for business services • Like a phone book for Web Services, although not actually restricted toWeb Services • XML-based • UDDI directory contains three components • White Pages - Businesses • Yellow Pages – Services provided by the businesses • Green Pages – How these services can be accessed

  23. UDDI – White Pages • Information about businesses • Name • Description of the business • Potentially multiple languages • Contact information • Address • Phone number • etc. • Other information • Dun & Bradstreet Universal Numbering System number (D.U.N.S)

  24. UDDI Data Model (1) <businessEntity businessKey=“ABCD”> <name>BBC</name> <description> ... </description> </businessEntity>

  25. UDDI – Yellow Pages • Classification of services/businesses based on standard taxonomies • Standard Industrial Classification (SIC) • 7361 = Services - Employment Agencies • 7385 = Services - Telephone Interconnect Systems • United Nations Standard Products and Services Code (UNSPSC) • 93141800 = Employment  • 83111603 = Cellular telephone services • A business may provide multiple services  

  26. UDDI Data Model (2) <businessService serviceKey=“EFGH” businessKey=“ABCD”> <name>News</name> </businessService> <businessEntity businessKey=“ABCD”> <name>BBC</name> <description> ... </description> </businessEntity> <businessService serviceKey=“IJKL” businessKey=“ABCD”> <name>Weather</name> </businessService>

  27. UDDI – Green Pages • Information and service bindings, i.e. how a service can be accessed • Web Service related • Web Service address • Parameters • Non-Web Service related • E-mail • FTP • CORBA • Telephone • A service may have multiple bindings (e.g. a Web Service binding, a telephone binding)

  28. UDDI Data Model (3) <bindingTemplate> bindingKey=“MNOP” serviceKey=“EFGH”> <description> Web Service </description> <accessPoint> http://bbc.co.uk/news </accessPoint> <tModelInstanceDetails> <tModelInstanceInfo tModelKey=”QRST”/> </tModelInstanceDetails> </bindingTemplate> <businessEntity businessKey=“ABCD”> <name>BBC</name> <description> ... </description> </businessEntity> <businessService serviceKey=“EFGH” businessKey=“ABCD”> <name>News</name> </businessService> <bindingTemplate> bindingKey=“IJKL” serviceKey=“EFGH”> <description> Web Page </description> <accessPoint> http://news.bbc.co.uk </accessPoint> </bindingTemplate>

  29. UDDI - tModels • No explicit link between UDDI and WSDL • Binding template contains access point (i.e. where to contact the service) • But no information on how to interface with the access point (such as expected data types) • tModel (Technical Model) associates an interface description with a binding • e.g. WSDL • Multiple bindings may refer to the same interface (tModel) • e.g. The airline industry may define a standard ticket booking interface, multiple airlines may implement this interface

  30. UDDI Data Model (4) <businessEntity businessKey=“ABCD”> <name>BBC</name> <description> ... </description> </businessEntity> <bindingTemplate> bindingKey=“MNOP” serviceKey=“EFGH”> <description> Web Service </description> <accessPoint> http://bbc.co.uk/news </accessPoint> <tModelInstanceDetails> <tModelInstanceInfo tModelKey=”QRST”/> </tModelInstanceDetails> </businessTemplate> <businessService serviceKey=“EFGH” businessKey=“ABCD”> <name>News</name> </businessService> <tModel tModelKey=”QRST”> <overviewDoc> <overviewURL> http://bbc.co.uk/news?wsdl </overviewURL> </overviewDoc> </tModel>

  31. UDDI Query <find_business> <findQualifiers> <findQualifier> uddi:uddi.org:findQualifier:exactMatch </findQualifier> </findQualifiers> <name> BBC </name> </find_business> • Also find_service, find_binding, find_tModel • NOTE: This search is lexical

  32. Putting It All Together <businessEntity> <name>Book Club</name> <businessService> <name>Book Service</name> <bindingTemplate> <description>Web Service</description> <tModelInstanceDetails> <tModelInstanceInfo tModelKey=”QRST”/> </tModelInstanceDetails> </bindingTemplate> <tModel tModelKey=”QRST”> <overviewDoc> <overviewURL> http://cs.cf.ac.uk/bookservice?wsdl </overviewURL> </overviewDoc> </tModel> </businessService> </businessEntity> Service Registry <find_service> <findQualifiers> <findQualifier> exactMatch </findQualifier> </findQualifiers> <name> Book Service </name> </find_service> Find (UDDI) Publish (UDDI) Describe (WSDL) Service Consumer Service Provider Bind (SOAP) http://cs.cf.ac.uk/bookservice

  33. Putting It All Together <message name="getBookRequest"> <part name="param“ element="isbn"/> </message> <message name="getBookResponse"> <part name="resp" element="book"/> </message> <portType name="bookPortType"> <operation name="getBook"> <input message="getBookRequest"/> <output message="getBookResponse"/> </operation> </portType> <binding type="bookPortType" name="bookBind"> <soap:binding style="document" transport=http://schemas.xmlsoap.org/soap/http <operation> <soap:operation soapAction="getBook"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> </operation> </binding> <service name="Hello_Service"> <port binding="bookBind" name="bookPort"> <soap:address location="http://cs.cf.ac.uk/bookservice"/> </port> </service> Service Registry Find (UDDI) Publish (UDDI) Describe (WSDL) Service Consumer Service Provider Bind (SOAP) http://cs.cf.ac.uk/bookservice

  34. Putting It All Together Service Registry Find (UDDI) Publish (UDDI) Describe (WSDL) Service Consumer Service Provider <soap:Envelope <soap:Body> <getBookResponse> <book> <title>Harry Potter</title> <author>J.K. Rowling</author> <date>2005-10-05</date> </book> </getBookResponse> </soap:Body> </soap:Envelope> <soap:Envelope <soap:Body> <getBookRequest> <isbn>0004702670</isbn> </getBookRequest> </soap:Body> </soap:Envelope> Bind (SOAP) http://cs.cf.ac.uk/bookservice

  35. Discussion • What have we seen here? • A lot of XML! • A lot of XML that is not really used in practice. • What about Service Orientation? How do the technologies support his? • SOAP as a simple, transport/transfer independent envelope is useful. • Applications can put everything they need in it to make messages self describing • Supports transactions/security/adressing etc.

  36. And What About WSDL? • The abstractions defined by WSDL are Object Oriented and encourage RPC style interactions. • Operations • = methods • Input type/Output types • = method parameters • Ports - collections of related operations • = a Class/Interface • PortBinding - Instance of the Port • = Object • This is not very service oriented! It often results in RPC interactions simply wrapped in complex XML.

  37. And UDDI? • The idea of UDDI is good • But it’s very complicated • Wants to cover everything • But searching is limited to lexical queries • It never really took off • The two main public UDDI repositories run by MS and IBM have shut down • Why? • Perhaps because of complexity • Perhaps because companies do not want to share their commodities in this way • They want more control over how their services are published and accessed. • Hence UDDI still works, but mainly behind the corporate firewall - NOT on an internat scale

  38. Conclusion • XML • Basis for all Web Service protocols • Simple, plain text, platform independent, widely used • SOAP • Simple protocol for exchanging XML messages • Extensible via header • WSDL • Language for defining web services • Operations • Inputs/Outputs • Object Oriented in spirit • UDDI • Registry for business services • Not tied to Web Services • Complex data structures • Only supports lexical matching without extensions

More Related