Implementing Soap Web Services

Document Sample
scope of work template
							CERN
IDS
     CERN – European Organization for Nuclear Research
  Administrative Support - Internet Development Services




Implementing Soap & Web Services

              By Jozef Drans eld (ST-MA)
                           &
               Derek Mathieson (AS-IDS)
  Presentation Roadmap


              Past
             Present
             Future


CERN
IDS
  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




CERN
IDS
  The Hype
   New paradigm?
   Reason to move platforms?
   Replacement for EDI?




CERN
IDS
      Gartner’s ‘Hype’ Curve
                                                                                          Key: Time to “plateau”
Visibility
                                                                                               Less than two years
                  Biometrics        Grid Computing
                                                                                               Two to five years
                                                                                               Five to 10 years
        Natural-language
                   search                  Web Services                                        Beyond 10 years

        Identity services
                                                                                                           Virtual
                                           Personal digital
                                                                                          Wireless         private
       Nanocomputing                       assistant phones                    Text-to-   LANs/802.11      networks
                                                                               speech
                E-tags
                                                                                     Speech recognition in
                            Peer-to-peer                                                        call centers
                                                                             Voice over IP
         Personal           computing
         fuel cells                                                        Bluetooth
                                   WAP/                               Public key infrastructure
                                   Wireless
                                   Web         Location
                                                              Speech recognition on desktops
                                               sensing
                           Peak of
        Technology         inflated              Trough of                Slope of           Plateau of
          trigger        expectations         disillusionment          enlightenment        productivity
                                                                                                               Maturity



 CERN                                                                               Source: Gartner Group June 2002
  IDS
  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
CERN
IDS
  What are Web Services?

  Application 1         Application 2


                  XML




CERN
IDS
       Is this New?

CERN
IDS
  A Brief History …




CERN
IDS
  Is this Different?
   Platform neutral
   Open Standards
       – Interoperable
      Based on ubiquitous software
       – XML Parsers
       – HTTP Server




CERN
IDS
  The Components




CERN
IDS
  Transport
   HTTP POST is most common
   But other protocols such as
       – FTP
       – SMTP
       – HTTP GET
      And other exotic ones:
       – Jabber
       – BEEP


CERN
IDS
  Packaging – Soap
      Used to mean
       – Simple
       – Object
       – Access
       – Protocol
   From SOAP 1.2 > SOAP is no longer an
    acronym
   Two Types of SOAP



CERN
IDS
  Packaging – Soap

      SOAP RPC:
       – encode and bind data structures into xml.
       – encode an RPC call




CERN
IDS
     Serialization


                                      <PurchaseOrder>
                                      <item type=“xsd:string”>
class PurchaseOrder {    Serializer             socks
String item = “socks”;                </item>
int amount = 1;                       <amount type=“xsd:int”>
}                                               1
                                      </amount>
                                      </PurchaseOrder>




CERN
    IDS
  Packaging - SOAP
      SOAP ‘document style’
       – packages xml in an envelope




CERN
IDS
  Packaging – Soap
         HTTP Post

            SOAP Envelope

             SOAP Head




             SOAP Body




CERN
IDS
  Packaging – Soap

  <s:Envelope xmlns:s=“URN”>
    <s:header>
       <s:transaction xmlns:m=“soap-
    transaction”>
                 <m:transactionID>
                 1234
                 </m:transactionID >
       </s:transaction>
    </s:header>


CERN
IDS
  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>




CERN
IDS
  Description – WSDL
   Web Services Description Language
   “Web Services Description Language
    (WSDL) provides a model and an
    XML format for describing Web
    services.” w3c.org




CERN
IDS
  Description – WSDL

               Types

             Messages

             Operations

              Encoding

              Endpoint
CERN
IDS
  Types

  <types>
  <schema targetNamespace=" IMessageService.xsd"
  xmlns="…/XMLSchema"
     xmlns:SOAPENC="…/soap/encoding/"/>
  </types>




