Aktuální vydání

celé číslo

04

2024

Průmyslové roboty a automatizace výrobních a montážních linek

celé číslo

Architektúra SOA, Ajax a webové služby

Predmetom článku je stručná charakteristika novej metódy asynchrónnej komunikácie medzi klientom a serverom Ajax v spojení s webovou službou WS (Web Services). V rámci nastupujúcej architektúry SOA (Service Oriented Architecture) majú obe svoje miesto a ich spojením vznikajú nové možnosti diaľkového monitorovania procesov. Podpora tvorby a využívania webových služieb je už súčasťou aktuálnych vývojových prostredí. Popri štandardných prostrediach spojených so vznikom WS ( Java, .NET) je v súčasnosti takáto podpora realizovaná aj vo veľmi rozšírenom prostredí pre tvorbu webových úloh PHP.
 

1. Architektúra SOA

SOA (Service Oriented Architecture) je dnes veľmi častým (až zaužívaným) pojmom, veľa ráz žiaľ používaným aj v nesprávnych súvislostiach. Medzi hlavné charakteristiky SOA patrí voľná viazanosť služieb, asynchrónna komunikácia medzi službami, ich znovupoužiteľnosť, „hrubozrnné“ aplikačné rozhranie API služieb, využívanie odborových štandardov a ukladanie metadát v úložisku. SOA teda nie je konkrétny produkt, firma ani technológia, a už vôbec nie odborový štandard. Marketing niektorých výrobcov sa snaží takéto zdanie vyvolať, čím vytvára zo SOA len ďalšie zaklínadlo (TLA, Three Letter Acronym, buzzword) [9]. Za konkrétne implementácie SOA sú pokladané dve „technológie“ v súčasnosti dominantné – webové služby (WS) a podnikové zbernice služieb (ESB – Enterprise Service Bus). SOA je výsledkom evolúcie predchádzajúcich distribuovaných architektúr, ako napr. RPC (Remote Procedure Call), DCOM (Distributed Component Object Model) a CORBA (Common Object Request Broker Architecture). Definícií SOA je veľa, napr. „široko akceptovaný prístup pre vývoj, prevádzku a integráciu podnikových aplikácií založený na zdieľaných distribuovaných službách“ [10] alebo „voľne viazaná architektúra navrhnutá pre podnikateľské potreby organizácie“ [3]. O rôznosti názorov na SOA veľmi výrečne svedčia rôzne skutočnosti – napr. podľa [10] „desať dodávateľov softvéru poskytne minimálne dvanásť definícií“, podľa iného autora [2] definíciu SOA možno prirovnať k básni Johna Godfreya Saxea o šiestich slepých mužoch a slonovi (obr. 1 prevzatý z [6]; každý z nich popisuje slona trocha ináč, lebo každý je ovplyvnený vlastnou individuálnou skúsenosťou, napr. muž dotýkajúci sa chobotu si myslí, že je to had, podobne sloní kel pripomína inému šíp atď.). Tato skutočnosť je niekedy označovaná ako „slon SOA“ (The SOA Elephant). Známeho Saxeovho slona je možné predstaviť si, a teda aj popísať, lebo je to fyzická entita, zatiaľ čo špecifikovať SOA je oveľa ťažšie, pretože koncepcie systémov nie sú dostupné v ich fyzickej manifestácii [2]. Porovnanie nesprávnych predstáv (mýtov) často spojených so SOA a skutočnosti podľa [3] môže bližšie osvetliť ciele SOA skôr, ako bude pristúpené k implementácii riešenia (tab. 1). Je potrebné zdôrazniť, že SOA nie je cieľom, ale prostriedkom, ktorého efektívnosť sa prejaví najmä v dlhšom období.
 
