Vad är serviceorienterad arkitektur?

Serviceorienterad arkitektur (SOA) framkom i början av detta århundrade som en utveckling av distribuerad databehandling. Innan SOA förstås tjänster som slutresultatet av applikationsutvecklingsprocessen. I SOA består själva applikationen av tjänster. Tjänster kan levereras individuellt eller kombineras som komponenter i en större sammansatt tjänst.

Tjänster interagerar över kabeln med ett protokoll som REST eller SOAP (Simple Object Access Protocol). Tjänster är löst kopplade, vilket innebär att tjänstgränssnittet är oberoende av den underliggande implementeringen. Utvecklare eller systemintegratörer kan komponera en eller flera tjänster i en applikation utan att nödvändigtvis veta hur varje tjänst implementeras.

Denna artikel är en översikt över Java SOA och de viktigaste egenskaperna hos en tjänstorienterad arkitektur implementerad med SOAP-baserade webbtjänster. Jag ska också kort jämföra SOA och mikrotjänster och diskutera skillnaden mellan RESTful och SOAP-baserade webbtjänster i Java.

Varför serviceorienterad arkitektur?

SOA hanterar tre vanliga företagsutmaningar. :

  • Svara snabbt på affärsförändringar.
  • Utnyttja befintliga infrastrukturinvesteringar.
  • Stöd nya kanaler för interaktion med kunder, partners och leverantörer.

Företagets infrastruktur är heterogen över operativsystem, applikationer, systemprogramvara och applikationsinfrastruktur. Som ett resultat består många företagssystem av komplexa och inkonsekventa applikationer som ger en utbud av ömsesidigt beroende tjänster. Befintliga applikationer som kör nuvarande affärsprocesser är avgörande, så att börja om från början eller modifiera dem är ett känsligt förslag. Men företagen måste kunna modifiera och utöka teknisk infrastruktur för att möta företagets krav.

Som jämfört med en monolitisk archi Tecture, SOA: s löst kopplade natur gör det relativt sömlöst att koppla in nya tjänster eller uppgradera befintliga tjänster för nya affärsbehov. Det ger också möjlighet att göra tjänster förbrukade över olika kanaler och att exponera äldre applikationer som tjänster och därigenom skydda infrastrukturinvesteringar.

Eftersom de är löst kopplade kan SOA-komponenter ändras med minimal påverkan på andra komponenter . Komponenter kan också läggas till i arkitekturen på ett standardiserat sätt och de kan skalas för att adressera belastningen.

Som ett exempel kan du överväga hur ett företag kan använda en uppsättning befintliga applikationer för att skapa en ny, kompositförsörjningskedjeapplikation. Medan de befintliga applikationerna är heterogena och distribuerade över olika system, exponeras och åtkomst till deras funktionalitet med standardgränssnitt.

Matthew Tyson

Figur 1. Tillämpningskedjeapplikation i en serviceorienterad arkitektur

SOAs viktigaste egenskaper

SOA kan vara så enkelt som en enskild komponents konsumtionstjänster som tillhandahålls av en annan komponent eller så sofistikerad som en rad komponenter som interagerar via en företagstjänstbuss som MuleSofts ESB. Oavsett storlek är nyckeln till en framgångsrik SOA-implementering att använda så lite komplexitet som möjligt för att uppnå dina mål. Din första och sista fråga ska alltid vara: Uppfyller denna design våra affärsbehov?

Oavsett skala eller komplexitet, mönstret för en serviceorienterad arkitektur är mer eller mindre densamma:

  • Tjänsteleverantörer exponerar slutpunkter och beskriver tillgängliga åtgärder vid varje slutpunkt.
  • Tjänstekonsumenter utfärdar förfrågningar och konsumerar svar.
  • Tjänsteleverantörer genererar meddelanden för att hantera förfrågningar.

Implementering av tjänst- orienterad arkitektur

För att implementera SOA börjar du med den grundläggande servicearkitekturen och tillhandahåller sedan infrastrukturen, vilket innebär protokoll och andra verktyg som möjliggör kommunikation och interoperabilitet. Figur 2 visar ett diagram över en typisk tjänstearkitektur.