CERN
IDS
  Messages

  <message name=“purchase">
        <part name=“item" type="xsd:string"/>
        <part name=“quantity" type="xsd:integer"/>
  </message>




CERN
IDS
  Operations


  <operation name="setMessage">
         <input name="setMessageRequest“
         message="tns:setMessageRequest"/>
         <output name="setMessageResponse“
         message="tns:setMessageResponse"/>
  </operation>




CERN
IDS
  Encoding


  <soap:operation soapAction="" style="rpc"/>
         <input name="setMessage0Request">
                 <soap:body use="encoded"
                 namespace="MessageService"
                 encodingStyle="…/soap/encoding/"/>
         </input>




CERN
IDS
  Endpoint


  <service name="MessageService">
  <port name="MessageServicePort"
          binding="tns:MessageServiceBinding">
  <soap:address location="http://localhost:8080/setMessage/"/>
  </port>
  </service>




CERN
IDS
  Discovery – UDDI
   Universal Description, Discovery and
    Integration
   A UDDI Server acts as a registry for
    Web Services and makes them
    searchable.




CERN
IDS
  Discovery – UDDI
   Demonstration:
  https://uddi.ibm.com/ubr/registry.html




CERN
IDS
  Discovery – UDDI
                  UDDI Registry
        Inquiry




        Publish




CERN
IDS
  Discovery – UDDI
                  UDDI Registry
        Inquiry




        Publish




CERN
IDS
  Examples
      Java
       – Client
       – Server
      VBScript
       – Client –high level API
       – Client – low level API
      .NET
       – C# Client
       – C# Server

CERN
IDS
  Design Recommendations
   Create a local class
   Create a method with the same name




CERN
IDS
  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);




CERN
IDS
  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, "");

CERN
IDS
  Examples (Java Client)
      Demonstration




CERN
IDS
  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




CERN
IDS
  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




CERN
IDS
  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


CERN
IDS
  Examples (VB Client)


       Name   Bill

       Colour blue

                 Call Web Service



CERN
IDS
  Examples (C# Client)
      Add a Web References to a project

  Localhost.MessageService serv = new
    Localhost.MessageService();

  serv.setMessage(x, y);




CERN
IDS
  Examples (C# Client)
      Demonstration




CERN
IDS
  Examples (C# Server)
  public class Demo :
    System.Web.Services.WebService {

       public Demo() {
          InitializeComponent();
       }

       [Web Method]
       public string HelloWorld() {
          return “Hello World”;
       }
  }

CERN
IDS
       Web Services
         Future

CERN
IDS
   Security

               Bookstore
 Client
 Application




CERN
IDS
   Security
                           Bank




 Client        Bookstore
 Application




                           Warehouse




CERN
IDS
  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
CERN
       – XKMS - XML Key Management Specification
IDS
   Security – Fire Walls

                           Bookstore
 Client
 Application




               Fire Wall



CERN
IDS
  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
CERN
IDS
  Missing Pieces
      Security
       – Single Sign-on, credentials
   Transactions
   Quality of service
       – Timeliness guarantees
      Asynchronous operations
       – Co-ordination, workflow




CERN
IDS
  Real Examples
   Amazon Web Services API
   Google Web API
   HP & IBM online stores




CERN
IDS
  Next Steps
   Overtime Interface
   Other documents (Materials Request,
    TID, Transport Request)
   E-Business – with ebXML




CERN
IDS
      Gartner’s ‘Hype’ Curve
                                                                          Key: Time to “plateau”
Visibility
                                                                             Less than two years
                                                                             Two to five years
                                                                             Five to 10 years
                                                                             Beyond 10 years




                                                      Web Services



                       Peak of
        Technology     inflated        Trough of             Slope of       Plateau of
          trigger    expectations   disillusionment       enlightenment    productivity
                                                                                          Maturity



 CERN                                                                Source: Gartner Group June 2002
  IDS
  Thank you
      Presentation and source code of
       demos:



         http://ais.cern.ch/presentations




CERN
IDS