Slides for Chapter 19 Web Services - Chapter 19 slides

  Slides for Chapter 19 Web Services From

  Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edition 4, © Addison-Wesley 2005 Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.1 Web services infrastructure and components

  Security Service descriptions (in WSDL) Applications Directory service

  Web Services

  XML Choreography

  

SOAP

URIs (URLs or URNs) HTTP, SMTP or other transport

Figure 19.2 The ‘travel agent service’ combines other web services

  flight

  a

  flight booking

  b

  booking Travel Agent

  Client Service hire car booking

  a

  hire car booking

  b

  hotel booking a hotel booking

  b Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.3 SOAP message in an envelope

  envelope header body header element body element header element body element

Figure 19.4 Example of a simple request without headers

  env:envelope xmlns:env =namespace URI for SOAP envelopes env:body m:exchange xmlns:m = namespace URI of the service description m:arg1 m:arg2

  Hello World In this figure and the next, each XML element is represented by a shaded box with its name in italic followed by any attributes and its content Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.5 Example of a reply corresponding to the request in Figure 19.4

  xmlns:env = namespace URI for SOAP envelope env:envel ope env:body m:exchangeResponse xmlns:m = namespace URI for the service description m:res1 m:res2

  World Hello Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.6 Use of HTTP POST Request in SOAP client-server

  communication r

  POST /examples/stringer endpoint address e P

  Host: www.cdk4.net T ad T

  Content-Type: application/soap+xml e H h action

  Action: http://www.cdk4.net/examples/stringer#exchange > <env:envelope xmlns:env= namespace URI for SOAP envelope e g

  <env:header> </env:header> a

  <env:body> </env:body> p ss

  </env:Envelope> e oa

  S m Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.7 Java web service interface ShapeList

  import java.rmi.*; public interface ShapeList extends Remote { int newShape(GraphicalObject g) throws RemoteException; int numberOfShapes()throws RemoteException; int getVersion() throws RemoteException; int getGOVersion(int i)throws RemoteException; GraphicalObject getAllState(int i) throws RemoteException; }

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.8 Java implementation of the ShapeList server

  import java.util.Vector; public class ShapeListImpl implements ShapeList { private Vector theList = new Vector(); private int version = 0; private Vector theVersions = new Vector(); public int newShape(GraphicalObject g) throws RemoteException{ version++; theList.addElement(g); theVersions.addElement(new Integer(version)); return theList.size();

  } public int numberOfShapes(){} public int getVersion() {} public int getGOVersion(int i){ } public GraphicalObject getAllState(int i) {} } Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.9 Java implementation of the ShapeList client

  package staticstub; import javax.xml.rpc.Stub; public class ShapeListClient { public static void main(String[] args) { /* pass URL of service */ try { Stub proxy = createProxy(); proxy._setProperty (javax.xml.rpc.Stub.ENDPOINT_ADDRESS_PROPERTY, args[0]); ShapeList aShapeList = (ShapeList)proxy; GraphicalObject g = aShapeList.getAllState(0);

   } catch (Exception ex) { ex.printStackTrace(); } } private static Stub createProxy() { return

   (Stub) (new MyShapeListService_Impl().getShapeListPort()); } } Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.10 The main elements in a WSDL description

  abstract concrete how where defnnitnions types target namespace ninterface bnindnings servnices message document style request-reply style

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

  ShapeList_newShapeResponse

  xsd:int

  "

  type =

  "

  result

  "

  " part name=

  message name = "

Figure 19.11 WSDL request and reply messages for the newShape operation

  tns ミ target namespace xsd ミ XML schema defnitions

  " part name ="GraphnicalObject_1"

  ns:GraphicalObject

  "

  type =

  "

  ShapeList_newShape

  message name = "

  " Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.12 Message exchange patterns for WSDL operations

  Name In-Out In-Only Robust In-Only Out-In Out-Only Robust Out-Only

  Client Server Delivery Fault message Request Reply may replace Reply

  Request no fault message

  Request guaranteed may be sent

  Reply Request may replace Reply

  Request no fault message

  Request guaranteed may send fault

  Messages sent by

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.13 WSDL operation newShape

  operatnion name = " newShape

  

"

ninput message =

  " tns:ShapeList_newShape

  " output message = "tns:ShapeList_newShapeResponse" pattern = In-Out

tns – target namespace xsd – XML schema defnitions

  