Matthew Tyson

Figur 2. Ett exempel på servicearkitektur

I detta diagram anropar tre konsumenter tjänster genom att skicka meddelanden till en företagstjänstbuss, som omvandlar och dirigerar meddelandena till en lämplig tjänstimplementering . En motor för affärsregler innehåller affärsregler i en tjänst eller över flera tjänster. Ett servicehanteringsskikt hanterar aktiviteter som granskning, fakturering och loggning.

Komponenter i denna arkitektur är löst kopplade så att de kan kopplas bort eller uppdateras med relativt minimal inverkan på applikationen som helhet. Detta ger företaget flexibilitet att lägga till eller uppdatera affärsprocesser efter behov. För det mesta bör ändringar av enskilda tjänster inte påverka andra tjänster i hög grad.

SOAP-baserade webbtjänster

Webbtjänster som implementeras med SOAP är fortfarande styvare än en RESTful webbtjänst eller mikrotjänstimplementering, men mycket mer flexibla än SOAs tidiga dagar. Här ska vi bara titta på de högnivåprotokoll som krävs för SOAP-baserade webbtjänster.

SOAP, WSDL och XSD

SOAP, WSDL och XSD är den grundläggande infrastrukturen av en SOAP-baserad webbtjänstimplementering. WSDL används för att beskriva tjänsten och SOAP är transportskiktet för att skicka meddelanden mellan servicekonsumenter och leverantörer. Tjänster kommunicerar med meddelanden formellt definierade med hjälp av XML Schema (XSD). Du kan tänka på WSDL som tjänstens gränssnitt (löst analogt med ett Java-gränssnitt). Implementeringen sker i Java-klasser och kommunikation över nätverket sker via SOAP. Funktionellt skulle en konsument leta efter en tjänst, hämta WSDL för den tjänsten och sedan anropa tjänsten med SOAP.

Webbtjänstsäkerhet

WS -I Basic Profile 2.0-specifikationen adresserar meddelandesäkerhet. Denna specifikation fokuserar på utbyte av referenser, meddelandets integritet och meddelandesekretess.

Upptäckt av webbtjänster

När hörnstenen för upptäckt av webbtjänster har UDDI (Universal Description, Definition and Integration) bleknat in i historien. Idag är det vanligt att exponera en SOAP-baserad webbtjänst på samma sätt som alla andra tjänster via en slutpunkts-URL. Som ett exempel kan du använda JAX-WS Service Endpoint Interface och dess @WebService och @WebMethod anteckningar.

Bygga och distribuera webbtjänster

Java-utvecklare har flera alternativ för att bygga och distribuera SOAP-baserade webbtjänster, inklusive Apache Axis2 och Spring-WS, men Java-standarden är JAX-WS, Java API för XML-webbtjänster. Kärnidén bakom JAX-WS är att skapa Java-klasser och kommentera dem för att skapa de nödvändiga artefakterna. Under huven använder JAX-WS flera Java-paket, inklusive JAXB, ett bibliotek för allmänna ändamål för att binda Java-klasser till XML.

JAX-WS döljer den underliggande komplexiteten och protokollen från utvecklaren och därmed effektiviserar processen för att definiera och distribuera Java-baserade SOAP-tjänster. Moderna Java IDE som Eclipse inkluderar fullt stöd för att utveckla JAX-WS-webbtjänster. WS-specifikation har också valts för pågående utveckling i Jakarta EE.

Slutsats

Tjänstorienterad arkitektur implementerad med SOAP-baserade webbtjänster kräver mer rigid och formella tjänstedefinitioner än RESTful webbtjänster eller mikrotjänster. Vissa större organisationer fortsätter dock att gynna den mer formella stil som tillämpas av SOAP. Många stora äldre system är också byggda på SOAP, och vissa B2B och interna system väljer SOAP-baserade webbtjänster för sina mer formellt definierade API-kontrakt. Oavsett om du utvecklar eller underhåller ett storskaligt företagssystem, kommer du att förstå SOA-mönstret och kunna utvärdera dina alternativ för att implementera det bra i din programmeringskarriär.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *