ăde e learning șși curriculăe content pentru învățământul...

83
Platformă de elearning și curriculă econtent pentru învățământul superior tehnic Instrumente pentru Dezvoltarea Programelor 10 Instrumente pentru dezvoltarea aplicatiilor orientate spre servicii 10. Instrumente pentru dezvoltarea aplicatiilor orientate spre servicii

Transcript of ăde e learning șși curriculăe content pentru învățământul...

Platformă de e‐learning și curriculă e‐content g șpentru învățământul superior tehnic

Instrumente pentru Dezvoltarea Programelorp g

10 Instrumente pentru dezvoltarea aplicatiilor orientate spre servicii10. Instrumente pentru dezvoltarea aplicatiilor orientate spre servicii

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Dezvoltarea bazată pe servicii

“Driven by the convergence of key technologies and the universal adoption g pof Web services, the service-oriented

enterprise promises to significantly improve corporate agility, speed time-

to market for new products and to-market for new products and services, reduce IT costs, and improve

operational efficiency. “

Newcomer, 2005

2IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

l lDe la componente la servicii…

Abordarea orientată spre componenteAsamblare din diverse “servicii” – create prin configurare în detrimentul programăriidetrimentul programăriiIBMWebSphere, Sun One Application Server, Microsoft .NET, J2EEDezavantaj: configurarea unei aplicații devine aproape la fel de complicată ca programarea (e.g., deployment descriptor‐ul î l EJB)în cazul EJB)

În acest context devine important conceptul de arhitectură orientată spre servicii (SOA)

3IDP – Instrumente pentru Dezvoltarea Programelor

orientată spre servicii (SOA)

De la De la ObjectObject--Oriented Oriented lala ServiceService--OrientedOrientedOO Modeling

OO Languages

OO ModelingLanguages &

IDEOO Technology & Framework

Object-OrientedConcept

&

SimulaSmalltalk

Objective C C++

J

UMLCORBAMS .Net

JDK

OO system engineering (OOSE)OO testing

OO maintenanceOO application frameworks

OO databases (OODB)Architecture JavaJDKGCC

OO databases (OODB)OO lifecycle (XP? MDA?)

SO ModelingL & SO Technology & FrameworkLanguages &

IDESO Standards

XMLService BPEL

SO Technology & Framework

SO System Engineering (SOSE?)SO testing (WebStrar?)

UDDI ebXMLWSDLSOAPOWL

Service-OrientedConcept

& Architecture

BPELWSFLXLANGMS. Net

WebSphere

g ( )SO maintenance (re-composition?)

SO frameworks (FERA? SOI?)SO databases

(Ontology DB, SODB?)SO Lifecycle

4

OWL SO Lifecycle (MDA, [re-]composition)

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Arhitecturi orientate pe servicii (SOA – Service Oriented Architectures) [WS05]

Tendinţe în ultimii ani în industria IT: colaborarea, partajarea datelor şi resurselorstructurarea aplicaţiilor mari în sub‐blocuri care să poata fireutilizate

Arhitectura orientată pe servicii – componente:Furnizorii de servicii (Service Providers)U ili ii d i ii (S i R )Utilizatorii de servicii (Service Requestors)Broker‐ii (Service Brokers)

5IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

A hi O i ă S i iiArhitectura Orientată pe Servicii

Modalitate de dezvoltare a sistemelor distribuite în care l i ii d lcomponentele sunt servicii stand‐alone

Serviciile se pot executa pe diverse staţii ale unor provideri de servicii diferiţiservicii diferiţi

Protocoale standardizate pentru suportul comunicaţiei între servicii şi schimbului de informaţiiş ţ

6IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

A hi i O i S i iiArhitecturi Orientate pe Servicii

(UDDI)

Serviceregistry

Find Publish

Servicerequestor

Serviceprovider

Servicerequestor providerBind (SOAP)

(WSDL)

7IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

SOA C i i iSOA – Caracteristici

Interoperabilitate între diferite platforme şi limbaje de p p ş jprogramare

Blocurile funcţionale sunt încapsulate în componente care funcţionează ca servicii

Separarea interfeţelor de implementare

În cazul aplicaţiilor complexe, controlul fluxului de execuţie(workflow) este separat de servicii

Serviciile pot fi adăugate dinamic

Corespondenţa dintre interfeţe şi implementări se 

8IDP – Instrumente pentru Dezvoltarea Programelor

realizează prin fişiere de configurare şi poate fi adaptată

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

C i iil b?Ce sunt serviciile web?

Aplicaţii (componente) care oferă funcţionalităţi în Internet şicomunică prin mesaje standardizate XMLp j

Auto‐descriere (self‐describing): interfeţe publice descrise în limbajul WSDL

Sunt utilizate de către alte aplicaţii, nu de către persoane

Pot fi publicate în cataloage pentru a fi descoperite de cătreli iclienţi

Implementează o arhitectură orientată pe servicii

9IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

De ce servicii web?

Faţă de RPC/RMI/CORBA, au avantajul standardizării

I t bilit t Interoperabilitate 

Standarde şi protocoale deschise

Sunt bazate pe HTTP: eliminarea problemelor legate de firewall‐uri

Oferă o soluţie în care componentele sunt slab cuplate –specifică programării distribuite

10IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Unde găsim servicii web? http://www.xmethods.net – listă de servicii web disponibile public

http://aws.amazon.com – servicii  web oferite de Amazon

11IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

A j SOAAvantaje SOA

Serviciile pot fi furnizate local sau pot fi furnizate de către provideri externi

Serviciile pot fi independente de limbaj

I tiţi î i t l l t fi tă Investiţia în sistemele legacy poate fi conservată

Interoperabilitatea este facilitată prin schimbul simplificat de i f ţiiinformaţii

12IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Stiva de protocoale pentru servicii web 

Descoperirea serviciilor (UDDI)

Catalog pentru servicii web

M j XML (XML RPC

Descrierea serviciilor(WSDL)

(UDDI)

Codificarea mesajelor in

Nivelul transport (HTTP, FTP JMS )

Mesaje XML (XML-RPC, SOAP)

esaje oformatul XMLDescrierea interfetei

publice a serviciilor

FTP, JMS, …)

Transportul mesajelor intre

13IDP – Instrumente pentru Dezvoltarea Programelor

aplicatii

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Protocoale şi tehnologii de bază pentru serviciiProtocoale şi tehnologii de bază pentru serviciiweb (1) XML (Extensible Markup Language)

limbaj generic care poate fi utilizat pentru a reprezentaorice tip de conţinut într‐un mod structuratorice tip de conţinut într‐un mod structuratconţinutul este separat de modul de prezentare

SOAP (Simple Object Access Protocol) SOAP (Simple Object Access Protocol)

protocol prin care un client poate invoca operaţii ale unuiserviciu aflat la distanţăţindependent de platformă, de caracteristicile reţelei şi de limbajele de programare

14IDP – Instrumente pentru Dezvoltarea Programelor

mesajele transmise sunt în format XML

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

P t l i t h l ii d b ă t i iiProtocoale şi tehnologii de bază pentru serviciiweb (2)

WSDL (Web Services Description Language)

limbaj bazat pe XML, pentru descrierea interfeţei oferitelimbaj bazat pe XML, pentru descrierea interfeţei oferitede un anumit serviciudescrierea WSDL este publicată de furnizorul de serviciipentru a specifica operaţiile oferite şi parametrii acestorapentru a specifica operaţiile oferite şi parametrii acestoraWSDL este utilizat şi pentru a descrie modul de acces la serviciu

UDDI (Universal Description, Discovery and Integration)

protocol utilizat pentru a se obţine informatii despreservicii web şi furnizorii acestora

15IDP – Instrumente pentru Dezvoltarea Programelor

servicii web şi furnizorii acestora

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Scenariu de utilizare

Web Services Registry WSDL2

WSDL 1

3ServiceProvider

ServiceRequestor SOAP

3

1 – Serviciul este publicat în catalog (registry)

2 – Clientul (requestor) obţine interfaţa publică a serviciului

16IDP – Instrumente pentru Dezvoltarea Programelor

( q ) ţ ţ p

3 – Clientul (requestor) invocă operaţia şi primeşte rezultatul

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

S i iScurt istoric

1998‐1999: Microsoft începe să dezvolte standardul SOAP

În acea perioadă XML Schema nu era definitivat

2000: IBM începe să susţină SOAP, extinde specificaţiile şi apareSOAP 1.1

2000 t l d i i b i i ă 2000: apare termenul de serviciu web şi o primă propunerepentru WSDL

După 2001: dezvoltarea standardelor SOAP şi WSDL esteDupă 2001: dezvoltarea standardelor SOAP şi WSDL estecoordonată de W3C

17IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Produse software pentru dezvoltarea serviciilorProduse software pentru dezvoltarea serviciilorweb

Microsoft: suport pentru servicii web inclus în platforma .NET

IBM: a dezvoltat platforma IBM‐SOAP, care apoi a fostpreluată de către Apache devenind Apache SOAP

Apache SOAP a fost urmat de Apache Axis

IBM WebSphere conţine un engine pentru servicii webp ţ g p

18IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Axis – Apache Extensible Integration System

Produs open source pentru programarea serviciilor Produs open‐source pentru programarea serviciilorweb, bazat pe API‐ul JAX‐RPC

I l d i l t d l t i ii Include un server simplu stand‐alone pentru serviciiweb şi un server care poate fi integrat într‐un server de aplicaţii, cum ar fi Apache Tomcatde aplicaţii, cum ar fi Apache Tomcat

Oferă utilitare pentru generarea descrierilor WSDL pebaza claselor Java si de generarea de cod Java pe bazabaza claselor Java si de generarea de cod Java pe bazadescrierii WSDL (java2wsdl, wsdl2java) 

19IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Completare standarde de servicii Web

Support (WS-Security, WS-Addressing, ...)

XML technologies (XML, XSD, XSLT, ....)

Process (WS-BPEL)

Service definition (UDDI, WSDL)

Transport (HTTP, HTTPS, SMTP, ...)

Messaging (SOAP)

20IDP – Instrumente pentru Dezvoltarea Programelor

Transport (HTTP, HTTPS, SMTP, ...)

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

