a popis webových služeb Marek Rychlý Vysoké učení technické v Brně Fakulta informačních technologií Ústav informačních systémů Přednáška pro IOA 1. října 2014 Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 1 / 28
Obsah 1 Životní cyklus služby v SOA SOA Governance Nasazení služby Oracle SOA Maturity Model 2 3 Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 2 / 28
SOA Governance Nasazení služby Oracle SOA Maturity Model Vývoj softwarového systému jako SOA/SCA SOA/SCA implementuje SW jako komponentový systém služby navrženy a implementovány podle principů SOA (standardizace, volné vázání, abstrakce, znovupoužitelnost, nezávislost, bezstavovost, dohledatelnost a kompozice) jednotlivé služby mají samostatný životní cyklus (tzn. vývoj, nasazení, aktualizace, atd. nezávisle na stavu celého systému) životní cyklus služby můžeme rozdělit na dvě části design-time fáze návrhu a implementace služby run-time fáze provozu a správy služby životní cyklus služby řízen v rámci SOA Governance na životním cyklu se podílejí různé role (business analytik, IT architekt, návrhář, progr., sys. admin., vlastník procesu,... ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 4 / 28
SOA Governance Životní cyklus služby v SOA SOA Governance Nasazení služby Oracle SOA Maturity Model průnik Business & IT Governance (zasahuje do business procesů i do IT) spravuje životní cykly služeb/soa (tak, aby SOA přinesla business hodnotu/zisk) životní cyklus SOA (jednotlivé fáze z pohledu podpory businessu) 1 Model = Plan 2 Assemble = Define 3 Deploy = Enable 4 Manage = Measure (diagram převzat z SOA governance: Examples of service life cycle management processes ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 5 / 28
SOA Governance Nasazení služby Oracle SOA Maturity Model Životní cyklus služby z pohledu SOA Governance (diagram převzat z Oracle Fusion Middleware Concepts and Architecture for Oracle Service Bus 11gR1 ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 6 / 28
Nasazení služby Životní cyklus služby v SOA SOA Governance Nasazení služby Oracle SOA Maturity Model po návrhu a implementaci je služba připravena k nasazení služba je nahrána (deployed) na aplikační server(y) (popis rozhraní a umístění služby v její WSDL dokumentu) služba je publikována (published) v registrech (dohledatelná, např. přes UDDI; většinou se nepublikuje) aplikační server udržuje jednu nebo více instancí služby (počet instancí záleží na vytíženosti služby) jednotlivé instance mohou běžet/čekat, zpracovávat dotaz, být v chybovém stavu, být pozastaveny, atp. nejen služba, ale i její instance mají životní cyklus cyklus instance závisí na použité technologii/způsobu volání (např. podle W3C s WS Management: Service Life Cycle, na možnostech SOA kontejneru, na synchronním/asynchronním způsobu komunikace, atp.) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 7 / 28
SOA Governance Nasazení služby Oracle SOA Maturity Model Životní cyklus instance služby podle W3C (diagramy převzaty z Web Service Management: Service Life Cycle ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 8 / 28
Oracle SOA Maturity Model SOA Governance Nasazení služby Oracle SOA Maturity Model Popisuje v pěti fázích postupné zavádění SOA do organizace (pět úrovní zvládnutí SOA Governance) 1 Oppurtunistic bez systematického nasazení SOA (SOA využívána pouze v některých projektech, žádná governance) 2 Systematic se správou portfolia služeb v SOA (SOA pro znovupoužitelnost, správa životního cyklu služeb) 3 Enterprise s napojením služeb SOA na business procesy (služby z business procesů, implementace pomocí BPEL a business rules) 4 Measured sledována kvalita služeb z business pohledu (SOA jako nástroj pro měření skutečného průběhu business procesů) 5 Industrialised SOA optimalizuje business procesy za běhu (správa událostí, SOA reaguje na stav business procesů; EDA&CEP) analogie s Capability Maturity Model (CMM) (pět úrovní zvládnutí process managementu) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 9 / 28
SOA Governance Nasazení služby Oracle SOA Maturity Model Strategic Goals & Tactical Plans in SOA MM (diagram převzat z Oracle SOA Maturity Model, Griffiths Waite ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 10 / 28
(Web Services) veškeré dokumenty/zprávy Web Services jsou v XML v rámci Web Services se můžeme setkat s popisem zprávy požadavku/odpovědi při volání služeb v SOAP (SOAP = Simple Object Access Protocol) popisem rozhraní a způsobu volání služeb v jazyce WSDL (WSDL = Web Services Description Language) popisem strukturovaných datových typů v rozhraní pomocí XSD (XSD = XML Schema Definition) definice Web Service zahrnuje tvorbu XSD a WSDL dokumentů (tj. popis datových typů, operací, způsobu volání rozhraní služby) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 12 / 28
Jazyk od W3C pro popis struktury/schéma XML dokumentů. (dalšími jazyky jsou např. DTD, Relax NG, Schematron, atd.) W3C XML Schema Definition Language (XSD) 1.1 popsaná v Part 1: Structures Part 2: Datatypes Popis schéma je XML dokument s elementem <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:my="http://mycompany.com/hr/schemas" targetnamespace="http://mycompany.com/hr/schemas" elementformdefault="qualified">... </xs:schema> Obsahuje předdefinované jednoduché typy, další lze zadefinovat. (předdefinované jsou např. string, integer nebo date) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 13 / 28
Definice dokumentů v XSD (příklady uvedeny bez prefixů jmených prostorů) elementy a atributy jednoduchých typů <element name="..." type="..."/> <attribute name="..." type="..." use="required"/> elementy složených typů nebo samotné složené typy <element name="..."><complextype>...</complextype></element> restrikce (omezení, výběry) jako jednoduché typy <simpletype name="..."><restriction base="integer"> <xs:pattern value="[0-9][0-9]"/></restriction></simpletype> <simpletype name="..."><restriction base="string"> <enumeration value="one"/>...</restriction></simpletype> sekvence elementů jako složené typy (řazené) <sequence><element name="..." type="..."/> <element name="..." type="..."/></sequence> množiny elementů jako složené typy (neřazené) <all><element name="..." type="..."/> <element name="..." type="..."/></all>... a další (vizte XML Schema Reference) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 14 / 28
Příklad popisu v XSD <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:my="http://mycompany.com/hr/schemas" targetnamespace="http://mycompany.com/hr/schemas" elementformdefault="qualified"> <xs:element name="holidayrequest"> <xs:complextype><xs:all> <xs:element name="holiday" type="my:holidaytype"/> <xs:element name="employee" type="my:employeetype"/> </xs:all></xs:complextype> </xs:element> <xs:complextype name="holidaytype"> <xs:sequence> <xs:element name="startdate" type="xs:date"/> <xs:element name="enddate" type="xs:date"/> </xs:sequence> </xs:complextype> <xs:complextype name="employeetype"> <xs:sequence> <xs:element name="number" type="xs:integer"/> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:schema> Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 15 / 28
Příklad XML dokumentu podle uvedeného popisu Uvedenému popisu vyhovuje např. následující dokument <?xml version="1.0" encoding="utf-8"?> <HolidayRequest xmlns="http://mycompany.com/hr/schemas"> <Holiday> <StartDate>2006-07-03</StartDate> <EndDate>2006-07-07</EndDate> </Holiday> <Employee> <Number>42</Number> <FirstName>Arjen</FirstName> <LastName>Poutsma</LastName> </Employee> </HolidayRequest> Libovolné pořadí elementů umístění Holiday a Employee. (ale pevné pořadí jejich pod-elementů) Platné datum formátované jako YYYY-MM-DD. (datový typ definovaný ve specifikace XML Schema)..................................................................... Příklady XSD a WSDL převzaty z Spring Web Services: Reference Documentation. Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 16 / 28
W3C zavedla WSDL jako standard pro XML popis webových služeb. Jaké funkce poskytuje daná služba? Jak může být s danou službou navázána komunikace? Kde/kým je daná služba poskytována? Každá služba jako množina koncových bodů (service endpoints). v těchto bodech komunikuje s okolím pomocí zasílání zpráv, (pro jednoduchost si lze koncový bod představit jako rozhraní služby) WSDL poskytuje formální definici koncových bodů: 1 abstraktní popis koncového bodu, (popis rozhraní služby bez ohledu na konkrétní technologie a protokoly) 2 konkrétního popis koncového bodu. (navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 17 / 28
Abstraktní a konkrétní popis ve WSDL Abstraktní popis koncového bodu: popis rozhraní služby bez ohledu na konkrétní technologie a protokoly, tři základní oddíly: message: popis zpráv, které představují operace a jejich parametry. operation: popis operací, jejich vstupní a výstupní parametry, interface: rozhraní služby, tj. poskytované operace, Konkrétní popis koncového bodu: navázání abstraktního popisu na reálnou implementaci a komunikace na konkrétní protokol, tří základních oddíly: binding: formát volání služby, popis protokolu (např. v SOAP) pro jednotlivé operation nebo celé interface, service: popis služby jako seskupení prvků endpoints, endpoint: fyzická adresa, na které je služba přístupná. Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 18 / 28
Ukázka WSDL popisu služby I Definujeme jmenné prostory pro jednotlivé části dokumentu: soap: WSDL popisuje službu pro protokol SOAP, tns: názvy používané v naší aplikaci, xsd: popis protokolu volání služby jako XML dokumentu, <?xml version="1.0" encoding="utf-8"?> <wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:schema="http://mycompany.com/hr/schemas" xmlns:tns="http://mycompany.com/hr/definitions" targetnamespace="http://mycompany.com/hr/definitions"> <wsdl:types> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:import namespace="http://mycompany.com/hr/schemas" schemalocation="hr.xsd"/> </xsd:schema> </wsdl:types> Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 19 / 28
Ukázka WSDL popisu služby II Definujeme zprávy přijímané a navracené danou službou 1 : message: definice vlastní zprávy přenášené při komunikaci, operation: přiřazení zpráv k operacím posytovaným službou. <wsdl:message name="holidayrequest"> <wsdl:part element="schema:holidayrequest" name="holidayrequest"/> </wsdl:message> <wsdl:porttype name="humanresource"> <wsdl:operation name="holiday"> <wsdl:input message="tns:holidayrequest" name="holidayrequest"/> </wsdl:operation> </wsdl:porttype> Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 20 / 28
Ukázka WSDL popisu služby III Popis formátu volání operací pro SOAP a umístění služby 2 : <wsdl:binding name="humanresourcebinding" type="tns:humanresource"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="holiday"> <soap:operation soapaction="http://mycompany.com/requestholiday"/> <wsdl:input name="holidayrequest"> <soap:body use="literal"/> </wsdl:input> </wsdl:operation> </wsdl:binding> <wsdl:service name="humanresourceservice"> <wsdl:port binding="tns:humanresourcebinding" name="humanresourceport"> <soap:address location="http://localhost:8080/holidayservice/"/> </wsdl:port> </wsdl:service> </wsdl:definitions> 1 Elementy types, message a porttype popisují, co služba poskytuje. 2 Element binding popisuje, jak služba komunikuje, a service, kde ji kontaktovat. Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 21 / 28
základní vrstva WS technologie, výměna XML zpráv, patří do aplikační vrstvy pětivrstvého TCP/IP modelu, bezstavový protokol, nezávislé na protokolu a implementaci, (jedním z protokolů komunikace je HTTP/HTTPS protokol) podporuje několik typů volání funkcí služeb, (kde klient posílá XML zprávu na server, nejznámější je implementované Remote Procedure Call (RPC), SOAP vychází ze staršího XML-RPC) definuje strukturu zprávy (obálka kolem hlavičky a těla). (pravděpodobně vychází ze staršího Web Distributed Data exchange (WDDX)) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 22 / 28
Struktura SOAP zprávy (diagram převzat z The Java EE 5 Tutorial ) zpráva = obálka s hlavičkami (nepovinné) a tělem + přílohy (nepovinné) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 23 / 28
Ukázka struktury SOAP zprávy v HTTP protokolu MIME-Version: 1.0 Content-Type: text/xml; charset=utf-8 Content-Transfer-Encoding: 8bit <?xml version="1.0" encoding="utf-8"?> <env:envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/"> <env:header/> <env:body> <r:holidayrequest xmlns:r="http://mycompany.com/hr/schemas"> <r:holiday> <r:startdate>2006-07-03</r:startdate> <r:enddate>2006-07-07</r:enddate> </r:holiday> <r:employee> <r:number>42</r:number> <r:firstname>arjen</r:firstname> <r:lastname>poutsma</r:lastname> </r:employee> </r:holidayrequest> </env:body> </env:envelope> Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 24 / 28
Existuje mnoho scénářů volání služeb přes SOAP Fire-and-forget (one-way) (klient odešle požadavek na službu a déle se nečeká, nic nevrací) Request/Response (odešle požadavek a čeká na odpověd ) Request with acknowledgement (odešle požadavek a čeká na potvrzení příjmu) Remote Procedure Call (RPC) (odešle požadavek se serializovanými parametry volané procedůry a čeká na odpověd opět v podobě serializovaných návratových hodnot)... a další (vizte SOAP Version 1.2 Usage Scenarios ) Synchronní/asynchronní komunikace záleží na transportním protokolu. (např. HTTP(s) synchronní, umí odpovědi, např. narozdíl od emailových zpráv) Samozřejmě je možno implemntovat asynchronicitu na úrovni služby. (požadavek pošle klient metodou fire-and-forget, ale přiloží v něm adresu vlastní služby, která je připravena přijmout odpověd ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 25 / 28
SOA Governance řídí životní cyklus služeb. Aplikační servery spravují životní cyklus instancí služeb. Služba popsána rozhraním ve WSDL, vč. použitých datových typů v XSD. Volání služby jsou popsána v SOAP. Příště? Správa a sledování systémů s architekturou SOA (tvorba jednoduché komponentové aplikace, její publikace na aplikačním serveru, sledování průběhu,... ) Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 27 / 28
Poděkování Tento předmět byl podpořen projektem MŠMT CZ.1.07/2.2.00/15.0163 Vzdělávání v IT pro praxi. Marek Rychlý Životní cyklus služby v SOA a popis webových služeb Přednáška pro IOA, 1. října 2014 28 / 28