540 likes | 721 Views
Implementing Soap & Web Services. By Jozef Drans eld (ST-MA) & Derek Mathieson (AS-IDS). Presentation Roadmap. Past. Present. Future. Why Web Services?.
E N D
Implementing Soap & Web Services By Jozef Dranseld (ST-MA) & Derek Mathieson (AS-IDS)
Presentation Roadmap Past Present Future
Why Web Services? “The Web can grow significantly in power and scope if it is extended to support communication between applications, from one program to another.” - From the W3C XML Protocol Working Group Charter
The Hype • New paradigm? • Reason to move platforms? • Replacement for EDI?
Gartner’s ‘Hype’ Curve Key: Time to “plateau” Visibility Less than two years Two to five years Grid Computing Biometrics Five to 10 years Beyond 10 years Natural-language search Identity services Virtualprivatenetworks Personal digitalassistant phones WirelessLANs/802.11 Nanocomputing Text-to-speech E-tags Speech recognition incall centers Peer-to-peercomputing Voice over IP Personalfuel cells Bluetooth WAP/WirelessWeb Public key infrastructure Locationsensing Speech recognition on desktops Peak of inflated expectations Technologytrigger Trough of disillusionment Slope of enlightenment Plateau ofproductivity Maturity Web Services Source: Gartner Group June 2002
What are Web Services? • Identified by a URI • Interfaces defined using XML • Can be discovered by other systems • Interact using XML based messages conveyed by Internet protocols Source: Web Services Glossary
What are Web Services? XML Application 1 Application 2
CERN IDS Is this New?
Is this Different? • Platform neutral • Open Standards • Interoperable • Based on ubiquitous software • XML Parsers • HTTP Server
Transport • HTTP POST is most common • But other protocols such as • FTP • SMTP • HTTP GET • And other exotic ones: • Jabber • BEEP
Packaging – Soap • Used to mean • Simple • Object • Access • Protocol • From SOAP 1.2 > SOAP is no longer an acronym • Two Types of SOAP
Packaging – Soap • SOAP RPC: • encode and bind data structures into xml. • encode an RPC call
Serialization class PurchaseOrder { String item = “socks”; int amount = 1; } <PurchaseOrder> <item type=“xsd:string”> socks </item> <amount type=“xsd:int”> 1 </amount> </PurchaseOrder> Serializer
Packaging - SOAP • SOAP ‘document style’ • packages xml in an envelope
Packaging – Soap HTTP Post SOAP Envelope SOAP Head SOAP Body
Packaging – Soap <s:Envelope xmlns:s=“URN”> <s:header> <s:transaction xmlns:m=“soap-transaction”> <m:transactionID> 1234 </m:transactionID > </s:transaction> </s:header>
Packaging – Soap <s:Body> <n:purchaseOrder xmlns:n=“URN”> <n:item>socks</n:item> <n:amount>1</n:amount> </n:purchaseOrder> </s:Body> </s:Envelope>
Description – WSDL • Web Services Description Language • “Web Services Description Language (WSDL) provides a model and an XML format for describing Web services.” w3c.org
Description – WSDL Types Messages Operations Encoding Endpoint
Types <types> <schema targetNamespace=" IMessageService.xsd" xmlns="…/XMLSchema" xmlns:SOAPENC="…/soap/encoding/"/> </types>
Messages <message name=“purchase"> <part name=“item" type="xsd:string"/> <part name=“quantity" type="xsd:integer"/> </message>
Operations <operation name="setMessage"> <input name="setMessageRequest“ message="tns:setMessageRequest"/> <output name="setMessageResponse“ message="tns:setMessageResponse"/> </operation>
Encoding <soap:operation soapAction="" style="rpc"/> <input name="setMessage0Request"> <soap:body use="encoded" namespace="MessageService" encodingStyle="…/soap/encoding/"/> </input>
Endpoint <service name="MessageService"> <port name="MessageServicePort" binding="tns:MessageServiceBinding"> <soap:address location="http://localhost:8080/setMessage/"/> </port> </service>
Discovery – UDDI • Universal Description, Discovery and Integration • A UDDI Server acts as a registry for Web Services and makes them searchable.
Discovery – UDDI • Demonstration: https://uddi.ibm.com/ubr/registry.html
Discovery – UDDI UDDI Registry Inquiry Publish
Discovery – UDDI UDDI Registry Inquiry Publish
Examples • Java • Client • Server • VBScript • Client –high level API • Client – low level API • .NET • C# Client • C# Server
Design Recommendations • Create a local class • Create a method with the same name
Examples (Java Client) URL endpointURL = new URL(endpoint); Call call = new Call(); call.setSOAPTransport(m_httpconn); call.setTargetObjectURI("MessageService"); call.setMethodName("setMessage"); call.setEncodingStyleURI(Constants.NS_URI_SOAP_ENC);
Examples (Java Client) Vector params = new Vector(); params.addElement( new Parameter("name", java.lang.String.class, name, null)); params.addElement( new Parameter("colour", java.lang.String.class, colour, null)); call.setParams(params); Response response = call.invoke(endpointURL, "");
Examples (Java Client) • Demonstration
Examples (Java Server) • A Web service Server is simple: • New class with method • Then: • Register class with soap router • Or • Place the source code in a jws file
Examples (VB Client) • High Level API (After adding a Web Service Reference) Dim serv As clsws_MessageService Set serv = New clsws_MessageService serv.wsm_setMessage txtName.Text, txtColor.Text
Examples (VB Client) Serializer.Init Connector.InputStream Serializer.startEnvelope , ENC Serializer.SoapNamespace "xsi", XSI Serializer.SoapNamespace "SOAP-ENC", ENC Serializer.SoapNamespace "xsd", XSD Serializer.startBody Serializer.startElement Method, URI, , "method" Serializer.startElement “parameter“ Serializer.SoapAttribute "type", , "xsd:string", "xsi" Serializer.writeString username Serializer.endElement Serializer.endBody Serializer.endEnvelope Connector.EndMessage
Examples (VB Client) Name Colour
Examples (C# Client) • Add a Web References to a project Localhost.MessageService serv = new Localhost.MessageService(); serv.setMessage(x, y);
Examples (C# Client) • Demonstration
Examples (C# Server) public class Demo : System.Web.Services.WebService { public Demo() { InitializeComponent(); } [Web Method] public string HelloWorld() { return “Hello World”; } }
CERN IDS Web ServicesFuture
Security Bookstore Client Application
Security Bank Client Application Bookstore Warehouse
WS Security Standardisation • W3C - http://www.w3c.org • XML Encryption • XML Digital Signatures • WS-I - http://www.ws-i.org • WS Security Profile • OASIS - http://www.oasis-open.org • WS-Security • SAML - Security Assertion Markup Language • XACML - Extensible Access Control Markup Language • XKMS - XML Key Management Specification
Security – Fire Walls Bookstore Client Application Fire Wall
WS-I • Web Services Interoperability Organization http://www.ws-i.org R1017 A RECEIVER MUST NOT mandate the use of the xsi:type attribute in messages except as required in order to indicate a derived type WS-I Basic Profile Version 1.0
Missing Pieces • Security • Single Sign-on, credentials • Transactions • Quality of service • Timeliness guarantees • Asynchronous operations • Co-ordination, workflow