S i i ă f l ibilăServiciu – componentă refolosibilă Un serviciu poate fi definit ca:O componentă software slab‐cuplată, refolosibilă ce încapsulează funcţionalitate discretă ce poate fi accesată distribuit şi programatic Un serviciu web este un serviciu cedistribuit şi programatic. Un serviciu web este un serviciu ce este accesat folosind protocoale standarde Internet bazate pe XML

O distincţie între un serviciu şi o componentă (definită ca în cazul dezvoltării bazate pe componente) este că 

i iil t i d d tserviciile sunt independenteServiciile nu au o interfaţă “necesită”S i iil b ă i i b ă j

21IDP – Instrumente pentru Dezvoltarea Programelor

Serviciile se bazează pe comunicaţie bazată pe mesaje –mesajele sunt exprimate în XML

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

ăInteracţiune sincronă

22IDP – Instrumente pentru Dezvoltarea Programelor

Comunicatie folosind apeluri de metode – interactiune intre componente

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

U di b f i j XMLUn ordin sub forma unui mesaj XML<starter>

<dish name = “soup” type = “tomato” /> <dish name = soup type = tomato /> <dish name = “soup” type = “fish” /><dish name = “pigeon salad” />

</starter></starter><main course>

<dish name = “steak” type = “sirloin” cooking = “medium” /><dish name = “steak” type = “fillet” cooking = “rare” />dish name steak type fillet cooking rare /<dish name = “sea bass”>

</main><accompaniment>mp m

<dish name = “french fries” portions = “2” /><dish name = “salad” portions = “1” />

</accompaniment>

23IDP – Instrumente pentru Dezvoltarea Programelor

p

Comunicatie folosind transmitere de mesaje – interactiune intre servicii

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

bWeb Service Description Language

Interfaţa serviciului este definită conform unei descrieri a serviciului exprimată în WSDL. 

Specificaţia WSDL defineşte:Ce operaţii sunt suportate de serviciu şi formatul mesajelor ce sunt trimise şi primite de serviciuCum este accesat serviciul – maparea între interfaţa abstractă şi setul concret de protocoale din spateabstractă şi setul concret de protocoale din spateLocaţia serviciului – exprimată uzual sub forma unui URI (Universal Resource Identifier)

24IDP – Instrumente pentru Dezvoltarea Programelor

( )

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

WSDL lăWSDL – prezentare generală

Prin limbajul WSDL un furnizor de servicii poatePrin limbajul WSDL un furnizor de servicii poatespecifica:Numele serviciului web şi informaţii referitoare la adresare

Protocolul şi modul de codificare a datelor folosit la accesareaoperaţiilor

U i f i i l iUn nume pentru interfaţa serviciului

Semnătura operaţiilor, tipurile de date pentru parametri

Un document WSDL poate conţine mai multe fişiere

Pentru a referi alte fişiere care fac parte din document 

25IDP – Instrumente pentru Dezvoltarea Programelor

ş pse utilizează elementul import

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

fStructura unei specificaţii WSDL

D fi iti WSDL d i i Declaratii:

Intro

Definitie WSDL de serviciu

XML namespace

Declaratii:

Interfata abstractaTypeInterfaceMessage

Implementareconcreta

Message

BindingEndpointp

26IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

l dComponentele unei descrieri WSDL

Tipuri (elementul types)Definiţii pentru tipurile de date utilizate în document

Mesaje (elementul message)Definirea structurii diferitelor tipuri de mesaje care apar în comunicareUn mesaj are una sau mai multe părţi de tipuri definiteUn mesaj are una sau mai multe părţi de tipuri definite prin types

Port typeypUn set de definiţii ale unor operaţii abstracte(interfeţe)Operation elementul prin care se defineşte

27IDP – Instrumente pentru Dezvoltarea Programelor

Operation – elementul prin care se defineştesemnătura unei operaţii

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Componentele unei descrieri WSDL (2)

BindingO specificare concretă a protocolului şi formatului datelorpentru un port typepentru un port type Conţine: numele protocolului, stilul invocaţiei, modul de codificare

PortSpecificat printr‐un binding şi o adresă fizică de reţeap p g ş ţ

ServiciuO colecţie de porturi “înrudite”

28IDP – Instrumente pentru Dezvoltarea Programelor

O colecţie de porturi înrudite

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

<?xml version="1.0" encoding="UTF-8"?><wsdl:definitions targetNamespace="http://address.jaxrpc.samples"xmlns:apachesoap="http://xml.apache.org/xml-soap"xmlns:impl="http://address.jaxrpc.samples"xmlns:intf="http://address.jaxrpc.samples"xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"xmlns:xsd="http://www.w3.org/2001/XMLSchema">

<wsdl:types><schema targetNamespace="http://address.jaxrpc.samples"xmlns="http://www.w3.org/2001/XMLSchema"><import namespace="http://schemas.xmlsoap.org/soap/encoding/"/><complexType name="AddressBean">

<sequence><element name="street" nillable="true" type="xsd:string"/><element name="zipcode" type="xsd:int"/>

</sequence></complexType><element name="AddressBean" nillable="true“type="impl:AddressBean"/>

29IDP – Instrumente pentru Dezvoltarea Programelor

</schema><import namespace="http://www.w3.org/2001/XMLSchema"/></wsdl:types>

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Exemplu – document WSDL [WS05] (2)

