====== Architektury orientované na služby ====== * Stránky předmětu: [[https://cw.felk.cvut.cz/doku.php/courses/a4m36aos/start| web]] * Přednášející: * Cvičící: ===== Cvičení ===== Jestli hlásí Eclipse chybu typu "missing atefact cxf-tools-wsdlto-databinding-jaxb", smažte obsah adresáře: .m2/repository/org/apache/cxf/cxf-tools-wsdlto-databinding-jaxb/2.2.10 .m2 je v domovském adresáři. ===== Zkouška ===== * [[https://docs.google.com/document/d/1IU4NpJCcjJ7J_uYk0X8AOigcH31CEtUoum9rekKHOOc/edit?hl=en&authkey=CPLtoYQN|Poznámky z učení]] ~~DISCUSSION~~ ===== Zkouška 20.1.2017 ===== === Bottom-up, Top-down - popis, srovnání, příklad postupu, příklad postupu pro klienta === === BPEL === === Ontologie - popis, výhody, napsat příklady a popsat je === === Hashovací funkce, Digitální podpis - popis, k čemu se používá === === Websockety - jaké se používají funkce === === 5 otázek ANO/NE === ===== Zkouška 13.1.2014 ===== === Stateless vs statefull a příklady využití (jak kladné tak záporné) === === Co je to WSDL (nakreslit diagram vůbec nevím co tam chtěl) === === Orchestrace, choreografie a mashup === === Bezpečnost služeb, end-to-end, point-to-point === === OWL, co je to ontologie k čemu slouží výhody nevýhody. === ===== Zkouška 22.1.2015 ===== === Kódování zpráv - vlastnosti, příklady === === BPEL === === Ontologie - způsoby zachyecní === === Bezpečnost služeb, end-to-end === === WebSocket - události === ===== Zkouška 13.1.2014 ===== === Stateless vs statefull a příklady využití (jak kladné tak záporné) === === Co je to WSDL (nakreslit diagram vůbec nevím co tam chtěl) === === Orchestrace, choreografie a mashup === === Bezpečnost služeb, end-to-end, point-to-point === === OWL, co je to ontologie k čemu slouží výhody nevýhody. === ===== Zkouška 19.12.2013 ===== Jedna hodina, 5 otazek (prvni odevzdavali uz po pul hodine), **NENÍ MINIMUM :-)** === Idempotent request === === XML === === srovnat BPEL a WSDL === === hashovací funkce === === MVC v kontextu služeb, životnost jednotlivých částí M,V, a C === ===== Zkouška 20.12.2012 ===== Jedna hodina, 5 otazek (prvni odevzdavali uz po pul hodine) - vse viz lonske terminy === SOA vs RPC === Pozor u této otázky chce slyšet "Rozdíl mezi SOA a RPC je...". Napsal jsem mu tam, co je to RPC, co je to SOA a dostal jsem 0 bodů! === Idempotent request === === BPEL === === XML === === Semantic service === ===== Zkouška 10.01.2012 ===== 1. Stateless x Statefull (srovnání, výhody, nevýhody, příklady použití) 2. Bottom-up, Top-down (srovnání, příklad postupu, příklad postupu pro klienta) 3. RPC (obrázek, vysvětlit, výhody, nevýhody) 4. UDDI (vysvětlit, obrázek použití, části) 5. REST-SOA (vysvětlit, technologie, výhody, nevýhody) ===== Zkouška 20.12.2011 ===== Jedna hodina, 6 otazek: === stateful vs. stateless === == Stateful == Stavová služba si drží session mezi klientem a serverem. Session je typicky uložena někde v paměti, takže se hůře škáluje (pokud máme hodně klientů musíme si někde držet kontext pro každého klienta zvlášť). == Stateless == Bezestavový znamená, že server si nedrží žádnou session. Každý request je izolovaná transakce (request musí obsahovat všechny potřebná data) a nemá vztah k žádnému předchozímu requestu. Typicky HTTP atd. Stateless služby se lépe škálují, lépe se zpracovávají chyby, jsou spolehlivější atd. === bottom-up vs. top-down, vyhody, nevyhody === == Bottom-up == Nejprve navrhneme třídu/rozhraní a pak vygenerujeme [[http://en.wikipedia.org/wiki/Web_Services_Description_Language|WSDL]] Jednodušší přirozený přístup, může zavést platformové či jazykové závislosti == Top-down == Nejdříve vytvoříme [[http://en.wikipedia.org/wiki/Web_Services_Description_Language|WSDL]] a pak z něj vygenerujeme rozhraní tříd. Vypadá složitěji (kdo se má s tím balatem XML patlat), vede k čistšímu designu (navrhujeme rozhraní). === XML, vyhody, nevyhody === == Výhody == - lidsky čitelný formát - strong typing, validace XSD, DTD == Nevýhody == - neefektivní (ukecanost, spousta datového balastu) === orchestrace vs. choreografie === == Orchestrace == - popisuje uspořádání, koordinaci a řízení služeb - reprezentována pomocí [[http://en.wikipedia.org/wiki/Business_Process_Execution_Language|BPEL]] - koordinace událostí v procesu == Choreografie == - spolupráce několika stran (služeb) - je popsána jazykem Choreography Description Language (WS-CDL), rozšíření WSDL - popisuje formát zpráv - aplikuje se ke sdílení spolupráce skrze autonomní systémy - může být použita k monitorování zasílání zpráv === Semantic services === Je komponenta (webová služba) sémantického webu, protože obsahuje data v machine-readable formátu. === end-to-end vs. point-to-point security === == end-to-end == Princip end-to-end je založen na tom, že pokud je to možné, měly by být operace komunikačního protokolu definovány tak, aby byly prováděny buď v koncových bodech komunikačního systému, nebo co nejblíže zařízení, které je ovládáno. [[http://en.wikipedia.org/wiki/SOAP|SOAP]] zpráva má vlastní ochranu. == point-to-point == Přímá komunikace mezi dvěma uzly. Účastníci komunikace mohou vidět zprávy v plain-text formátu. ===== Zkouška 4.1.2012 ===== === Idempotent request === Přijaté duplicitní požadavky mají stejný efekt jako unikátní požadavek. Toto omezení umožní poskytovateli a klientovi zlepšit celkovou spolehlivost služby pouze tím, že se v případě výskytu chyby požadavek zopakuje. === WSDL co to je, k čemu se to využívá, jaké to má výhody a nevýhody === * [[http://en.wikipedia.org/wiki/Web_Services_Description_Language|Web Service Description Language]] * jazyk pro popis webových služeb postavený nad XML * definuje službu jako kolekci network endpoints * popisuje interface služby == Výhody == * lidsky čitelný formát * strong typing, validace XSD, DTD == Nevýhody == * neefektivní (ukecanost, spousta datového balastu) === RPC, nakreslit obrázek, diskutovat nad výhodami a nevýhodami === * [[http://en.wikipedia.org/wiki/Remote_procedure_call|Remote Procedure Call]] * dovoluje programu vykonat proceduru, která může být uložena na jiném místě než je umístěn sám volající program * základ pro [[http://en.wikipedia.org/wiki/Distributed_Component_Object_Model|DCOM]] a [[http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture|CORBA]] * múže spadnout na nepredikovatelných chybách sítě {{:courses:rpc.png?400}} === BPEL nakreslit příklad diagramu, kde se využívá === * [[http://en.wikipedia.org/wiki/Business_Process_Execution_Language|Business Process Execution Language]] * jazyk pro skládání webových služeb * slouží pro orchestraci webových služeb * vytvořeno BEA, IBM a M$ * definuje business procesy, které interagují se vzdálenými entitami skrze webové služby * postaveno nad XML * podporuje implicitní vytvoření a ukončení instancí procesů * definuje long-running transakce a recovery v případě pádu {{:courses:bpel-orchestration.gif|}} {{:courses:bpel_arch.png|}} === OWL === * [[http://en.wikipedia.org/wiki/Web_Ontology_Language|Web Ontology Language]] * je to kolekce jazyků pro reprezentaci znalostí * je charakteristický formální sémantinkou RDF/XML-based serializací pro [[http://en.wikipedia.org/wiki/Semantic_Web|Sémantický web]] === Hashovaci funkce, co to je, k čemu to je a jaké to má vlastnosti === [[http://en.wikipedia.org/wiki/Hash_function|Hašovací funkce]] je matematická funkce pro převod vstupních dat do (relativně) malého čísla. Hašování v základní variantě dovoluje testovat vstupní data na shodu, tedy rovnost. Nezachovává podobnost dat ani uspořádání. == Vlastnosti == * jakékoliv množství vstupních dat poskytuje stejně dlouhý výstup (otisk) * malou změnou vstupních dat dosáhneme velkou změnu na výstupu (tj. výsledný otisk se od původního zásadně na první pohled liší) * z hashe je prakticky nemožné rekonstruovat původní text zprávy * v praxi je vysoce nepravděpodobné, že dvěma různým zprávám odpovídá stejný hash, jinými slovy pomocí hashe lze v praxi identifikovat právě jednu zprávu (ověřit její správnost). == Použití == * hashovací tabulky (key -> value) * kontrola integrity dat [[http://cs.wikipedia.org/wiki/Cyklick%C3%BD_redundantn%C3%AD_sou%C4%8Det|CRC]] * kryptování ===== Zkouška 11.1.2012 ===== === Idempotent request === Viz předchozí termín === SOA vs RPC === SOA (Service Oriented Architecture) - je architektura systému (aplikace), může využívat REST, SOAP * je to množina flexibilních principů (patterns) použita při návrhu a integraci aplikace * poskytují volně integrovanou sadu služeb, které mohou být použity v rámci více business domains * definuje, jak integrovat široce nesourodé aplikace pro svět, který je distribuovaný a používá více implementačních platforem * definuje rozhraní protokolů a metod * vyžaduje loose coupling služeb a dalších technologií, které tvoří základ aplikace * rozděluje fukce do jednotek (služeb) * zapouzdření * loose coupling * znovupoužitelnost * autonomita služeb V podstatě SOA je architektura systému a RPC je způsob komunikace (volání vzdálené služby). === RPC === Viz předchozí termín === Choreografie === Viz předchozí termín === OWL === Viz předchozí termín === Hashovaci funkce === Viz předchozí termín ===== Slovník pojmů ===== ==== REST ==== [[http://en.wikipedia.org/wiki/Representational_state_transfer|REpresentational State Transfer]] * je to architektonický styl * stateless * založeno na HTTP * metody: HEAD, GET, PUT, POST, DELETE * formáty: * XML * XML-RPC * JSON * YAML ==== RESTful ==== * je označení webové služby, která splňuje následující podmínky: * client-server komunikace * stateless * cachable * layered * uniform interface * code on demand (optional) ==== SOAP ==== * [[http://en.wikipedia.org/wiki/SOAP|Simple Object Access Protocol]] * specifikace pro výměnu strukturovaných informací pomocí webových služeb * využívá protokoly aplikační vrstvy (HTTP, RPC) * postaveno na WSDL a UDDI * navrženo jako object-access protokol ==== UDDI ==== * [[http://en.wikipedia.org/wiki/Universal_Description_Discovery_and_Integration|Universal Description Discovery and Integration]] * platformově nezavislý xml-based registr webových služeb * white pages * yellow pages * green pages ==== CORBA ==== * [[http://en.wikipedia.org/wiki/Common_Object_Request_Broker_Architecture|Common Object Request Broker Architecture]] * standard, který umožňuje komunikace mezi různými platfomami a jazyky * jazykově a platformě nezávislé * strong typing * CORBA Interface Definition Language * transakce a security {{:courses:corba.png|}} ==== Choreografie ==== * spolupráce několika stran (služeb) * je popsána jazykem Choreography Description Language (WS-CDL), rozšíření WSDL * popisuje formát zpráv * aplikuje se ke sdílení spolupráce skrze autonomní systémy * může být použita k monitorování zasílání zpráv * typy: === abstraktní === * definuje typ informací * definuje sekvence a podmínky * nedefinuje fyzickou strukturu zpráv * endpoints * řízení zpráv === portabilní === * definuje fyzickou strukturu zpráv (WSDL, ...) * definuje detaily použité technologie (security, reliability) * pravidla k řízení výměny zpráv