Medzi najčastejšie opakované chyby pri zavádzaní SOA (podľa spoločnosti Gartner [6]) patrí napr.:
  • zavedenie SOA pred dokončením výkonných celkov, čo vedie k veľkému množstvu služieb (servisov) nekorešpondujúcich s obchodným modelom a vynucujúcich si časté zmeny špecifikácie,
  • opomenutie dátovej vrstvy, ktoré môže mať za následok nekonzistentnosť a problémy s integritou modelu,
  • prenechanie konceptu SOA len technickým pracovníkom, čo môže viesť k produktu síce technicky kvalitnému, avšak nespĺňajúcemu obchodné požiadavky,
  • nedôvera k cudzím (vyvinutým mimo vývojový tím) celkom, dôsledkom čoho je často duplicitná práca a plytvanie zdrojmi,
  • prechod na SOA bez predchádzajúceho plánovania a prípravy,
  • vážne komunikačné problémy zapríčinené tým, že SOA je rôzne chápaná rôznymi profesiami (programátormi, architektmi, technickými a výkonnými vedúcimi),
  • absencia koordinačného centra pre spoluprácu jednotlivých služieb,
  • nevhodná centralizácia využitia SOA v celej spoločnosti, ktorá je často horším riešením ako jeho rozdelenie do oddelení, pobočiek alebo do oblastí využitia.
Pri používaní SOA v praxi je preto potrebný komplexný pohľad na celý systém so všetkými jeho atribútmi – informačnými tokmi, štruktúrou údajov, technickou architektúrou, ale predovšetkým podnikovými procesmi.
 

2. Čo je webová služba

Webová služba (WS) je jednou z možností realizácie služby v architektúre SOA. Z množstva definícií uvedieme dve často používané:
  • webová služba ako súhrn novo nastupujúcich noriem, ktoré popisujú aplikačnú architektúru orientovanú na služby a založenú na komponentoch, je vybudovaná na princípe architektúry orientovanej na služby SOA (Service-Oriented Architecture) [5],
  • webová služba je softvérový systém identifikovaný jednotným identifikátorom URI (Uniform Resource Identifier), ktorého verejné interfejsy a väzby sú definované a popísané pomocou XML a jeho definícia môže byť objavená (nájdená) inými softvérovými systémami, ktoré potom môžu spolupracovať s WS spôsobom predpísaným v jej definícii pomocou XML správ prenášaných internetovými protokolmi [8].
WS poskytuje štandardný popis svojho rozhrania vo forme WSDL (Web Services Description Language), ktoré umožňuje klientskému softvéru službu využívať. Zásadne je tento popis umiestnený na inom serveri ako samotná služba, a predstavuje tak akúsi spojnicu (väzbu) medzi poskytovateľom (server) a konzumentom (client) služby (obr. 2). SOA sa však nerovná (iba) WS, lebo síce každá WS vyhovuje SOA, ale nie každá služba v rámci SOA musí byť nutne WS. V súčasnosti k základným štandardom WS (XML, SOAP, WSDL, HTTP) pribudli ďalšie rozširujúce normy (napr. WS-ReliableMessaging, WS-Addressing, WS-Notification, WS-Security, WS-Policy, WS-Choreography), ktoré dopĺňajú využitie WS a ďalej rozširujú syntax WSDL.
 
Jednoduché a efektívne vytváranie aj využívanie WS prináša okrem iných vývojových prostredí aj PHP 5 s vyspelou podporou SOAP (Simple Object Access Protocol) vo forme rozšírenia umožňujúceho jednoduché vytvorenie klienta aj servera služby na báze WSDL (štandardný spôsob) a na strane klienta podporuje aj prácu v móde non-WSDL.
 

3. Čo je Ajax

Ajax (Asynchronous Javascript And XML) je webová vývojová metóda (presnejšie povedané skupina metód – rozšírený jazyk HTML − XHTML, kaskádové štýly CSS, objektový model dokumentu DOM, jazyk XML, transformačný jazyk XSLT, XMLHttpRequest a JavaScript) určená na vytváranie interaktívnych webových aplikácií. Predstavuje ďalší logický krok vo vývoji SOA – architektúry orientovanej na služby. Pomocou Ajaxu môžu používateľské rozhrania prostredníctvom prehliadača využívať webové služby ako svoj dátový zdroj na ukladanie a obnovovanie informácií [4].
 
