1 / 68

Web Services Overview

Web Services Overview. Bill Edison edisonwj@verizon.net. Agenda. History XML Technologies SOAP Web Services SOA. Some History. Mid 1970’s - Standard Generalized Markup Language (SGML) introduced by Charles Goldfarb Provides an international standard for data representation

lindsayj
Download Presentation

Web Services Overview

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. Web Services Overview Bill Edison edisonwj@verizon.net

  2. Agenda • History • XML Technologies • SOAP • Web Services • SOA

  3. Some History • Mid 1970’s - Standard Generalized Markup Language (SGML) introduced by Charles Goldfarb • Provides an international standard for data representation • Early 1980’s – Emergence of the Internet leveraging the Internet Protocol suite, including TCP/IP • http://en.wikipedia.org/wiki/Internet • http://en.wikipedia.org/wiki/Internet_protocol_suite • http://www.ietf.org/ • Mid 1980’s – World Wide Web and World Wide Web Consortium (W3C) conceived and founded by Tim Berners-Lee • Created a formal specification for Hypertext Markup Language (HTML) based on SGML • Provides a compact and simple syntax to describe the format and layout of text—standard for Web publishing • First Web Browser, Silversmith, by John Bottoms in 1987 based on SGML • 1990’s - W3C created Hypertext Transfer Protocol (HTTP) a method used to transfer or convey information on the World Wide Web. Its original purpose was to provide a way to publish and retrieve HTML pages. • Late 1990’s – W3C creates Extensible Markup Language (XML) (again based on SGML), a meta-language to describe the nature of information • Late 1990’s – Simple Object Access Protocol (SOAP) developed with Microsoft backing by Dave Winer, Don Box, Bob Atkinson, and Mohsen Al-Ghosein to provide a basic Web messaging framework--now a W3C maintained specification [Wikipedia]

  4. Programming World Document World Transport / Protocol World Data-centric development Code-centric development GML FORTRAN COBOL SGML PL/1 IMS Algol TCP/IP Basic HTML CICS XML Pascal HTTP C RDBMS XHTML Ada Visual Basic Object World OO-COBOL OO-Ada C++ Java C# Component World CORBA EJB COM DCOM SOAP Evolution to SOA [Coyle]

  5. Foundation Technologies • TCP/IP • HTTP • HTML • Browsers • XML • SOAP  SOA • Web Services

  6. Extensible Markup Language (XML)Basics

  7. XML Overview • A language for creating other languages • Tags and content, with tags that describe the meaning of content • Start tags and end tags delimit elements containing data • Example of customer information <Customer> <Name> John von Neumann</Name> <PhoneNum>914.631.7722</PhoneNum> <FaxNum>914.6331.7723></FaxNum> <E-Mail>Johnny@cd.com</E-Mail> </Customer> • Data can be specified with attributes within an element <Customer name=“John von Neumannn” phone=“914.631.7722” fax=“914.631.7723” email=Johnny@cd.com/> [Coyle]

  8. XML Traits • XML allows data to be stored in either elements or attributes • Elements and attributes can be named to give the data meaning • Start tags and end tags define elements that are the basis for XML tree-structured representations of documents • Elements can contain text data and/or other elements [Coyle]

  9. XML Advantages • XML files are textual and human readable versus binary formats • XML is widely supported by industry tools for developers, Web browsers, databases, application environments, and operating systems • http://www.altova.com/products/xmlspy/xml_editor.html • Major relational databases have the native capability to store, read, and generate XML data • XML support technologies are available for Web page display and report generation [Coyle]

  10. XML Decoupling • No presentation format is assumed. Unlike HTML, basic XML makes no rendering assumptions. Supporting technologies such as style sheets address this. • No built in data typing is provided. DTDs and XML Schema provide support for defining the structure and data types associated with an XML document. • No transport is assumed. XML makes no assumption about how XML is moved across the Internet. • Thus, XML decouples from: • Presentation • Data formats • Transport protocols [Coyle]

  11. XML Specifications DTD describes XML Documents supersedes presents XSL describes searches XSD searches transforms XPath XQuery XSLT uses uses uses uses [Erl]

  12. XML Technologies • Structure and Data Types • Define how specific XML documents should be structured • Document Type Definition (DTD) • XML Schema Definition Language (XSD) • DTDs flow from the SGML world • Specify what elements and attributes are valid for a particular instance • Limited ability to specify data types • XML Schema is a W3C initiative • More precision that DTDs • XML Presentation Technologies • eXtensible Stylesheet Language (XSL) and XSL Formatting Objects support XML for various output media • XHTML, a modular XML-conformant replacement for HTML • Cascading Style Sheets (CSS) for controlling display properties of HTML or XML in Web browsers • XForms for collecting data from Web forms and returning XML • VoiceXML for delivering content to voice-enabled devices • Wireless Markup Language for delivery to wireless devices enabled for Wireless Application protocol (WAP) [Coyle]

  13. XML Schemas • Two schema definition mechanisms • DTD • XML Schemas • Both define the structure of XML documents • Used to validate the form of specific XML formatted instances • DTD focuses on structure, element and attribute definition--data typing is limited to text (Based on SGML syntax) • XML Schema is a newer W3C standard providing for structure and detailed data type specification, e.g. times, Boolean, binary, float, decimal, integer, string, token, etc. [Coyle]

  14. <?xml version=1.0”?> <!DOCTYPE book SYSTEM “book.dtd”> <book category=“Fiction”> <title>Joy of Integration</title> <author>Joe Smith</author> </book> “XML declaration” is first markup line and specifies the version being used Link to a DTD The part of a document within which data is represented is the “document instance” with a hierarchical arrangement of elements and attributes, here book and category Child element of book, title and author End of the book element Another XML Example

  15. <!DOCTYPE book [ <! ELEMENT book (title, author) > <!ATTLIST book CATEGORY (Fiction|Non-Fiction)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> ]> Document type declaration of root element--corresponds to link in XML document Characteristics of each element are specified Parent-child relationships Attributes Validation rules Data types Parsed Character Data Closing DTD Example

  16. Complete Document Specification • DTD <!DOCTYPE book [ <! ELEMENT book (title, author) > <!ATTLIST book CATEGORY (Fiction|Non-Fiction)> <!ELEMENT title (#PCDATA)> <!ELEMENT author (#PCDATA)> ]> • Instance of the above DTD <?xml version=1.0”?> <!DOCTYPE book SYSTEM “book.dtd”> <book category=“Fiction”> <title>Joy of Integration</title> <author>Joe Smith</author> </book>

  17. Namespaces, Element, Attributes • Attributes cannot be further subdivided into sub-elements, but elements can always be subdivided • Use elements if data may need to be subdivided • Programs processing XML may have to call special modules to handle attributes introducing complexity • Attributes are more compact and readable • Element and attribute names are distinguished from the same names in different contexts by prefixing a Uniform Resource Indicator (URI) as namespace name. Tagging can be implicit or explicit using abbreviations Namespace: http://www.zwiftbooks.com <book> <title> Deliverance </title> </book>  <http://www.zwiftbooks.com:title> Namespace: http://www.music.com <album> <title> Deliverance </title> </album>  <http://www.music.com:title> [Coyle]

  18. XSD Example <?xml version=“1.0”?> <xsd:schema xmlns:xsd=“http://www.w3.org/2001/XMLSchema”> <xsd:element name = “book”> <xsd:complexType> <xsd:sequence> <xsd:element name= “title” type=“xsd:string”/> <xsd:element name=“author” type=“xsd:string”/> </xsd:sequence> <xsd:attribute name=“category”> <xsd:simpleType> <xsd:restriction base=“xsd:string”> <xsd:enumeration value=“Fiction”/> <xsd:enumeration value=Non-Fiction”/> </xsd:restriction> </xsd:simpleType> </xsd:attribute> </xsd:complexType> </xsd:element> </xsd:schema>

  19. More XML Technologies DOM SAX RDF DTD XML Schema Semantic Web Program manipulation technologies Structure & data typing CSS XSL XSL-FO XHTML XForms VoiceXML XSLT XPath XLink XQuery XML & Namespaces Core XML manipulation technologies Presentation technologies InfoSet [Coyle]

  20. More XML Technologies • Program Manipulation technologies • Document Object Model (DOM) provides a platform and language neutral interface defined by W3C that allows programs and scripts to access and update the content, structure, and style of documents • Simple API for XML (SAX) provides a collaboratively developed standard interface for XML parsing • Can be manipulated using various interfaces • Tree-based • Event-based • Class-based • XML manipulation technologies • Extract and transform XML in different ways • Key for server-based XML B2B processing • XSL Transformation (XSLT) transforms XML from one format to another • Transform a DOM tree to an XML document • XPath supports navigation through an XML tree structure to find particular elements or subtrees • XLink supports creating and describing links between resources, enabling links that go beyond the simple uni-directional links of the Web • XQuery supports querying and extracting from XML repositories • Other • Resource Description Framework (RDF) provides a foundation for metadata processing, directed to automated processing of Web resources • InfoSet is an W3C initiative to provide a consistent set of definitions for use in other specifications that need to reference information in XML documents. [Coyle]

  21. Java API’s for XML • Document Oriented • Java API for XML Processing (JAXP) – processes XML documents using various parsers – leverages • SAX (Simple API for XML Parsing) • API for event-based parser • Reads the XML from beginning to end and notifies application for each recognized syntax construction • DOM (Document Object Model • Interfaces for building an object representation, a tree, of a parsed XML document • Can manipulate tree with insert and remove methods • Random access to particular pieces of data • Java Architecture for XML Binding (MAXB) – maps XML elements to classes in the Java programming language • Procedure Oriented • Java API for XML Messaging (JAXM) – sends SOAP messages over the Internet in a standard way • Java API for XML Registries (JAXR) – provides a standard way to access business registries and share information • Java API for XML based RPC (JAX-RPC) – sends SOAP method calls to remote parties over the Internet and receives the results [Sun]

  22. SAX API Example SAXParserFactory factory = SAXParserFactory.newInstance(); [Create SAX parser factory] SAXParser saxParser = factory.newSAXParser(); [Create SAX parser object] saxParser.parse("priceList.xml", handler); [Parse XML file] public void startElement(..., String elementName, ...){ [Custom startElement method] if(elementName.equals("name")){ inName = true; } else if(elementName.equals("price") && inMochaJava ){ inPrice = true; inName = false; } } public void characters(char [] buf, int offset, int len) { [Custom characters method] String s = new String(buf, offset, len); if (inName && s.equals("Mocha Java")) { inMochaJava = true; inName = false; } else if (inPrice) { System.out.println("The price of Mocha Java is: " + s); inMochaJava = false; inPrice = false; } } } [Sun]

  23. SAX Parsing Example <priceList> [parser calls startElement] <coffee> [parser calls startElement] <name>MochaJava</name> [parser calls startElement, characters, and endElement] <price>11.95</price> [parser calls startElement, characters, and endElement] </coffee> [parser calls endElement] ... </priceList> • next invocation of startElement -- inName is true • next invocation of characters -- inMochaJava is true • next invocation of startElement -- inPrice is true • next invocation of characters -- prints price [Sun]

  24. XML To Be Transformed • <?xml version=1.0”?> • <xsl:transform • xmlns:xsl=http://www.w3.org/1999/XSL/Transform • version=“1.0”> • <inventory> • <book category=“Fiction”> • <title>Joy of Integration</title> • <author>Joe Smith</author> • </book> • <book category=“Non-Fiction”> • <title>Integration for Dummies</title> • <author>John Doe</author> • </book> • </inventory> [Erl]

  25. XSLT and XPATH Transformation • <?xml version=1.0”?> • <xsl:transform • xmlns:xsl=http://www.w3.org/1999/XSL/Transform • version=“1.0”> • <xsl:template match=“/”> • <xsl:apply-templates /> • </xsl:template> • <xsl:template match=“inventory”/ • <table border=“1”> • <xsl:for-each select=“book”> • <tr> • <td><xsl:value-of select=@category”/></td> • <td><xsl:value-of select=“title”/></td> • <td><xsl:value-of select=“author”/></td> • </tr> • </xsl:for-each> • </table> • </xsl:template> • </xsl:transform> [Erl]

  26. XML Revolutions • Data revolution – XML • Data is not tied to transport or language – travels using Web protocols • Data previously subordinated to code and transport • Data decoupled from constraints of code and transport • Architecture revolution • Loosely coupled systems centered around the Web and message-oriented middleware • Previously tightly coupled object systems • Java Remote Method Invocation (RMI) • Microsoft COM/Distributed Component Object (DCOM) • OMG Common Object Request Broker Architecture (CORBA) • Software revolution • Simplicity of design and power of combination and collaboration • Previously large systems built from detailed specifications • Now, assembled systems with capability emergence [Coyle]

  27. Moving Data on the Web • Option 1 – Electronic Data Interchange (EDI) • Defines a common data format • Uses proprietary transport network • Delivers data in agreed upon formats • Option 2 – CORBA, RMI, DCOM • Agrees to a transport protocol supported on multiple platforms • Uses an object request broker to handle inter-object communication • Delivers data as parameters of method calls • Option 3 – SOAP • Defines an XML envelope for data • Uses common internet protocols to deliver the SOAP envelop • When using HTTP for transport leverages XML data with attachments [Coyle]

  28. Simple Object Access Protocol(SOAP)

  29. SOAP • Simple – potentially not simple – many possible options • Object – not particularly related to object-oriented development – often procedural in nature • Access – ok – one out of four • Protocol – Not a replacement for HTTP or SMTP – it relies on those protocols to handle the data • http://www.w3.org/2000/xp/Group [Iverson]

  30. Internet Protocol Suite • Application Layer • DHCP, DNS, FTP, HTTP(S), IMAP4, IRC, NNTP, XMPP, MIME, POP3, SIP, SMTP, SNMP, SSH, TELNET, BGP, RPC, RTP, RTCP, TLS/SSL, SDP, SOAP, L2TP, PPTP • Transport Layer • TCP, UDP, DCCP, SCTP, GTP • Network Layer • IP(IPv4, IPv6), ARP, RARP, ICMP, RSVP, IGMP, IPSec • Data Link Layer • ATM, Ethernet , FDDI, Frame Relay, GRS, PPP • Physical Layer • Ethernet, ISDN, Modems, PLC, RS232, SONET/SDH, G.709, WiFi

  31. Web Data Transport HTML document or browser compatible type Data HTTP Header Browser Data FTP Header Client Server Any file GET file.html HTTP GET Web content returned Data passed to server POST HTTP Web content returned [Coyle]

  32. Power of Combination SOAP SOAP SOAP XML HTTP SOAP – Combination of HTTP and XML HTML HTTP Server Browser Web – Combination of HTML, HTTP and Browsers [Coyle]

  33. SOAP in Context • SOAP is an application layer protocol. • Corba Internet Inter-ORB Protocol (IIOP), Object Remote Procedure Call (ORPC) (basis for DCOM), and Java Remote Method Protocol (JRMP) are binary protocols, while SOAP is a text-based protocol that uses XML • Using XML for data encoding makes SOAP easier to debug and read. • Since SOAP is text based, it can move more easily across firewalls than IIOP, ORPC, or JRMP • HTTP based messages pass through port 80 on most firewalls • SOAP is based on XML which is standards driven, versus vendor driven. • SOAP messages define one-way data transmission; however messages can be combined to implement patterns such as request-response [Coyle]

  34. SOAP Tightly coupled network Based on a common transport protocol Corporate Network (CORBA, RMI, DCOM) SOAP Message Oriented Middleware SOAP SOAP SOAP Loosely coupled Web-based network using SOAP and protocols (HTTP, FTP, SMTP) SOAP XML [Coyle] HTTP FTP SMTP

  35. SOAP Parts • Encoding rules that control XML tags that define a SOAP message and a framework for message content • Rules for exchanging application-defined data types, including when to accept or discard data or return an exception to the sender • Conventions for representing remote procedure calls and responses [Coyle]

  36. SOAP Message Structure SOAP <Envelope> (Mandatory) • SOAP Envelope – Outermost element of a SOAP message that is the root of the XML document defining a SOAP message • SOAP Header – Optional element that provides a modular way of directing SOAP servers to do processing before passing the message on, e.g. add transaction or security information or perform stages of processing in a message path • SOAP Body – Contains the transported XML payload which may be data or a remote procedure call. SOAP <Header> (Optional) SOAP <Body> (Mandatory) [Coyle]

  37. XML Data HTTP Header SOAP Envelope SOAP Example Request Internet ZwiftBooks server configured to understand SOAP Client initiating SOAP request for best book delivery time Request HTTP Request Header POST/ZwiftBooks HTTP/1.1 Host: www.zwiftbooks.com Content-Type: text/xml Content-Length: 134 SOAP Action: “Some-URI” SOAP Content <Envelope> xmlns: “http:w3.org/2001/09/soap-envelope” encodingStyle=“http://www.w3.org/2001/09/soap-encoding”> <Body> <zwiftbooks: GetBestDeliveryTime <zwiftbooks:isbn>0-101-22892-3</zwiftbooks:isbn> <zwiftbooks:zipcode>75230</zwiftbooks:zipcode> </zwiftbooks:GetBestDeliveryTime> </Body> </Envelope> [Coyle]

  38. HTTP Header XML Data SOAP Envelope SOAP Example Response Internet ZwiftBooks server Client initiating SOAP request for best book delivery time Response HTTP Request Header HTTP/1.1 200 OK Content-Type: text/xml Content-Length: 122 SOAP Content <Envelope> xmlns: “http:w3.org/2001/09/soap-envelope” <Body> <zwiftbooks:GetBestDeliveryTimeResponse xmlns:zwiftbooks=www.zwiftbooks.com> <zwiftbooks:Time>8 hours</zwiftbooks:Time> </zwiftbooks:GetBestDeliveryTimeResponse> </Body> </Envelope> [Coyle]

  39. SOAP Message Paths • SOAP messages may be routed from server to server, supporting processing at intermediate nodes • Pipe and filter architecture • Layered architecture and multi-tier patterns • Intermediaries can be proxies, caches, store-and-forward nodes, and gateways • SOAP server rules • Identify the parts of the SOAP message intended for the server application • Check for actor attribute that is URI of the application or the URI http://schemas.xmlsoap.org/soap/actor/next which means the application must process the header • Verify that all parts of the header intended for the application and associated with a mustUnderstand=“true” attribute are supported, otherwise fault • Process the parts of header intended for the application • If not the ultimate destination, remove all header elements intended for it before forwarding the message [Coyle]

  40. Apache Axis SOAP Example 1 import org.apache.axis.client.Call; 2 import org.apache.axis.client.Service; 3 import javax.xml.namespace.QName; 4 5 public class TestClient { 6 public static void main(String [] args) { 7 try { 8 String endpoint = 9 "http://nagoya.apache.org:5049/axis/services/echo"; 10 11 Service service = new Service(); 12 Call call = (Call) service.createCall(); 13 14 call.setTargetEndpointAddress( new java.net.URL(endpoint) ); 15 call.setOperationName(new QName("http://soapinterop.org/", "echoString")); 16 17 String ret = (String) call.invoke( new Object[] { "Hello!" } ); 18 19 System.out.println("Sent 'Hello!', got '" + ret + "'"); 20 } catch (Exception e) { 21 System.err.println(e.toString()); 22 } 23 } 24 } [Apache Axis Project]

  41. Apache Axis SOAP Example • Lines 11 and 12 create new Service and Call objects-standard Java API for XML based RPC (JAX-RPC) objects that store metadata about the service to invoke • Line 14 sets up endpoint URL-the destination of the SOAP message • Line 15 defines the operation (method) name of the Web Service • Line 17 invokes the desired service passing a set of parameters—here just one string • Invoking the program yields the following % java samples.userguide.example1.TestClient Sent ‘Hello!’, got “Hello!’ % [Apache Axis Project, Sun]

  42. Apache Axis Example <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:xsd=http://www.w3.org/2001/XMLSchema xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <ns1:echoString xmlns:ns1="http://soapinterop.org/"> <arg0 xsi:type="xsd:string">Hello!</arg0> </ns1:echoString> </SOAP-ENV:Body> </SOAP-ENV:Envelope> http://ws.apache.org/axis/java/releases.html http://mirror.olnevhost.net/pub/apache/ws/axis/1_4 [Apache Axis Project]

  43. Web Services

  44. Web Services • A vague term that refers to distributed or virtual applications or processes that use the Internet to link activities or software components. A travel Web site that takes a reservation from a customer, and then sends a message to a hotel application, accessed via the Web, to determine if a room is available, books it, and tells the customer he or she has a reservation is an example of a Web Services Application. Business Process Trends http://www.bptrends.com/resources_glossary.cfm? letterFilter=W&displayMode=all [Iverson]

  45. XML Communication Corporate Network Firewall XML XML XML Repository Web Message Server Provider Client Web Services Option 1: Communicate directly using XML and Web protocols Option 3: Locate partners via Web services repository – communicate directly or via messaging middleware Option 2: Communicate via messaging middleware [Coyle]

  46. Web Services Again • Technology, process, and phenomenon • As technology, a set of protocols building on the SOAP, XML, and HTTP foundation • As process, an approach to software discovery and connection over the Web • As a phenomenon, an industry wide adoption of a decentralized, loosely coupled, synergistic approach [Coyle]

  47. Web Services Framework • Describe--Accessible descriptions of functionality and attributes so other applications can determine how to use it • Expose—Services register in a repository providing • Business information (White pages) holding basic service-provider information—name, address, telephone number, etc. • Service information (Yellow pages) listing groups of services by category • Binding information (Green pages) describing how to connect and use the services—URL’s, method names, argument types, etc. • Invoke—Remote application can invoke service • Respond—When service is invoked, results are returned to the requester • Manage/Govern – Provided structure and process control [Coyle]

  48. Repository Client Provider Web Services Framework Corporate Network XML and SOAP provide an open-ended data exchange mechanism for the Web Firewall XML/SOAP XML/SOAP XML/SOAP Firewall Web Services framework provides Protocols and processes for providers to register and clients to discover and use Web Services Web Services Corporate Network [Coyle]

  49. Web Services Architecture • Process and set of protocols for finding and connecting to software exposed as services over the Web • Service provider – provides an interface for software to carry out a specific set of tasks • Service requester – discovers and invokes software services to provide a business solution • Broker/Registry – manages and publishes the service

  50. Web Services Triad Green WSDL White <SOAP:Envelope> <Soap:Body> ...UDDI Inquiry... </SOAP:Body> </SOAP:Envelope> Yellow WSDL <SOAP:Envelope> <Soap:Body> ...UDDI Update... </SOAP:Body> </SOAP:Envelope> Repository/ Registry Uses UDDI to find appropriate Web Service UDDI UDDI XML/SOAP XML/SOAP XML/SOAP Client Provider Uses UDDI to register a Web Service with the repository • Universal Description, Discovery and Integration (UDDI) • Web Services Description Language (WSDL) [Coyle]

More Related