T Network Application Frameworks and XML Web Services and WSDL Sasu Tarkoma Based on slides by Pekka Nikander
Contents n Short review of XML & related specs n Web Services u Driving forces u Architecture & protocol stack n WSDL 1.1 u WSDL document elements u Mapping SOAP to WSDL n WSDL 2.0 n Implementations n Summary
XML n XML (eXtensible Markup Language) is a framework for defining markup languages n Standardized by W3C n Idea: to separate syntax from semantics, custom markup, internationalization, platform independence n XML Document: prolog, elements, attributes, entity references, comments n Validated using DTD or schema n Two things: well-formedness and validity
Related standards n Namespaces u Modular document definition, multiple inheritance, collision avoidance n XPath / XQuery u Navigation and query of parts of the document n XML linking language (Xlink) u Associations between multiple resources u Rules for traversal n XML Schema u definition of document structure and custom data types n XSLT u Extensible Stylesheet Language Transformation u Transformation of documents
Namespaces n Many documents can have identical elements that denote different things u Namespaces are the XML way to classify elements u A qualified name is a name subject to namespace interpretation n W3C Recommendation n In general, a namespace is just a tag u An arbitrary string u Defined to be a URI u Case-sensitive n A common practice to store a schema / WSDL into the place referenced by the URI u Semantics depends on the specific platform u Some XML validators use these
Example namespace <!-- the "edi" prefix is bound to for the "x" element and contents --> <!-- the 'taxClass' attribute's namespace is --> Baby food
About Schemas n XML language for describing and constraining the content of XML documents n A W3C Recommendation n Used to specify u The allowed structure of an XML document u The allowed data types contained in XML documents n XML Schema documents are XML documents n Schema document: schema element and element, attribute, and type definitions + annotations
Driving forces I n Universal data access / representation u Independent of OS, programming language, network protocol, … n Move from human-centric to application- centric web u Applications converse with each other and use machine-related information published on the web u Application-areas: package tracking, card verification, shopping bots, single sign-on, calendar, ,... u Presentation layer for the Internet?
Driving forces II n Making Web a programming interface u We have had servlets, CGI, CORBA for years u Idea is to standardise languages and protocols to have better integration n Make service composition possible u Faster project throughput u Better utilization of global resources u Cope with heterogeneity n Deferred binding u Discovery / broker, interpret, compose, execute u Many levels of deference
A Basic Web Service Computer A Language: C++ OS: W2000 Computer A Language: C++ OS: W2000 Computer B Language: Java OS: Linux Computer B Language: Java OS: Linux XML Independent of language, OS, network protocols
Additional properties n A web service should be self-describing u Interface is published with the implementation u Minimum interface is human readable description u The interface can also be written in a common XML grammar (WSDL) n A web-service should be discoverable u The web service is published u It has a life cycle u Interested parties can find it n Not mandatory but desirable properties
Standardization n W3C Web Services Activity u XML Protocol Working Group F SOAP u Web Services Addressing Working Group u Web Services Choreography Working Group u Web Services Description Working Group F WSDL n OASIS u E-business standards u UDDI (Universal Description, Discovery and Integration) n WS-I (Web Service Interoperability Org.) u Binding profiles,..
Web Service Architecture n The three major roles in web services u Service provider F Provider of the WS u Service Requestor F Any consumer / client u Service Registry F logically centralized directory of services n A protocol stack is needed to support these roles
XML Messaging n Several alternatives for XML messaging u XML Remote Procedure calls (XML-RPC) u SOAP u Regular XML transported over HTTP XML-RPCSOAP HTTP POST/GET
SOAP Version 1.2 n The definition of the XML-based information for exchanging structured and typed information between peers n A SOAP message is formally specified as an XML Infoset n Infosets can have different on-the-wire representations, one common example of which is as an XML 1.0 document. n A stateless, one-way message exchange paradigm n Applications can create more complex interaction patterns u request/response, request/multiple responses
Web Services Protocol Stack n Message Exchange u Responsible for transporting messages u HTTP, BEEP n XML Messaging u Responsible for encoding messages in common XML format u XML-RPC, SOAP n Service Description u Responsible for describing an interface to a specific web service u WSDL n Service discovery u Responsible for service discovery and search u UDDI
WS Protocol Stack Transport: HTTP, FTP, BEEP, SMTP, JMS XML Messaging: SOAP, XML-RPC, XML Description: WSDL Discovery: UDDI
Main components today n XML data representation u XML Schema Definitions (xsd) for types u XML Namespaces for unambiguity n SOAP u Basic transport (XML messaging) u Sync / async communication and RPC n WSDL u Description of (SOAP) services n UDDI u Service registry
Example WS layering Transport: HTTP(S), SMTP, JMS,.. XML processor SOAP processor Serialization / deserialization (java to XML mapping) Service container J2EE integration Management services:Admin, UDDI, depl., auditing
How it could work n 1. A standard body creates a WSDL interface definition n 2. A service programmer implements a service according to the WSDL definition n 3. A client programmer implements a client according to the WSDL definition n 4. A service provider deploys the service and publishes a WSDL implementation definition, and registers it into UDDI n 5. A client program pulls WSDL from UDDI, checks conformance, and uses SOAP for access
2. Creating server application n Pull WSDL definition from somewhere (UDDI) u Only use high-level WSDL, no bindings yet n Generate platform specific skeleton code using automated tools n Write the actual program code
3. Creating client application n Pull WSDL definition from somewhere (UDDI) u Use only high-level WSDL, no bindings yet n Generate platform specific stub code using automated tools n Write the actual program code
4. Deploying the service UDDI WSDL document WSDL document WSDL portType WSDL portType WSDL binding WSDL binding WS service SOAP proc. Transport
5. Using a service UDDI WSDL portType WSDL portType WSDL binding WSDL binding WS service SOAP proc. Transport WSDL document WSDL document
About invocation mechanisms n WS does not define an invocation mechanism n Alternatives u Microsoft.NET framework u Java-based framework F JAVA API for WSDL (JWSDL) F JAX-RPC F Java API for XML registries (JAXR) F Apache Axis F...
What is WSDL? n WSDL: Web Service Description Language n An XML language used to describe and locate web services u location of web service u methods that are available u data type information and XML messages n Commonly used to describe SOAP-based services n W3C standard (work in progress) u Initial input: WSDL 1.1 as W3C Note u Current version 2.0 (Recommendation) u Some differences between 1.1 and 2.0 n WSDL 1.1 in WS-I Basic Profile 1.0 and 1.1.
WSDL Document Elements (v.1.1.) n - data type definitions n - Abstract definition of the data being transmitted n - A set of abstract operations n - Concrete protocol and data format specifications for the operations and messages defined by a particular portType. Endpoint type. n - An address for binding. Endpoint instance. n - A set of ports.
WSDL Overview : ROOT WSDL element : The data types that are used : What messages are transmitted? : The supported operations : The binding to concrete protocols : Reference to actual location
A WSDL Document n A WSDL document contains two parts n Abstract part u Interfaces, types, messages n Concrete part u Binding to conrete protocol and encoding n May be published separately u Interfaces agreed between many companies u Each company published their own implementation in UDDI and import the abstract interface.
30 of 20 Mapping SOAP to WSDL
Message Styles n The WSDL 1.1 specification defines two SOAP message styles n Determined in binding n Document u contains one or more child elements called parts u There are no SOAP formatting rules for what the contains u preferred, loose coupling, easy validation n RPC u contains an element with the name of the method or remote procedure being invoked u This element in turn contains an element for each parameter of the procedure u less popular today, tighter coupling
The main structure (v.1.1) XML Schema types.. a set of operations Communication protocols A list of binding and ports
Types n define data types used in message declaration n For platform neutrality, WSDL uses XML Schema syntax to define data u XML Schema must be supported by any vendor of WSDL conformant products u Other kinds of type definitions also possible F Possible interoperability issues u If the service uses only XML Schema built-in simple types, such as strings and integers, the types element is not required
WSDL Messages n The element defines the data elements of an operation u the name of the message u contains zero or more message part elements n The parts can be compared to the parameters of a function call in a traditional programming language n All parts are typed by an XML Schema type n V.2.0 changes: message element is not used, replaced by patterns
WSDL Ports n The element is the most important WSDL element n The operations that can be performed, the messages that are involved n A defines the connection point to a web service, an instance of n It can be compared to a function library (or a module, or a class) in a programming language
Operation Types (v.1.1) n One-Way: The operation can receive a message but will not return a response n Request-Response: The operation can receive a request and will return a response n Solicit-Response: The endpoint sends an output message and then receives an input message. n Notification: The operation can send a message but will not wait for a response n v.2.0 changes: abstract message patterns
Example
One way and Notification Example
Putting it together Source:
WSDL 2.0 n 3 specifications n Part 1: Core u Abstract interfaces, independent of protocol and encoding n Part 2: Message Exchange Patterns u Predefined types of interactions n Part 3: Bindings u SOAP and HTTP/MIME binding n Lot’s of changes from 1.1
Changes from 1.1 to 2.0 n Adding further semantics to the description language. n Removal of message constructs. These are specified using the XML schema type system in the types element. n No support for operator overloading. n PortTypes renamed to interfaces. Support for interface inheritance is achieved by using the extends attribute in the interface element. n Ports renamed to endpoints. n Abstracted message patterns
WSDL 2.0 Conceptual Model Source:
Message Exchange Patterns MEP in-only robust-in-only In-out out-only robust-only-out out-in out-optional-in Description Single input message Output followed by an opt. Input Input message + output message Single output message Output followed by input msg Single input message Fault No Trigger Replace No Trigger Replace Trigger in-optional-outInput followed by an opt. OutputTrigger
Implementations n Microsoft.NET u SOAP 1.1, WSDL 1.1 n Java API for XML-based RPC (JAX-RPC) u SOAP 1.1, WSDL 1.1 n Java API for XML Registries (JAXR) n Apache Axis u Tools for automatically creating WSDL to/from Java u SOAP 1.1 and 1.2, WSDL 1.1, JAX-RPC 1.0 u Axis2 supports WSDL 2.0 component model n IBM Websphere, BEA Web Logic, SAP NetWeaver, …
Uses of WSDL documents n Description of service interfaces u Compile-time F Developer uses WSDL before service deployment u Run-time F Client downloads WSDL description and uses the info it provides to execute the service n As a side-effect u Developers can use WSDL to speed up the development of code u WSDL Java code u Java interfaces WSDL
Summary n Deferred binding, using Web, composition n Some details and conventions still unclear u Possible interoperability issues n Parts hard to understand u Namespaces u Schemas u Differences between versions u Document vs. RPC SOAP style F Also literal vs. encoded F More about this next week