Ajax v skutočnosti nie je niečím novým. Jeho dôležitá zložka – objekt XMLHttpRequest (XHR) – je časťou Internet Explorera 5 (od roku 1999) ako ovládací prvok ActiveX. Implementáciou XHR v ďalších prehliadačoch (Mozilla, Safari), jeho zaradením v DOM Level 3 (Document Object Model) a najmä masívnym využívaním v populárnych službách (Google Maps, Google Suggest, Gmail atď.) sa stáva XHR de facto štandardom. Ako prvý použil termín Ajax Jesse James Garrett (z Adaptive Paths) vo februári 2005 v práci Ajax: A new Approach to Web Application [4]. Ajax dnes zastrešuje všetky metódy podporujúce asynchrónnu komunikáciu prehliadača so serverom bez nutnosti obnoviť aktuálnu stránku.
 
Na rozdiel od komunikácie HTML, kedy je po každom spracovaní na strane servera vytváraná nová stránka, je pri komunikácii podporovanej Ajaxom prenášaný výsledok serverového spracovania realizovaný na strane HTML priebežne, teda bez potreby obnovovania stránky. Toto je jedna z podstatných čŕt Ajaxu a čoraz častejšie možno sa s ňou stretnúť už aj v konkrétnych úlohách.
 

4. Vzdialené servery a hľadisko bezpečnosti JavaScriptu

Jednotlivé prehliadače majú na kontrolu prostriedkov využívaných z JavaScriptu veľmi striktné metódy (aj keď sú odlišné v rôznych prehliadačoch). Objekt XMLHttpRequest patrí do kategórie zabezpečenia prehliadača. Akýkoľvek prostriedok požadovaný objektom XMLHttpRequest sa musí nachádzať v tej istej doméne, v ktorej sa nachádza volajúci skript. To je významné bezpečnostné obmedzenie, ktoré bráni objektom XMLHttpRequest žiadať a dosiahnuť prostriedky mimo domény, z ktorej pochádzajú. Intenzita tohto obmedzenia sa líši v závislosti na jednotlivých prehliadačoch. Prehliadač Internet Explorer je priateľský (teda možno menej bezpečný, ale viac praktický). V závislosti na nastavení buď požiadavku preruší alebo zobrazí varovný dialóg s upozornením na možné nebezpečenstvo a môže dať používateľovi na výber, či požiadavku realizuje alebo nie. Firefox (a ostatné prehliadače založené na Mozille) požiadavku preruší a zobrazí chybový dialóg v chybovej konzole Javascriptu. Podobne je na tom
aj Opera, ktorá spojenie na iný server zakáže a zobrazí chybový dialóg (obyčajne najrozsiahlejší). V prípade Firefoxu je možné istým spôsobom toto obmedzenie prekonať [1], takže najbezpečnejším prehliadačom je Opera.
 
Riešením problému prístupu k inému serveru je nepriame volanie vzdialeného servera (z iného prostredia ako JavaScript). Takýto skript sa obyčajne nazýva zástupný skript, proxy alebo brána; jeho princíp je znázornený na obr. 3.
 

5. Záver

Spojenie asynchrónnej komunikácie medzi klientom a serverom s využívaním webových služieb na jednej strane prináša viaceré nové možnosti do výstavby úlohy, predovšetkým rôznych vstupných obrazoviek formulárového typu, na druhej strane vedie k dekompozícii často zložitých serverových úloh na niekoľko jednoduchších, relatívne samostatných funkcií – služieb. Nezanedbateľnú rolu má celý rad ďalších, na prvý pohľad neviditeľných aspektov takéhoto prístupu. Medzi tie patrí významná redukcia množstva údajov prenášaných po sieti, z toho vyplývajúce možné zrýchlenie činnosti úlohy, relatívna samostatnosť interfejsových súborov WSDL a aj určitá zmena štandardných webových postupov návrhu a tvorby úlohy. V mnohých prípadoch je možné doplňovať komponenty WS, Ajaxu alebo ich kombinácie do už existujúcich úloh alebo projektov (inkrementálny prístup).
 
