Web Services Introduction Jan Odstrčil
Přehled Web services - technologie WSDL, SOAP, UDDI Advanced Web services Web services – aplikace a použití Platformy pro Web services WS-I – úvodní představení WS-I Basic Profile 1.1 Otázky a odpovědi
Web services - technologie Nezávislá na platformě, jazyce, hardware Samopopisující, loosely coupled Založená na standardech Internetu a XML WSDL – jazyk pro popis Web services založený na XML XSD – datové typy popsány v XML Schema SOAP – protokol pro výměnu zpráv založených na XML HTTP typicky využíváno jako transportní vrstva UDDI – platformově nezávislá service registry založené na XML
Web services - technologie
WSDL Web Services Description Language otevřený standard podporovaný W3C popis služby a její komunikace v XML využívá XML Schema pro popis typů
WSDL Definitions Types Message hlavní tag uzavírající dokument sekce pro definici datových typů obsahuje komplexní typy jako XML Schema Message definice zprávý – jak příchozí tak odchozí Definuje parametry a návratové hodnoty
WSDL Operation PortType Definuje operaci (metodu) služby Obsahuje obvykle input a output message PortType definuje rozhraní Web service deklarativně obsahuje operace Nehovoří o určité instanci, nelze se připojit
WSDL Binding Port Service definuje způsob jak se budou posílat zprávy Konkrétní protokol a datový formát (document/literal, rcp/encoded) Port endpoint – adresa a binding Service skupina souvisejících endpointu
WSDL <?xml version="1.0"?> <definitions name="StockQuote" targetNamespace="http://example.com/stockquote.wsdl" xmlns:tns="http://example.com/stockquote.wsdl" xmlns:xsd1="http://example.com/stockquote.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema targetNamespace="http://example.com/stockquote.xsd" xmlns="http://www.w3.org/2000/10/XMLSchema"> <element name="TradePriceRequest"> <complexType> <all> <element name="tickerSymbol" type="string"/> </all> </complexType> </element> <element name="TradePrice">
WSDL <message name="GetLastTradePriceInput"> <part name="body" element="xsd1:TradePriceRequest"/> </message> <message name="GetLastTradePriceOutput"> <part name="body" element="xsd1:TradePrice"/> <portType name="StockQuotePortType"> <operation name="GetLastTradePrice"> <input message="tns:GetLastTradePriceInput"/> <output message="tns:GetLastTradePriceOutput"/> </operation> </portType>
WSDL <binding name="StockQuoteSoapBinding" type="tns:StockQuotePortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="GetLastTradePrice"> <soap:operation soapAction="http://example.com/GetLastTradePrice"/> <input> <soap:body use="literal"/> </input> <output> </output> </operation> </binding> <service name="StockQuoteService"> <documentation>My first service</documentation> <port name="StockQuotePort" binding="tns:StockQuoteBinding"> <soap:address location="http://example.com/stockquote"/> </port> </service> </definitions>
WSDL Documentation – wsdl je samo-dokumentované Import - dokumenty je možné importovat vhodné pro oddělení statické definice datových typů a portu od instance Instance obsahuje binding, service a import <wsdl:definitions name="nmtoken"? targetNamespace="uri"?> <import namespace=„http://myS.org" location=„ http://myS.org/wsdl/StockType.wsdl"/> <wsdl:documentation>…text… </wsdl:documentation>
SOAP Simple Object Access Protocol Protokol pro výměnu zpráv založených na XML HTTP typicky využíváno jako transportní vrstva SMTP také vhodný pro transport SOAP
SOAP Různé druhy kódování zpráv Definováno v binding sekci WSDL RPC / Encoded Document / Literal Wrapped / Literal Definováno v binding sekci WSDL
SOAP rpc/encoded public void myMethod(int x, float y); <message name="myMethodRequest"> <part name="x" type="xsd:int"/> <part name="y" type="xsd:float"/> </message> <message name="empty"/> <portType name="PT"> <operation name="myMethod"> <input message="myMethodRequest"/> <output message="empty"/> </operation> </portType>
SOAP rpc/encoded <soap:envelope> <soap:body> <myMethod> <x xsi:type="xsd:int">5</x> <y xsi:type="xsd:float">5.0</y> </myMethod> </soap:body> </soap:envelope> Jednoduchý zápis ve wsdl Jméno operace je v message – rychlé předání implementaci Type encoding info (xsi:type="xsd:int") zabírá moc místa Není ve shodě s WS-I
SOAP wrapped/literal <soap:envelope> <soap:body> <myMethod> <x>5</x> <y>5.0</y> </myMethod> </soap:body> </soap:envelope> Složitý zápis ve wsdl Jméno operace je v message – rychlé předání implementaci Type encoding info (xsi:type="xsd:int") zabírá moc místa Je ve shodě s WS-I
UDDI Universal Description, Discovery and Integration otevřený standard podporovaný OASIS umožňuje publikaci, vyhledávání, kategorizaci v počátcích globální UDDI registry (MS, IBM, SAP) 3 základní komponenty White Pages — adresy, kontakty Yellow Pages — kategorizace podle standardních taxonomii; Green Pages — technické informace o services zveřejněných společnostmi
UDDI businessEntity businessService bindingTemplate tModel informace o straně publikující service businessService popisné informace o určité skupině technických services bindingTemplate technické informace endpointu služby a implementační specifikaci tModel popis specifikaci pro služby, základ pro technícký popis
UDDI
UDDI <tModel authorizedName="..." operator="..." tModelKey="..."> <name>StockQuote Service</name> <description xml:lang="en"> WSDL description of a standard stock quote service interface </description> <overviewDoc> <description xml:lang="en">WSDL source document. </description> <overviewURL> http://stockquote-definitions/stq.wsdl </overviewURL> </overviewDoc> <categoryBag> <keyedReference tModelKey="uuid:C1ACF26D-9672-4404-9D70-39B756E62AB4" keyName="uddi-org:types" keyValue="wsdlSpec"/> </categoryBag> </tModel>
Advenced Web services WS - Reliable Messaging WS - Attachment jednoduché posílání, spolehlivé WS - Attachment posílání velkých dokumentů / binárních WS – Security rozšíření SOAP message o security chrání pomocí integrity zprávy message authentication
Web services – aplikace a použití Více než informace o počasí Aplikace dostupné jako služba „masám“ Google Search API, eBay SalesForce (CRM, lze rozšířit, integrovat) Mobile Portal Content Integrační scénáře banka koupí banku jedna divize s druhou Intereoperabilita vítězí nad „efektivitou“
Web services – aplikace a použití
Platformy pro Web services
Platformy pro Web services Microsoft .Net Apache Axis Sun J2EE, JAX-WS JAX-B Systinet Server for Java / C++ webMethods Glue IONA Artix IBM
WS-I – úvodní představení Web Services Interoperability Organization Otevřená organizace zaměřená na podporu interopertabilty Web services různé platformy, jazyky, operační systémy Přibližně 130 členů: BEA, IBM, Accenture, CA, DaimlerChrysler, DISA, HP, Microsoft, Nokia, OMG, SAP, Sun, webMethods
WS-I – doporuční, profiles, tools Samotná specifikace obvykle nestačí nepřesná, konflikt s jinou specifikací / verzí Poskytuje doporučení, návody a nástroje profile – sada specifikací určité verze, říká jak je používat dohromady demo aplikace – demonstruje interoperabilitu profilu testovací nástroje – testují shodu implementace s profilem
WS-I – rozšířené služby Pro členy poskytuje další služby Organizuje interoperability setkání několikadenní setkání na určité téma snaha o živé ověření interoperability a případné testování Publikuje výsledky o interop setkáních Organizuje poskytování testovacích Web service pro pravidelné testy
WS-I – existující profily XML Schema Work Plan Basic Profile 1.1 Attachment Profile 1.0 Basic Security Profile 1.1
WS-I Basic Profile 1.1 Sada Web services specifikací rozšířená o vyjasnění, upřesnění, rozvedení, interpretace Zaměřuje se na: Zprávy (SOAP) Popis služeb (WSDL, XSD) Publikace a vyhledávání služeb (UDDI) Zabezpečení (HTTPS)
WS-I Basic Profile 1.1 Conformance requrements Conformance Targets požadavané kritérium které je třeba splnit MUST, SHOULD, MAY Conformance Targets Indikuje na co je Conformance requrements aplikován SOAP message WSDL document UDDI tModel
WS-I Basic Profile 1.1 Conformance requrements Conformance Targets požadavané kritérium které je třeba splnit MUST, SHOULD, MAY Conformance Targets Indikuje na co je Conformance requrements aplikován SOAP message WSDL document UDDI tModel
BP 1.1 Test Assertions Dokument obsahuje sadu testovacích assertion Assertion je ve stavu OK nebo FAILED Testovací tool implementuje požadované assertions a generuje reporty o stavu
WSDL Assertions - ukázka BP2700 The wsdl:definitions is a well-formed XML 1.0 document BP2202 The XML declaration statement uses UTF-8 or UTF-16 for the encoding. BP2098 The "location" attribute is specified for the wsdl:import element, and has a non-empty value. BP2104 The targetNamespace attribute on the wsdl:definitions element for the imported WSDL description has the same value as the namespace attribute on the wsdl:import element that imported the WSDL description.
UDDI a SOAP Assertions BP3002 BP1004 The uddi:bindingTemplate element contains a uddi:accessPoint element, with a non-empty value. BP1004 The request message is a POST message, without any use of framework extension.
Otázky a odpovědi