The names operatnion , pattern, ninput and output are defned in the XML schema for WSDL

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

  for schemas for soap/http the service URI is: operatnion soap:operatnion soapAction

   ninput soap:body encoding, namespace soap:body encoding, namespace output

  type = name= "newShape "

  "

  tns:ShapeList

  "

  "

  " ShapeListBinding

  "ShapeListPort "

Figure 19.14 SOAP binding and service definitions

  MyShapeListService " name =

  location = service URI name = "

  soap:address

  " tns:ShapeListBinding "

  name = binding =

  " endponint servnice

  " rpc

  soap:bnindning transport = URI bnindning style=

  “ http://localhost:8080/ShapeList-jaxrpc/ ShapeList” Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.15 The main UDDI data structures

  tModel busninessServnices tModel busninessEntnity

  information about the publisher

  tModel busninessServnices

  human readable service descriptions

  key key

  busninessServnices

  information about a family of services human readable service interfaces

  bnindningTemplate bnindningTemplate bnindningTemplate

  information about the

  key

  service interfaces Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.16 Algorithms required for XML signature

  Type of algorithm Name of algorithm Required reference

  Message digest SHA-1 Required Section 7.4.3 Encoding base64 Required [Freed and Borenstein 1996] Signature DSA with SHA-1 Required [NIST 1994] (asymmetric) RSA with SHA-1 Recommended Section 7.3.2 MAC signature (symmetric)

  HMAC-SHA-1 Required Section 7.4.2 and Krawczyk

  et al. [1997]

  Canonicalization Canonical XML Required Page 810 

Figure 19.17 Algorithms required for encryption(the algorithms in Figure

  19.16 are also required) Type of algorithm Name of algorithm Required reference Block cipher TRIPLEDES, required Section 7.3.1 AES 128

  AES-256 AES-192 optional Encoding base64 required [Freed and Borenstein 1996] Key transport RSA-v1.5, required Section 7.3.2

  [Kaliski and Staddon 1998] RSA-OAEP Symmetric key TRIPLEDES required [Housley 2002] wrap (signature KeyWrap, by shared key) AES-128 KeyWrap,

  AES 256KeyWrap AES-192 KeyWrap optional Key agreement Dife-Hellman optional [Rescorla, 1999] Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.18 Travel agent scenario

  1. The client asks the travel agent service for information about a set of services; for example, fights, car hire and hotel bookings.

  2. The travel agent service collects prices and availability information and sends it to the client, which chooses one of the following on behalf of the user: (a) refne the query, possibly involving more providers to get more information, then repeat step 2; (b) make reservations; (c) quit.

  3. The client requests a reservation and the travel agent service checks availability.

  4. Either all are available; or for services that are not available; either alternatives are ofered to the client who goes back to step 3; or the client goes back to step 1.

  5. Take deposit.

  6. Give the client a reservation number as a confrmation.

  7. During the period until the fnal payment, the client may modify or cancel reservations

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

  Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.19 Open grid services architecture

  Application specfc grid services web services application specifc

  OGSI services: naming, service data (metadata) OGSA services: directory, management, security service creation and deletion, fault model, service groups GrnidServnice e.g. interfaces e.g. astronomy, biomedical informatics, high-energy physics

  Factory grid service interfaces standard Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4

Figure 19.20 A selection of the grid projects presented in Foster & Kesselman[2004]

  Description of the project

  Reference

  1. Aircraft engine maintenance using fault histories and sensors for predictive diagnostics www.cs.york.ac.uk/dame

  2. Telepresence for predicting the efects of earthquakes on buildings, using simulations and test sites www.neesgrid.org

  3. Bio-medical informatics network providing researchers with access to experiments and visualizations of results nbcr.sdsc.edu

  4. Analysis of data from the CMS high energy particle detector at CERN by physicists world-wide over 15 years www.uscms.org

  5. Testing the efects of candidate drug molecules for their efect on the activity of a protein, by performing parallel computations using idle desktop computers

  [Taufer et al. 2003] [Chien 2004

  6. Use of the Sun Grid Engine to enhance aerial photographs by using spare capacity on a cluster of web servers www.globexplorer.com

  7. The butterfy Grid supports multiplayer games for very large numbers of players on the internet over the Globus toolkit www.butterfy.net

  8. The Access Grid supports the needs of small group collaboration, for example by providing shared workspaces www.accessgrid.org