<wsdl:message name="updateAddressRequest"><wsdl:message name updateAddressRequest ><wsdl:part name="in0" type="intf:AddressBean"/><wsdl:part name="in1" type="xsd:int"/>

</wsdl:message><wsdl:message name="updateAddressResponse"><wsdl:message name updateAddressResponse ><wsdl:part name="return" type="xsd:string"/>

</wsdl:message><wsdl:message name="updateAddressFaultInfo"><wsdl:part name="fault" type="xsd:string"/>"<wsdl:part name fault type xsd:string />

</wsdl:message>

definitiile de mesaje vor fi utilizate in definitiile de operatii

mesajele sunt definite separat de operatii pentru flexibilitate – mai multe operatii pot referi aceeasi definitie de mesaj

30IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

E l d t WSDL [WS05] (3)Exemplu – document WSDL [WS05] (3)<wsdl:portType name="AddressService"><wsdl:operation name="updateAddress" parameterOrder="in0 in1"><wsdl:operation name updateAddress parameterOrder in0 in1 >

<wsdl:input message="intf:updateAddressRequest"name="updateAddressRequest"/>

<wsdl:output message="intf:updateAddressResponse"name="updateAddressResponse"/>name updateAddressResponse />

<wsdl:fault message="intf:updateAddressFaultInfo"name="updateAddressFaultInfo"/>

</wsdl:operation></wsdl:portType></wsdl:portType>

Tipuri posibile de operatii:

• one wayone way

• request-response

• solicit-response

31IDP – Instrumente pentru Dezvoltarea Programelor

p

• notification

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

<wsdl:binding name="AddressSoapBinding" type="intf:AddressService"><wsdlsoap:binding style="rpc"

transport="http://schemas.xmlsoap.org/soap/http"/><wsdl:operation name="updateAddress">

<wsdlsoap:operation soapAction=""/><wsdl:input name="updateAddressRequest">

<wsdlsoap:bodyencodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://address.jaxrpc.samples" use="encoded"/>

</wsdl:input><wsdl:output name="updateAddressResponse">

<wsdlsoap:bodyencodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://address.jaxrpc.samples" use="encoded"/>

</wsdl:output><wsdl:fault name="updateAddressFaultInfo">

<wsdlsoap:bodyencodingStyle="http://schemas.xmlsoap.org/soap/encoding/"namespace="http://address.jaxrpc.samples" use="literal"/>

</wsdl:fault>

32IDP – Instrumente pentru Dezvoltarea Programelor

</wsdl:operation></wsdl:binding>

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Exemplu – document WSDL [WS05] (5)

<wsdl:service name="AddressServiceService"><wsdl:port binding="intf:AddressSoapBinding" name="Address"><wsdlsoap:addresslocation="http://localhost:8080/axis/services/Address"/></wsdl:port></wsdl:service></wsdl:definitions>

33IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

I diInstrumente: editor

Cum scriem fişiere WSDL?

De mână: unele editoare au suport special pentru WSDL

Nu le scriem: generare automată (în câteva slide‐uri)g ( )

Editing WSDL files by hand is masochistic Avoid it as much as you Editing WSDL files by hand is masochistic. Avoid it as much as you can

34IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

I lidInstrumente: validare

Documentele WSDL pot fi chiar mari (documentul WSDL pentru Amazon E‐Commerce Service are 2432 linii de cod şi pesteAmazon E‐Commerce Service are 2432 linii de cod şi peste 100KB)

Instrumente pentru validarea/analiza documentelor WSDL :p /http://xmethods.net/ve2/Tools.pohttp://www.softwaresecretweapons.com/jspwiki/services/oy-lm-1 3/generator jsp 1.3/generator.jsp

35IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

I G WSDLInstrumente: Generare WSDL

Crearea manuală a unui fişier WSDL pentru un serviciu web Crearea manuală a unui fişier WSDL pentru un serviciu web poate fi dificilă şi poate duce uşor la erori

Plecând de la un fişier WSDL, generarea unui client care să ş , ginteracţioneze cu un serviciu reprezintă un task repetitiv

Există toolkituri pentru diverse limbaje de programare ce automatizează atât generarea fişierelor WSDL cât şi generareaautomatizează atât generarea fişierelor WSDL, cât şi generarea codului pe partea clientului

36IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

WSDL lki JWSDL toolkit: Java

Axis: http://ws.apache.org/axis/

Construieşte stub, skeleton şi tipuri de date pornind de la WSDL 

java org.apache.axis.wsdl.WSDL2Java AWSECommerceService wsdlAWSECommerceService.wsdl

Construieşte WSDL pornind de la codul Javaj h i dl J 2WSDL dljava org.apache.axis.wsdl.Java2WSDL -o wp.wsdl -l "http://localhost:8080/axis/services/WidgetPrice -n"urn:Example6" -p"samples.userguide.example6" "urn:Example6" samples userguide

37IDP – Instrumente pentru Dezvoltarea Programelor

example6 urn:Example6 samples.userguide.example6.WidgetPrice

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

WSDL lki P hWSDL toolkit: Python

SOAPpy: http://pywebsvcs.sourceforge.net/py p //py g /

Parsarea unui fişier WSDL:>>> from SOAPpy import WSDLpy p>>> wsdlFile = 'http://webservices.amazon.com/AWSECommerceService/AWSECommerceService.wsdl'>>> server = WSDL.Proxy(wsdlFile)>>> server WSDL.Proxy(wsdlFile)>>> server.methods.keys()[u'SellerListingSearch', u'CartCreate', u'SellerLookup', u'Help', u'TransactionLookup', u'CartAdd' u'ItemLookup' u'MultiOperation'u CartAdd , u ItemLookup , u MultiOperation , u'SimilarityLookup', u'CartClear', u'ListLookup', u'CartModify', u'CustomerContentLookup', u'ListSearch', u'BrowseNodeLookup', u'CartGet', 'S ll Li ti L k ' 'C t C t tS h'

38IDP – Instrumente pentru Dezvoltarea Programelor

u'SellerListingLookup', u'CustomerContentSearch', u'ItemSearch']

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

>>> itemSearchM = server.methods['ItemSearch'][ ]>>> for inparams in itemSearchM.inparams:... print inparams.name, inparams.type... body (u'http://webservices.amazon.com/AWSECommerceService/2005-10-05', u'ItemSearch')>>>>>> for outparams in itemSearchM.outparams:... print outparams.name, outparams.type... body (u'http://webservices.amazon.com/AWSECommerceService/2005-10-05', u'ItemSearchResponse')u ItemSearchResponse )>>> result = server.ItemSearch({'body': {'SubscriptionId': 'xxxxxxxxxxxxxxxxxxxx', 'SearchIndex': 'Books', 'Request' : {'SearchIndex': 'Books', 'Title': 'restaurant end universe'}}})>>> result.Items.TotalPages2>>> result['Items'].TotalResults'18'

