Metodiky vývoja webových služieb – vývoj mobilných aplikácií, webové služby, architektúra SOA – technológie
Preskočiť na obsah

Metodiky vývoja webových služieb – vývoj mobilných aplikácií, webové služby, architektúra SOA

Reklamy

Coulouris definoval distribuované systémy ako „systémy, v ktorých hardvérové a/alebo softvérové komponenty existujúce v počítačovej sieti komunikujú a koordinujú svoje činnosti prostredníctvom výmeny správ“.

Tento koncept sa v posledných rokoch stal populárnym vďaka niekoľkým faktorom. Prvým faktorom, ktorý podporil rozvoj distribuovaných systémov, bol vznik vysokorýchlostných lokálnych sietí. Ďalším dôležitým faktorom bol technologický pokrok vo výkone osobných počítačov a vývoj softvéru na podporu distribuovaných aplikácií. Distribuované systémy sú prepojené s konceptom webu a internetu. S vývojom webu a objavením sa nových oblastí, interakcií, potrieb a aplikácií sa objavuje pojem Web 2.0. Tento termín zaviedol Tim O'Reilly v roku 2004 na označenie druhej generácie v histórii webu založenej na komunitách používateľov a špeciálnej škále služieb, ako sú sociálne siete, blogy, wiki alebo folksonomies, ktoré podporujú spoluprácu a rýchle výmena informácií medzi používateľmi.

Prvé architektúry, ktoré možno považovať za orientované na služby (SOA), boli založené na architektúre CORBA (Common Object Request Broker Architecture), ktorá fungovala ako abstraktná vrstva na prepojenie rôznych prvkov architektúry a budovanie služieb. Ďalšie skoršie technológie boli DCOM (Distributed Component Object Model) alebo RPC (Remote Procedure Protocol). S potrebou efektívneho návrhu a implementácie distribuovaných systémov na webe vyvstáva niekoľko výziev, niektoré zamerané na samotný vývoj (výkon, používateľská skúsenosť atď.) a ďalšie doplnkové, založené na opätovnej použiteľnosti a kompatibilite služieb. Z týchto potrieb vyplývajú webové služby, ktoré poskytujú štandardizované mechanizmy na prepojenie rôznych používateľov s informačnými servermi.

ARCHITEKTÚRY ORIENTOVANÉ NA SLUŽBY

Podľa SOA (Service Oriented Architecture) sú softvérové architektúry, ktoré definujú využitie služieb na podporu obchodných požiadaviek, ktorých cieľom je dosiahnuť čo najmenšiu väzbu medzi softvérovými agentmi. Služba je jednotka práce vykonávanej poskytovateľom služby na dosiahnutie konečného výsledku požadovaného spotrebiteľom služby. Poskytovateľ služieb aj spotrebiteľ služieb sú úlohy, ktoré zohrávajú softvéroví agenti, nie vlastníci softvéru. Vo všeobecnom zmysle je architektúra orientovaná na služby softvérové riešenie, ktoré má podniku umožniť organizovať a využívať rôzne procesy. So SOA už softvérové aplikácie nie sú masívnymi blokmi funkcií a procesov. Namiesto toho sú tieto aplikácie tvorené zostavenými modulárnymi službami. Pamätajte, že služba je jednoduchá softvérová funkcia (ako zrušenie CD). Môže byť spustený na požiadanie akýmkoľvek systémom bez ohľadu na operačný systém, platformu, programovací jazyk alebo geografickú polohu.

To, čo je na SOA revolučné, nie je samotný koncept, ktorý existuje už dlho, ale skutočnosť, že ho možno implementovať cez WWW (World Wide Web). Rovnako ako sa webové stránky načítavajú na akejkoľvek platforme, webové služby fungujú podobne bez ohľadu na platformu, na ktorej sú vytvorené
univerzálne štandardy.

FotografiaMyšlienka SOA vychádza priamo z objektovo orientovaného programovania, čo naznačuje vzťah medzi údajmi a ich spracovaním. Formálne teda definujú služby prostredníctvom rozhraní, ktoré sú nezávislé od základnej platformy a programovacieho jazyka. Tieto rozhrania skrývajú zvláštnosti ich implementácie, vďaka čomu sú nezávislé od vývojársky a programovací jazyk. Prostredníctvom týchto architektúr je možné navrhnúť a implementovať vysoko škálovateľné systémy, ktoré odrážajú obchodnú logiku a zároveň uľahčujú interakciu medzi rôznymi proprietárnymi systémami alebo systémami tretích strán. Dôvod, prečo chceme, aby za nás prácu urobil niekto iný, je ten, že sú odborníci. Používanie služby je zvyčajne lacnejšie a efektívnejšie, ako keď si to robíte sami. Väčšina z nás teda chápe, že nemôžeme byť odborníkmi na všetko. Rovnaké pravidlo možno použiť aj pri budovaní softvérových systémov.

Rozhrania sú veľmi dôležité, ak nie sú dobre definované alebo nefungujú, systém nefunguje. Integrácia viacerých rozhraní je nákladná a tiež zvyšuje potenciál chýb v distribuovaných aplikáciách. Vzdialené rozhrania sú najpomalšou súčasťou väčšiny distribuovaných aplikácií. Vďaka tomu všetkému je namiesto vytvárania nových rozhraní pre každú aplikáciu zmysluplnejšie opätovne použiť generické rozhrania pre všetky aplikácie.

Keďže máme k dispozícii len niekoľko generických rozhraní, musíme do správ zahrnúť sémantiku špecifickú pre aplikáciu. Cez naše rozhrania môžeme posielať akýkoľvek druh správy, ale existujú určité pravidlá, ktoré treba dodržiavať, aby sme povedali, že architektúra je orientovaná na služby.

– Po prvé, správy musia byť opisné, nie poučné, keďže za vyriešenie problému je zodpovedný poskytovateľ služby. Napríklad by to bolo podobné situácii, keď idete do reštaurácie a poviete čašníkovi, čo by ste chceli piť a aké máte preferencie, ale nemali by sme kuchárovi vysvetľovať, ako pripraviť vaše jedlá, krok za krokom.

‐ Po druhé, poskytovatelia služieb nebudú schopní porozumieť vašej požiadavke, ak ich správy nebudú napísané vo formáte, štruktúre a slovnej zásobe zrozumiteľnej všetkým zúčastneným. Obmedzenie slovnej zásoby a štruktúry správ je teda a
potrebné pre efektívnu komunikáciu. Čím je posolstvo užšie, tým je ľahšie pochopiteľné.

- Po tretie, možnosť predĺženia je životne dôležitá. Svet je neustále sa meniace miesto a rovnako aj prostredie, v ktorom softvér žije. Tieto zmeny si vyžadujú zodpovedajúce zmeny v systémovom softvéri, spotrebiteľoch služieb, poskytovateľov a správ, ktoré si vymieňajú. Ak správy nie sú rozšíriteľné, spotrebitelia a poskytovatelia sú uzamknutí na konkrétnu verziu služby. Obmedzenia a rozšíriteľnosť spolu úzko súvisia, potrebujete oboje a zvýšenie jedného znamená zníženie druhého. Ideálom je dosiahnuť správnu rovnováhu.

– Po štvrté, SOA musí mať mechanizmus, ktorý umožní spotrebiteľovi objaviť poskytovateľa služieb v kontexte služby, ktorú spotrebiteľ hľadá. Mechanizmus by mal byť flexibilný a nemal by ísť o centralizovaný register.

- Po piate, služba bez štátnej príslušnosti: Každá správa, ktorú spotrebiteľ pošle poskytovateľovi, musí obsahovať všetky informácie potrebné na to, aby ju poskytovateľ spracoval. Toto obmedzenie robí poskytovateľa služieb škálovateľnejším, pretože poskytovateľ nemusí medzi žiadosťami ukladať informácie o stave. Môže sa to nazvať „služba hromadnej výroby“, pretože každá požiadavka môže byť vybavovaná všeobecne. Toto obmedzenie tiež poskytuje väčšiu viditeľnosť, pretože akýkoľvek monitorovací softvér môže nezávisle skontrolovať požiadavku a extrahovať jej zámer. To tiež umožňuje ľahké zotavenie z čiastočných zlyhaní, pretože neexistujú žiadne prechodné stavy, vďaka čomu je služba spoľahlivejšia.

- Po šieste, idempotentné požiadavky (bez zmien): duplicitné požiadavky prijaté softvérovým agentom majú rovnaký účinok ako jedna požiadavka. Táto požiadavka umožňuje poskytovateľom a spotrebiteľom zvýšiť celkovú spoľahlivosť v prípade zlyhania jednoducho zopakujte požiadavku.

Môžeme teda povedať, že SOA nie je nástroj, ale súbor štandardov na vytváranie nových aplikácií, dynamickejších a menej závislých. SOA uľahčuje prístup k obchodnej logike a informáciám v rámci viacerých služieb systematickým spôsobom a môže tiež organizovať viacero vzdialených služieb, aby vytvorili jednu. väčšina z nich definície identifikujú použitie webových služieb, ktoré uvidíme v nasledujúcej kapitole, pri implementácii architektúry orientovanej na služby. Môže sa však implementovať pomocou akejkoľvek inej technológie založenej na službách.