Servisne orientovaná architektúra (SOA) je architektonický vzor v dizajne počítačového softvéru, v ktorom aplikačné komponenty poskytujú služby iným komponentom prostredníctvom komunikačného protokolu, zvyčajne cez sieť. Princípy orientácie na služby sú nezávislé na akomkoľvek produkte, predajcovi alebo technológii.
SOA iba uľahčuje vzájomnú spoluprácu softvérových komponentov v rôznych sieťach.
Webové služby, ktoré sú postavené na architektúre SOA, majú tendenciu robiť webovú službu nezávislejšou. Samotné webové služby si môžu navzájom vymieňať údaje a kvôli základným princípom, na ktorých sú vytvorené, nepotrebujú žiadny druh ľudskej interakcie a tiež nepotrebujú žiadne úpravy kódu. Zaisťuje, že webové služby v sieti môžu navzájom bezproblémovo interagovať.
SOA je založená na niektorých kľúčových princípoch, ktoré sú spomenuté nižšie
- Štandardizovaná zmluva o poskytovaní služieb - Služby zodpovedajú popisu služby. Služba musí mať určitý druh popisu, ktorý popisuje, o čom je služba. Toto uľahčuje klientskym aplikáciám pochopiť, čo služba robí.
- Loose Coupling - Menej vzájomnej závislosti. Toto je jedna z hlavných charakteristík webových služieb, ktorá iba uvádza, že medzi webovými službami a klientom, ktorý webovú službu vyvoláva, by mala byť čo najmenšia závislosť. Takže ak sa funkčnosť služby kedykoľvek zmení, nemalo by to zlomiť klientsku aplikáciu alebo ju zastaviť v práci.
- Abstrakcia služieb - služby skrývajú logiku, ktorú zapuzdrujú pred vonkajším svetom. Služba by nemala zverejňovať, ako vykonáva svoju funkčnosť; malo by to iba povedať klientskej aplikácii o tom, čo robí, a nie o tom, ako to robí.
- Opätovná použiteľnosť služby - Logika je rozdelená na služby so zámerom maximalizovať opätovné použitie. V každej vývojovej spoločnosti je opätovná použiteľnosť veľkou témou, pretože by zrejme človek nechcel tráviť čas a úsilie vytváraním toho istého kódu znova a znova v rámci viacerých aplikácií, ktoré si to vyžadujú. Po napísaní kódu pre webovú službu by preto mal mať schopnosť pracovať s rôznymi typmi aplikácií.
- Autonómia služby - Služby by mali mať kontrolu nad logikou, ktorú obsahujú. Služba vie všetko o tom, aké funkcie ponúka, a preto by mala mať tiež úplnú kontrolu nad kódom, ktorý obsahuje.
- Služby bez štátnej príslušnosti - V ideálnom prípade by služby mali byť bez štátnej príslušnosti. To znamená, že služby by nemali zadržiavať informácie z jedného štátu do druhého. To by bolo potrebné vykonať buď z klientskej aplikácie. Príkladom môže byť objednávka zadaná na nákupnom webe. Teraz môžete mať webovú službu, ktorá vám poskytne cenu konkrétnej položky. Ale ak sú položky pridané do nákupného košíka a webová stránka smeruje na stránku, kde uskutočňujete platbu, webová služba by nemala niesť zodpovednosť za cenu položky, ktorá sa má previesť na platobnú stránku. Namiesto toho to musí urobiť webová aplikácia.
- Viditeľnosť služby - Služby je možné vyhľadať (zvyčajne v registri služieb). Videli sme to už v koncepcii UDDI, ktorá vykonáva register, ktorý obsahuje informácie o webovej službe.
- Skladateľnosť služieb - Služby rozkladajú veľké problémy na malé problémy. Nemali by ste nikdy vkladať všetky funkcie aplikácie do jednej služby, ale radšej ju rozdeľte na moduly so samostatnou obchodnou funkčnosťou.
- Interoperabilita služieb - Služby by mali používať štandardy, ktoré umožňujú používanie služby rôznym predplatiteľom. Vo webových službách sa na zabezpečenie súladu s týmto princípom používajú štandardy ako XML a komunikácia cez HTTP.