>>> result.Items.Item[0]<SOAPpy.Types.structType Item at -1214384084>: {'ItemAttributes': <SOAPpy.Types.structType ItemAttributes at -1214386100>: {'Title': 'The Restaurant at the End of the Universe', 'ProductGroup': 'Book', 'Author': 'Douglas Adams'}, 'ASIN': '0345391810', 'DetailPageURL': 'http://www.amazon.com/exec/obidos/redirect?tag=ws%26link_code=sp1%26camp=2025%26creative=165953%26path=http://www amazon com/gp/redirect html%253fASIN=0345391810%252

39IDP – Instrumente pentru Dezvoltarea Programelor

eative 165953%26path http://www.amazon.com/gp/redirect.html%253fASIN 0345391810%2526tag=ws%2526lcode=sp1%2526cID=2025%2526ccmID=165953%2526location=/o/ASIN/0345391810%25253FSubscriptionId=xxxxxxxxxxxxxxxxxxxx'}

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

lIngineria serviciilor

Procesul de dezvoltare de servicii pentru refolosire în aplicaţiile orientate spre servicii

Serviciul trebuie proiectat ca o entitate abstractă refolosibilă în diverse sisteme

PresupuneIdentificarea serviciului candidatProiectarea serviciuluiProiectarea serviciuluiImplementarea serviciului

40IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Procesul de inginerie orientată pe procese

41IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Construcţia prin compunere

42IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Exemplu de orchestraţieExemplu de orchestraţie

43IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Tendinţe de evoluţie a serviciilor web

44IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Referinţe

[WS05] http://publib-b.boulder.ibm.com/abstracts/sg246461.html?OpenWebSphere Version 6 Web Services Handbook 2005WebSphere Version 6 – Web Services Handbook, 2005

• http://www-128.ibm.com/developerworks/webservices/library/ws-peer1.html?dwzone=ws – The Web Services (r)evolution

• http://www.w3.org/2002/ws/ - pagina oficială pentru servicii web a W3C

[JW03] http://www javaworld com/javaworld/jw 10 2003/jw 1003• [JW03] http://www.javaworld.com/javaworld/jw-10-2003/jw-1003-wsstyles.html?page=1 – Keep up with the Web Services Styles

• http://www.xml.com/pub/a/2001/04/04/soap.html - A Brief History of SOAP

45IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Sumar

Servicii webArhitecturi orientate pe serviciiArhitecturi orientate pe servicii

Standarde, protocoale şi produse software pentruservicii webservicii web

46IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Slide‐uri suplimentare

47IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

SOAP – Caracteristici generale

Reprezintă principalul mod de comunicaţie între componentelearhitecturii bazate pe servicii

Independent de protocolul de transport

Clienţii SOAP nu deţin referinţe la obiectele la distanţă ca în Clienţii SOAP nu deţin referinţe la obiectele la distanţă, ca în cazul RMI – deci nu există restricţii pentru limbajul de implementare

48IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Componentele unui mesaj SOAP

Anvelopa mesajului:elementul de la nivelul cel mai înaltfuncţionează ca un container pentru mesaj

Zero sau mai multe antete (header‐e)conţin informaţii de controlspecifică cine şi cum va prelucra mesajul

( ) Corpul mesajului (body)specifică operaţiile care trebuiesc realizate

49IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Exemplu – cerere HTTP ce conţine un mesaj SOAPExemplu – cerere HTTP ce conţine un mesaj SOAP [WS05]

POST /webapp/servlet/rpcrouter HTTP/1.1Host: www.messages.comContent-Type: text/xml; charset="utf-8"Content-Length: nnnnSOAPAction: "“

<soapenv:Envelopexmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body>

<ns1:getMessage xmlns:ns1="urn:NextMessage"soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<UserID xsi:type="xsd:string">JDoe</UserID><Password xsi:type="xsd:string">0JDOE0</Password></ns1:getMessage>

50IDP – Instrumente pentru Dezvoltarea Programelor

</soapenv:Body></soapenv:Envelope>

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Exemplu – răspuns la cererea HTTP [WS05]

HTTP/1 1 200 OKHTTP/1.1 200 OKContent-Type: text/xml; charset="utf-8"Content-Length: nnnn

< E l<soapenv:Envelopexmlns:soapenv="..." xmlns:xsd="..." xmnls.xsi="..."><soapenv:Body>

<ns1:getResponseMessage xmlns:ns1="urn:NextMessage"soapen encodingSt le "http://schemas xmlsoap org/soap/encoding/">soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<return xsi:type="xsd:string">Call mom!</return></ns1:getResponseMessage>

</soapenv:Body></soapenv:Envelope></soapenv:Envelope>

51IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

URN – Unified Resource Name

Identificator unic al unui serviciu în cadrul unui server

Numele este reprezentat sub forma unui URI (Uniform Resource Identifier)

Restul informaţiilor de adresare sunt dependente de protocolul de transport

52IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

H d SOAPHeader‐e SOAP Reprezintă un mecanism de a extinde mesajele SOAP într‐un mod des‐centralizatmod des‐centralizat

Atributul mustUnderstand – specifică dacă furnizorul de servicii trebuie să implementeze semantica elementului:p

<thens:qos xmlns:thens="someURI" SOAP-ENV:mustUnderstand="1">3

• Atributul actor: specifică destinatarul mesajului

3</thens:qos>

Atributul actor: specifică destinatarul mesajului• Alte utilizări pentru header-e: informaţii de autentificare,

semnături digitale, diverse alte extensii ale standardului SOAP ( WS Add i )

53IDP – Instrumente pentru Dezvoltarea Programelor

SOAP (ex: WS-Addressing)

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

C l i j SOAPCorpul unui mesaj SOAP Conţine cel puţin:Numele mesajuluiO referinţă (URN) la instanţa serviciuluiParametri conţinând valori şi eventual tipuri

Elementele faultPentru raportarea erorilorConţin: un cod de eroare (faultcode), o descriere a erorii(faultstring), opţional alte detalii şi un câmp faultactorpentru a specifica sursa erorii

54IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Ti i d d SOAPTipuri de date SOAP Tipuri simple (int, string, boolean, date, …) – definite în XML Schema

Tipuri compuse: structuri, tablouri

Exemplu – tablou de structuri [WS05]:Exemplu tablou de structuri [WS05]:

<ns1:getSubscribers xmlns:ns1="urn:SubscriberList“ SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"><SOAP ENC:Array SOAP ENC:arrayType="xxx:Subscribers[2]"><SOAP-ENC:Array SOAP-ENC:arrayType="xxx:Subscribers[2]"><Subscribers>

<UserID xsi:type="xsd:string">JDoe</UserID><Password xsi:type="xsd:string">0JDOE0</Password>

</Subscribers></Subscribers><Subscribers>

<UserID xsi:type="xsd:string">MDoe</UserID><Password xsi:type="xsd:string">0JMDOE0</Password>

</Subscribers>

55IDP – Instrumente pentru Dezvoltarea Programelor

</Subscribers></SOAP-ENC:Array></ns1:getSubscribers>

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Stiluri de comunicaţie SOAP

Document (orientat pe mesaj)model de nivel mai jos, cu foarte puţine restricţiiflexibil, oferă nivelul maxim de interoperabilitateeste stilul recomandat de către standardele recente

RPCpentru invocări sincrone de operaţii care întorc rezultateadaugă elemente suplimentare pentru a simula un apel de funcţie

56IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Exemple – stiluri de comunicatie

<out:getNoteResponse xmlns:out="urn:outline.demo"><out:note key="000000000B" >

Stilul document:

<out:note key 000000000B ><out:content>test</out:content>

</out:note></out:getNoteResponse>

Stilul RPC:

<tns:matchNoteAndNote xmlns:tns="urn:outline.demo"><in0 xsi:type="xsd:string">0000000000</in0><in1 xsi:type="xsd:string">000000000B</in1>

</tns:matchNoteAndNote>

57IDP – Instrumente pentru Dezvoltarea Programelor

</tns:matchNoteAndNote>

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

M d i d difi d l ( di )Moduri de codificare a datelor (encoding)

Literal – urmează exact o definiţie XML Schema

SOAP – urmează regulile de codificare descrise în specificaţiaSOAP urmează regulile de codificare descrise în specificaţiaSOAP; se pot produce referinţe la tipuri de date definite în mesaj

Teoretic este posibilă orice combinaţie între tip de comunicare şimod de codificare

Practic: se utilizează de obicei fie stilul RPC şi codificarea SOAP, fie stilul document şi codificarea literalfie stilul document şi codificarea literal

58IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Servicii REST

59IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

REST

REpresentational State Transfer

Client‐server

Stateless

Cached

Uniform interface

Layered system

(Code on demand)

60IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Motivation What is Web 2.0?

Commonly associated with web applications that facilitate interactive informationCommonly associated with web applications that facilitate interactive information sharing, interoperability, user‐centered design and collaboration on the WWW1.Usually connected with the notions of read‐write web, social web but also programmable web2.p g

Typical characteristics of Web 2.0 applicationsUsers can produce and consume data on a Web 2.0 siteWeb is used as a participation platformUsers can run software applications entirely through a Web browserData and services can be easily combined to create mashups

1

61IDP – Instrumente pentru Dezvoltarea Programelor

1 Taken from http://en.wikipedia.org/wiki/Web_2.0

2 http://www.programmableweb.com

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

MotivationMotivationExamples

62IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Motivation

F b k I l f f i f i l k Facebook ‐ Internet platform for creation of social networksMore than 400 million active users 50% of our active users log on to Facebook in any given day More than 35 million users update their status each day More than 60 million status updates posted each day More than 3 billion photos uploaded to the site each month p pMore than 5 billion pieces of content (web links, news stories, blog posts, notes, photo albums, etc.) shared each week More than 3.5 million events created each month More than 3 million active Pages on FacebookMore than 1.5 million local businesses have active Pages on Facebook

63IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Motivation

Wikipedia ‐ Free Online Encyclopedia3,315,577 Articles (English Wikipedia)1

12,485,100 registered users1

Cl h i bi d ith h i t lliClever mechanisms combined with human intelligenceHigh quality articlesSelf‐organized controlSemi‐openess

64IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

MotivationMotivationExample Mashup: Housingmaps.com

65IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

lConceptual Overview

Requirements supported by REST‐enabled systems stem from the requirements addressed by any system following Web architecture1: Simplicity

•Low barrier of entry, fast adoption of Web APIs.Extensibility

•Allowing growth and flexibility.Distributed hypermedia

•Relying on the established concepts of hyperlinked content.Scalability at the Web levelScalability at the Web level

•Should rely on technologies/protocols supporting scalable solutions.Independent deployment

C i t f ld d

66IDP – Instrumente pentru Dezvoltarea Programelor

•Coexistence of old and new

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRequirements ‐ Simplicity

Participation in the creation of information is voluntaryLow entry‐barrier is necessary

Hypermedia has simple and general user interfaceTh i t f i d f ll i f tiThe same interface is used for all information sourcesHypermedia relationships are flexible – unlimited structuring Users can be guided through reading by manipulating linksSimple queries are incorporated for searching purposesp q p g p p

Partial availability of the overall system doesn’t prevent the authoring of the contentHypermedia authoring language is simple and capable of using existing toolsUnavailability of referenced information allows further authoringReferences to the content are easily exchanged

67IDP – Instrumente pentru Dezvoltarea Programelor

Communication can be viewed and interactively tested by developers

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRequirements ‐ Extensibility

User requirements change over time just as society does

The system must avoid locking to the deployed solutionsThe limitations must be easily resolvable

A system with the goal to be long lived as the Web must be prepared for A system with the goal to be long‐lived as the Web must be prepared for change.

68IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRequirements – Distributed Hypermedia

Hypermedia includes application control information embedded within the presentation of information.

Distributed hypermedia allows the content and control information to be stored at remote locations.Transfer of large amounts of data is needed while a user interacts with contentTransfer of large amounts of data is needed while a user interacts with content.

Users are quite sensitive to perceived latencyTime between link selection and information renderingInformation is distributed across the global networkNetwork interactions must be minimized.

69IDP – Instrumente pentru Dezvoltarea Programelor

Network interactions must be minimized. 

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRequirements – Internet Scale

The Web is Internet‐scale distributed hypermedia system

Th W b h bl f hi l bili The Web must answer to to the problem of anarchic scalabilityThe constituent systems are not centrally managed neither have a common goalParts must continue to operate even under unanticipated load, or when given malformed or maliciously constructed data.

Security becomes a significant concerny gMultiple trust boundaries may be present in any communicationAdditional authentication must be in place before trust can be givenAuthentication may degrade scalability

70IDP – Instrumente pentru Dezvoltarea Programelor

Authentication may degrade scalability

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRequirements – Independent Deployment

Systems must be prepared for gradual and fragmented changeOld and new implementations may co‐exist without preventing the new implementations to achieve their full potential.

Existing design decisions must acknowledge future extensions.

Old systems must be easily identifiableLegacy behavior can be encapsulated without impacting newly deployed subsystemsy

The architecture must allow deployment of new elements in a partial and iterative fashion

71IDP – Instrumente pentru Dezvoltarea Programelor

iterative fashionNot possible to enforce deployment order.

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRepresentational State Transfer (REST)

R t ti l St t T f (REST) Representational State Transfer (REST)A style of software architecture for distributed hypermedia systems such as the World Wide Web. 

REST is basically client/server architectural styleRequests and responses are built around the transfer of "representations" of "resources".

Architectural style meansSet of architectural constraints.Not a concrete architecture.Not a concrete architecture.An architecture may adopt REST constraints.

HTTP is the main and the best example of a REST style implementation

72IDP – Instrumente pentru Dezvoltarea Programelor

But it should not be confused with REST

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewMajor REST principles

Information is organized in the form of resourcesgSources of specific information,Referenced with a global identifier (e.g., a URI in HTTP).

Components of the network (user agents and origin servers) communicate via a p ( g g )standardized interface (e.g., HTTP)exchange representations of these resources (the actual documents conveying the information).

Any number of connectors (e.g., clients, servers, caches, tunnels, etc.) can mediate the request, but each does so without being concern about anything but its own requestan application can interact with a resource by knowing two things: the identifier of thean application can interact with a resource by knowing two things: the identifier of the resource and the action requiredno need to know whether there are caches, proxies, gateways, firewalls, tunnels, or anything else between it and resourceThe application needs to understand the format of the information (representation)

73IDP – Instrumente pentru Dezvoltarea Programelor

The application needs to understand the format of the information (representation) returned.

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewREST Architectural Constrains (1)

Client‐serverSeparation of concerns

• Clients are separated from servers by a uniform interface. Networking

•Clients are not concerned with data storage, which remains internal to each g ,server, so that the portability of client code is improved. Servers are not concerned with the user interface or user state, so that servers can be simpler and more scalable. 

Independent evolution•Servers and clients may also be replaced and developed independently, as long as the interface is not altered.

74IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewREST Architectural Constrains (2)

Stateless communicationScalability, reliability

•No client context being stored on the server between requests. Each request from any client contains all of the information necessary to service the request.

Resources are conversationally stateless•Any conversational state is held in the client.

Uniform InterfaceSimplicity (vs. efficiency)Large‐grained hypermedia data transferExample: Create, Retrieve, Update, Delete

75IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewREST Architectural Constrains (3)

CachingEfficiency, scalability

•Well‐managed caching partially or completely eliminates some client‐server interactions, further improving scalability and performance.

Consistency issues•As on the World Wide Web, clients are able to cache responses. Responses must therefore, implicitly or explicitly, define themselves as cacheable or not, to prevent clients reusing stale or inappropriate data in response to further p g pp p prequests. 

Code‐on‐demandExtending client functionality

•Servers are able to temporarily extend or customize the functionality of a client by transferring to it logic that it can execute. Examples of this may i l d il d t h J l t d li t id i t h

76IDP – Instrumente pentru Dezvoltarea Programelor

include compiled components such as Java applets and client‐side scripts such as JavaScript.

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewRESTful Web Service definition

A RESTful Web service is:A set of Web resources.Interlinked.Data‐centric, not functionality‐centric.Machine‐oriented.

Like Web applications but for machines Like Web applications, but for machines.

Like WS‐*, but with more Web resources.

77IDP – Instrumente pentru Dezvoltarea Programelor

WS-* stands for a variety of specifications related to SOAP-based Web Services.

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual Overview

listEntries()

Conceptual OverviewWS- vs REST: A quick comparison

WS‐collectionservice

listEntries()addEntry()getEntry()

d l t E t ()deleteEntry()updateEntry()

collectionlistEntries()addEntry()

RESTful

entryentry

y()

getEntry()deleteEntry()

78IDP – Instrumente pentru Dezvoltarea Programelor

yentryentrydeleteEntry()

updateEntry()

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewWS- vs REST: A quick comparison

A SOAP service (WS‐) has a single endpoint that handles all the operations – therefore it has to have an application‐specific interfaceinterface.

A RESTf l i h b f (th ll ti h A RESTful service has a number of resources (the collection, each entry), so the operations can be distributed onto the resources and mapped to a small uniform set of operations.

79IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual OverviewConceptual OverviewHigh-level example: hotel booking

Hotel booking service

searchhoteli f

service description

searchresults

info

description

payment

confirmationmy bookings

p y

80IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual Overview

H l b ki kfl

Conceptual OverviewHigh-level example: hotel booking

Hotel booking workflow1. Retrieve service description2 S b i h i i di d i i2. Submit search criteria according to description3. Retrieve linked details of interesting hotels4 S b it t d t il di t l t d t4. Submit payment details according to selected rate 

description5. Retrieve confirmation of booking5. Retrieve confirmation of booking

2b R i li f ' b ki

81IDP – Instrumente pentru Dezvoltarea Programelor

2b.Retrieve list of user's bookings

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

Conceptual Overview

search(date, city) li t f h t l & t

Conceptual OverviewHigh-level example: hotel booking

hypermedia -> operations

Hotel booking service

searchresults

hotelinfo

Hotel booking service

searchresults

hotelinfo

list of hotels & rates

getHotelDetails(hotel)

hotel detailsservice

description

results

confirmationmy bookings

payment

service description

results

confirmationmy bookings

payment

reserve(rate, creditCard) confirmationID

confirmationmy bookings confirmationmy bookingsgetConfirmationDetails(confID)

confirmation details

li M B ki ()listMyBookings() list of confirmationIDs

nouns vs. verbs

82IDP – Instrumente pentru Dezvoltarea Programelor

Platformă de e‐learning și curriculă e‐content pentru învățământul superior tehnic

h lTechnologies

Todays’s set of technologies, protocols and languages used to apply RESTfulparadigm:HTTP as the basisXML and JSON for data exchangeAJAX for client‐side programming (e.g. browser)

There exists an attempt to develop WSDL‐like definition language for describing RESTful servicesdescribing RESTful servicesWeb Application Description Language (WADL)

83IDP – Instrumente pentru Dezvoltarea Programelor