Services Web 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 © Addison-Wesley Publishers 2005 Services Web zModèle client-serveur yUn client spécifique pour l’application yUn service accessible via Internet xUne interface spécialisée définit les fonctions accessibles zService web yUne infrastructure pour maintenir une forme d’interactions entre des clients et des serveurs xInteractions plus riches et mieux structurées que pour un fouineur Web xUne application client dans une organisation peut interagir avec une application serveur dans une autre organisation sans supervision humaine xConstruire des applications complexes où des services intègrent plusieurs autres services
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Service web =/= serveur web zServeur web yFournit un service http zService web yUn logiciel conçu pour supporter des interactions « machine to machine » interopérables à travers un réseau yFournit un service sur la base des opérations définies dans son interface xOpérations : programmes, objets, bases de données yReprésentation externe des données et marshalling des messages échangés en XML yPeut être géré par xun serveur web et des pages web xUn service complètement séparé
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 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
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Infrastructure de services web I zCouche 1 yUn service Web est identifié par un URI xURL : adresse directe xURN : indépendante de la localisation de la ressource Besoin d’un service de découverte (lookup) pour obtenir une URL à partir de l’URN yEncodage des messages en XML yTransmission des messages encodés en XML via HTTP ou un autre protocole, e.g. TCP ou SMTP zCouche 2 yLe protocole SOAP xSpécifie les règles d’encodage et d’utilisation des messages en XML Par exemple pour supporter un protocole requête-réponse
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Infrastructure de services web II zCouche 3 yWSDL (Web Services Description Language) xDescription des services : interfaces, URL, etc. zCouche 4 yLes applications et services web sont construits au- dessus d’autres services, en particulier xservice de répertoire: pour trouver les services web xSécurité XML : règle de signature et d’encryption des documents XML xChorégraphie de services web : coordination des opérations Permettre à un service web d’utiliser des patrons prédéfinis d’accès lorsqu’il utilise d’autres services web
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Figure 19.2 The ‘travel agent service’ combines other web services hotel booking a Travel Agent flight booking a hire car booking a Service Client flight booking b hotel booking b hire car booking b
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Exemples de services Web zLes serveurs web commerciaux Amazon, Yahoo, Google, et eBay offrent des interfaces à des services web qui permettent aux clients de manipuler leurs ressources zPermet à des applications tierces de construire des services à valeur ajoutée à partir de leurs services yAmazon x système de contrôle d’inventaire couplé avec un système automatique de commandes et de suivi des commandes placées chez Amazon yEnchères eBay xPlacer une mise dans les dernières secondes d’une enchère Les humains ne peuvent pas être aussi rapides qu’un programme
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Amazon Associates
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Communication zSynchrone zAsynchrone zPar événements zSOAP yMessage simple unidirectionnel yProtocole requête-réponse xUtiliser des paires de messages xSpécifier comment représenter les opérations, leurs arguments et les résultats
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Caractéristiques des services web zModèle de programmation yIndépendant des langages de programmation yPas possible d’instancier des objets à distance xPas de ramasse-miettes réparti xPas de références remote zReprésentation des messages yTextuelle xDemande par contre plus d’espace et plus de temps de calcul zRéférence à un service web yVia URI : URL ou URN zActivation des services yLe service peut s’exécuter tout le temps ou à la demande yLe service peut s’exécuter sur l’ordinateur pointé par l’URL ou ailleurs zTransparence de lieu yProxy : qui s’exécute chez le client yInvocation dynamique : xopération générique (doOperation), le client doit spécifier le nom de l’opération et les arguments et xConversion à SOAP et XML
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Exemple zTableau blanc partagé yImplémentation utilisant SOAP
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 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 © Addison-Wesley Publishers 2005 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 © Addison-Wesley Publishers 2005 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 © Addison-Wesley Publishers 2005 WSDL zDescription d’un service yDéfinition de l’interface xType de messages transmis ---- échange de documents xméthodes fournies --- interactions de type requête – réponse En WSDL, une opération, est une construction qui permet de relier les messages de requête et de réponse –Pour chaque opération, il faut spécifier le patron d’échange des messages (Fig ) Élément XML interface = collections d’opérations yMode de transmission du message, e.g. SOAP sur HTTP xDécidé par le fournisseur de services yURI du service xPour éviter d’avoir recours à un service de noms comme le fait RMI zGénéralement utilisée pour générer un stub chez le client
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Figure The main elements in a WSDL description abstract concrete howwhere definitions types target namespace interfacebindings services message document stylerequest-reply style
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Figure WSDL request and reply messages for the newShape operation message name = " ShapeList_newShape " type = " ns:GraphicalObject " part name="GraphicalObject_1" tns ミ target namespace xsd ミ XML schema definitions message name = " ShapeList_newShapeResponse " part name= " result " type = " xsd:int " public interface ShapeList extends Remote { int newShape(GraphicalObject g) throws RemoteException;
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Figure Message exchange patterns for WSDL operations Name In-Out In-Only Robust In-Only Out-In Out-Only Robust Out-Only ClientServerDelivery Fault message RequestReply may replaceReply Request no fault message Requestguaranteed may be sent ReplyRequest may replaceReply Request no fault message Requestguaranteed may send fault Messages sent by
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Figure WSDL operation newShape operation name = " newShape " input message = " tns:ShapeList_newShape " output message ="tns:ShapeList_newShapeResponse" pattern = In-Out tns – target namespacexsd – XML schema definitions The namesoperation, pattern,input andoutput are defined in the XML schema for WSDL public interface ShapeList extends Remote { int newShape(GraphicalObject g) throws RemoteException;
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005 Figure SOAP binding and service definitions soap:binding transport = URI binding style= " rpc " endpoint service name = binding = " tns:ShapeListBinding " soap:address location = service URI name = " MyShapeListService " name = " ShapeListPort " for schemas for soap/http the service URI is: operation soap:operation soapAction " ShapeListBinding " " tns:ShapeList " type = name= " newShape " input soap:body encoding, namespace soap:body encoding, namespace output “ jaxrpc/ShapeList”
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers
Instructor’s Guide for Coulouris, Dollimore and Kindberg Distributed Systems: Concepts and Design Edn. 4 © Addison-Wesley Publishers 2005