Programovanie

Čo je architektúra orientovaná na služby?

Servisne orientovaná architektúra (SOA) sa objavila na začiatku tohto storočia ako vývoj distribuovaného výpočtového systému. Pred SOA, služby sa chápali ako konečný výsledok procesu vývoja aplikácie. V SOA je samotná aplikácia zložená zo služieb. Služby je možné dodávať jednotlivo alebo ich kombinovať ako komponenty vo väčšej zloženej službe.

Služby interagujú po drôte pomocou protokolu, ako je REST alebo SOAP (Simple Object Access Protocol). Služby sú voľne spojené, čo znamená, že rozhranie služby je nezávislé od základnej implementácie. Vývojári alebo systémoví integrátori môžu do aplikácie zostaviť jednu alebo viac služieb bez toho, aby nevyhnutne vedeli, ako sú jednotlivé služby implementované.

Tento článok ponúka prehľad Java SOA a kľúčové charakteristiky architektúry orientovanej na služby implementovanej pomocou webových služieb založených na SOAP. Stručne tiež porovnám SOA a mikroslužby a rozoberiem rozdiel medzi webovými službami založenými na RESTful a SOAP v Jave.

SOA a webové služby

SOA a webové služby sú často zjednotené, ale nejde o to isté. SOA je architektúra, ktorá umožňuje vývojárom kombinovať viac aplikačných služieb do väčšej, zloženej služby. SOA je možné implementovať pomocou webových služieb založených na SOAP alebo REST API, alebo niekedy kombináciou oboch. Je dôležité pochopiť, že v SOA, a služby je akýkoľvek vzdialene dostupný zdroj, ktorý dokáže odpovedať na požiadavky. A webová služba sa implementuje pomocou špecifických protokolov.

Prečo architektúra zameraná na služby?

SOA sa zameriava na tri bežné podnikové výzvy:

  • Rýchlo reagujte na obchodné zmeny.
  • Využite existujúce investície do infraštruktúry.
  • Podporujte nové kanály interakcie so zákazníkmi, partnermi a dodávateľmi.

Podniková infraštruktúra je v rámci operačných systémov, aplikácií, systémového softvéru a aplikačnej infraštruktúry heterogénna. Výsledkom je, že veľa podnikových systémov pozostáva z komplexných a nekonzistentných aplikácií poskytujúcich rad vzájomne závislých služieb. Existujúce aplikácie, ktoré používajú súčasné obchodné procesy, sú zásadné, takže začať od nuly alebo ich úpravy je chúlostivou záležitosťou. Podniky však musia byť schopné modifikovať a rozširovať technickú infraštruktúru tak, aby vyhovovali obchodným požiadavkám.

SOA a mikroslužby

Microservices je architektonický štýl, ktorý sa vyvinul z architektúry SOA. Obe sú distribuované architektúry a obe ponúkajú oddelenú paradigmu. Zatiaľ čo architecure zameraný na služby je náročnejší na infraštruktúru, mikroslužby ponúkajú flexibilnejší a ľahší štýl vývoja. Pre obe strany sú klady aj zápory a obe sú široko používané. Všeobecne možno povedať, že SOA je častejšie implementovaná alebo udržiavaná zavedenými podnikmi, ktoré majú zdroje na podporu väčšej formality. Mikroslužby sa často obracajú na nové alebo rastúce organizácie vyžadujúce agilitu.

V porovnaní s monolitickou architektúrou umožňuje voľne prepojená povaha architektúry SOA relatívne bezproblémové pripojenie nových služieb alebo upgrade existujúcich služieb pre nové obchodné požiadavky. Poskytuje tiež možnosť umožniť spotrebovanie služieb naprieč rôznymi kanálmi a vystavenie starších aplikácií ako služieb, čím sa zabezpečia investície do infraštruktúry.

Pretože sú voľne spojené, komponenty SOA je možné meniť s minimálnym dopadom na ostatné komponenty. Komponenty môžu byť tiež pridané do architektúry štandardizovaným spôsobom a môžu byť škálované tak, aby adresovali zaťaženie.

Ako príklad zvážte, ako môže podnik použiť množinu existujúcich aplikácií na vytvorenie novej, zloženej aplikácie dodávateľského reťazca. Zatiaľ čo existujúce aplikácie sú heterogénne a distribuované v rôznych systémoch, ich funkčnosť je odhalená a je k nim prístup pomocou štandardných rozhraní.

Matthew Tyson

Kľúčové vlastnosti protokolu SOA

Softvér SOA môže byť rovnako jednoduchý ako jeden komponent spotrebúvajúci služby poskytované iným komponentom alebo rovnako sofistikovaný ako celý rad komponentov interagujúcich prostredníctvom podnikovej zbernice služieb, ako je ESB spoločnosti MuleSoft. Bez ohľadu na rozsah je kľúčom k úspešnej implementácii SOA použitie čo najmenšej komplexnosti na dosiahnutie vašich cieľov. Vaša prvá a posledná otázka by mala byť vždy: Spĺňa tento dizajn naše obchodné požiadavky?

Bez ohľadu na rozsah alebo zložitosť je vzor architektúry orientovanej na služby viac-menej rovnaký:

  • Poskytovatelia služieb vystavujú koncové body a popisujú dostupné akcie pre každý koncový bod.
  • Spotrebitelia služieb vydávajú žiadosti a využívajú odpovede.
  • Poskytovatelia služieb generujú správy na vybavenie požiadaviek.

Implementácia architektúry orientovanej na služby

Pri implementácii SOA začnete so základnou architektúrou služieb, potom poskytnite infraštruktúru, čo znamená protokoly a ďalšie nástroje, ktoré umožňujú komunikáciu a interoperabilitu. Obrázok 2 zobrazuje diagram typickej architektúry služieb.

Matthew Tyson

V tomto diagrame traja zákazníci vyvolávajú služby zasielaním správ na podnikovú zbernicu služieb, ktorá transformuje a smeruje správy na príslušnú implementáciu služby. A motor obchodných pravidiel začleňuje obchodné pravidlá do služby alebo medzi služby. A vrstva riadenia služieb spravuje činnosti ako audit, fakturácia a protokolovanie.

Komponenty v tejto architektúre sú voľne spojené, takže je možné ich vypnúť alebo aktualizovať s relatívne minimálnym dopadom na aplikáciu ako celok. To dáva podniku flexibilitu podľa potreby pridávať alebo aktualizovať obchodné procesy. Zmeny jednotlivých služieb by z väčšej časti nemali veľmi ovplyvňovať ostatné služby.

SOAP vs RESTful webové služby

Je možné prijať štýl SOA a implementovať ho pomocou REST, napríklad pomocou rozhrania JAX-RS API alebo Spring Boot Actuator, ale táto diskusia je mimo rozsahu tohto článku. Užitočné porovnanie webových služieb SOAP vs RESTful nájdete v časti „SOAP vs REST vs JSON“. Medzi webovými službami RESTful a ľahším štýlom spojeným s mikroslužbami tiež existuje určité prekrytie.

Webové služby založené na SOAP

Webové služby implementované pomocou protokolu SOAP sú stále rigidnejšie ako implementácia webových služieb alebo mikroslužieb RESTful, ale oveľa flexibilnejšie ako v začiatkoch SOA. Tu sa len pozrieme na protokoly vysokej úrovne požadované pre webové služby založené na SOAP.

SOAP, WSDL a XSD

SOAP, WSDL a XSD sú základnou infraštruktúrou implementácie webových služieb založenou na SOAP. Na popis služby sa používa WSDL a SOAP je transportná vrstva na odosielanie správ medzi spotrebiteľmi a poskytovateľmi služieb. Služby komunikujú so správami formálne definovanými pomocou schémy XML (XSD). WSDL si môžete predstaviť ako rozhranie služby (voľne analogické s rozhraním Java). Implementácia sa vykonáva v triedach Java a komunikácia v sieti prebieha prostredníctvom protokolu SOAP. Spotrebiteľ by funkčne hľadal službu, získal pre ňu službu WSDL a potom ju vyvolal pomocou protokolu SOAP.

Zabezpečenie webových služieb

Špecifikácia WS-I Basic Profile 2.0 sa zameriava na bezpečnosť správ. Táto špecifikácia sa zameriava na výmenu poverení, integritu správy a dôvernosť správ.

Objavovanie webových služieb

Akonáhle je základným kameňom objavovania webových služieb, UDDI (univerzálny popis, definícia a integrácia) ustúpila do histórie. Dnes je bežné vystaviť webovú službu založenú na SOAP tak, ako by ste ktorúkoľvek inú službu, prostredníctvom adresy URL koncového bodu. Ako príklad môžete použiť rozhranie koncového bodu služby JAX-WS a jeho rozhranie @Webová služba a @WebMethod anotácie.

Vytváranie a zavádzanie webových služieb

Vývojári Java majú niekoľko možností pre budovanie a nasadenie webových služieb založených na SOAP, vrátane Apache Axis2 a Spring-WS; štandardom Java je však JAX-WS, rozhranie Java API pre webové služby XML. Základnou myšlienkou JAX-WS je vytvoriť triedy Java a anotovať ich, aby sa vytvorili požadované artefakty. Pod kapotou používa JAX-WS niekoľko balíkov Java, vrátane JAXB, knižnice na všeobecné použitie na viazanie tried Java na XML.

JAX-WS skrýva pred vývojárom skrytú zložitosť a protokoly, čím zjednodušuje proces definovania a nasadenia SOAP služieb založených na Jave. Moderné Java IDE ako Eclipse zahŕňajú úplnú podporu pre vývoj webových služieb JAX-WS. Pre pokračujúci vývoj v Jakarte EE bola tiež vybraná špecifikácia JAX-WS.

Záver

Servisne orientovaná architektúra implementovaná pomocou webových služieb založených na SOAP vyžaduje prísnejšie a formálnejšie definície služieb ako webové služby RESTful alebo mikroslužby. Niektoré väčšie organizácie však naďalej uprednostňujú formálnejší štýl presadzovaný protokolom SOAP. Mnoho rozsiahlych starších systémov je tiež postavených na SOAP a niektoré B2B a interné systémy si pre svoje formálnejšie definované zmluvy API vyberajú webové služby založené na SOAP. Či už vyvíjate alebo udržiavate rozsiahly podnikový systém, pochopenie vzoru SOA a schopnosť vyhodnotiť vaše možnosti implementácie vám bude slúžiť dobre vo vašej programátorskej kariére.

Tento príbeh: „Čo je architektúra orientovaná na služby?“ pôvodne vyšla vo vydavateľstve JavaWorld.

$config[zx-auto] not found$config[zx-overlay] not found