Servisne orientovaná architektúra formou konsolidácie a opakovaným používaním aplikačných služieb umožňuje prebudovať podnikovú infraštruktúru, odstrániť redundancie a zrýchliť jednotlivé projekty. Zjednodušuje a urýchľuje tiež prispôsobovanie sa zmene potrieb podniku a rovnako urýchľuje a zefektívňuje realizáciu nových projektov.
 
Literatúra:
[1] DARIE, C. – BRINZAREA, B. – CHERECHEŞ-TOŞA, F. – BUCICA, M.: AJAX a PHP − tvoříme interaktivní webové aplikace profesionálně. Zoner software, Brno, 2006, ISBN 80-86815-47-1.
[2] EVDEMON, J.: Principles of Service Design: Service Patterns and Anti-Patterns. 2005, on-line [cit. 7. 2. 2008] dostupné z http://msdn2.microsoft.com/en-s/library/ms954638.aspx#Mtps_DropDownFilterText
[3] EVDEMON, J.: Service Oriented Architecture (SOA) in the Real World. 2007, on-line [cit. 7. 2. 2008] dostupné z http://www.microsoft.com/downloads/details.aspx?FamilyID=cb2a8e49-bb3b-49b6-b296-a2dfbbe042d8&displaylang=en
[4] GARRET, J. J.: Ajax: A New Approach to Web Applications. 2005, on-line [cit. 7. 2. 2008] dostupné z http://www.ajax.org
[5] CHAMPION, M. − FERRIS, CH. − NEWCOMER, E. − ORCHARD, D.: Web Services Architecture. W3C Working Draft 14. 2002, on-line [cit. 7. 2. 2008] dostupné z http://www.w3.org/TR/2002/WD-ws-arch-20021114/
[6] PEZZINI, M.: SOA’s deadly dozen. In: Computing, 2007, on-line [cit. 26. 3. 2008] dostupné z http://www.computing.co.uk/computing/analysis/2203880/soa-deadly-dozen-3648889
[7] SAXE, J. G.: Robertson‘s Words for a Modern Age: Blind Men and the Elephant (a.k.a., „Blindmen“). (by John Godfrey Saxe). On-line [cit. 7. 2. 2008] dostupné z http://www.wordinfo.info/words/index/info/view_unit/1/?letter=B&spage=3
[8] SAMTANI, G.: Top five Web service myths. Builder – Architect − WServices. 2002, on-line [cit. 7. 2. 2008] dostupné z http://builder.com.com/article.jhtml;jsessionid=4VPOR43OSAE21TQQACQSFFA?id=u00320020820GXS01.htm&page=2
[9] ŠTUMPF, J.: SOA: Módní vlna, nebo seriózní směr? In: Zborník prednášok na medzinárodnú konferenciu Systémová integrácia 2006, Žilinská univerzita Žilina, 2006, s. 125–131, ISBN 80-8070-590-9.
[10] ŠTUMPF, J.: SOA Blog. Úvahy a názory týkající se architektury SOA. Dá se SOA definovat?. 2007, on-line [cit. 7. 2. 2008] dostupné z http://soablogjst.blogspot.com
Príspevok bol riešený v rámci projektov VEGA 1/4194 /07 (L), VEGA 1/0194/08 (S) a VEGA 1/0365/08 (T).
 
doc. Ing. Pavel Horovčák, CSc.,
ústav riadenia a informatizácie výrobných
procesov, Fakulta BERG,
Technická univerzita v Košiciach
 
Doc. Ing. Pavel Horovčák, CSc., je odborne orientovaný na internetovú techniku a jej použitie, informačné, monitorovacie a riadiace systémy, databázové systémy a grafickú prezentáciu priebehu procesov. Na TU v Košiciach vede prednášky a semináre pre študentov bakalárskeho i inžinierskeho štúdia.
 
Obr. 1. Slepí muži a slon (John Godfrey Saxe) [7]
Obr. 2. Vzťah zložiek webovej služby
Obr. 3. Ilustrácia volania vzdialeného servera v Ajaxe
 
Tab. 1. SOA − predstavy a skutočnosť [3]