Service statslöshetsprincipen
Tjänstetillståndslöshet är en designprincip som tillämpas inom designparadigmet för tjänsteorientering, för att designa skalbara tjänster genom att separera dem från deras tillståndsdata när det är möjligt. Detta resulterar i en minskning av resurserna som förbrukas av en tjänst eftersom den faktiska tillståndsdatahanteringen delegeras till en extern komponent eller till en arkitektonisk tillägg. Genom att minska resursförbrukningen kan tjänsten hantera fler förfrågningar på ett tillförlitligt sätt.
Syfte
Interaktionen mellan två program innebär att man håller reda på interaktionsspecifika data eftersom varje efterföljande interaktion kan bero på resultatet av den tidigare interaktionen. Detta blir viktigare i distribuerade arkitekturer där klienten och servern inte finns fysiskt på samma maskin. I tvåskiktsarkitekturer vilade ansvaret för att spåra denna interaktionsspecifika data på de rika klienterna, vilket inte var ett problem eftersom varje klient brukade ligga på en enskild dator. Inom n-tier-arkitekturer flyttades dock statens ledningsansvar från klienten till applikationen eller webbservern . Detta införde behovet av vissa mellanprogramtillståndshanteringstillägg så att servern kunde hantera flera samtidiga klientförfrågningar genom att skjuta upp de faktiska aktivitetsspecifika tillståndsdata till sådana tillägg, t.ex. lagring av sessionsdata i en databas i ASP .NET- applikationer . Detta hjälper till att frigöra minnesresurserna till förmån för att öka serverns lyhördhet och förmågan att underhålla fler klientförfrågningar.
I en tjänstsammansättning kan en tjänst behöva lagra aktivitetsspecifik data i minnet medan den väntar på att en annan tjänst ska slutföra sin bearbetning. Följaktligen, vid tjänsteorientering, blir en effektiv hantering av tjänsteaktivitetsrelaterad data viktigare eftersom tjänsteorientering lägger stor vikt vid återanvändning av tjänster. Tjänsten behöver inte bara hantera tillståndsdata, som skapas som ett resultat av interaktion med ett konsumentprogram, i samband med en viss affärsprocess utan också i relation till interaktionen med andra typer av konsumentprogram som ingår i flera affärsprocesser. I takt med att återanvändbarheten ökar, ökar även omkostnaderna för att hantera tillståndsdata. Service Statelessness-principen ger riktlinjer för att göra tjänsten statslös genom att flytta bort den statliga förvaltningen från tjänsterna till någon annan extern arkitektonisk komponent. Detta bidrar ytterligare till den övergripande skalbarheten av den serviceinriktade lösningen.
Ansökan
En korrekt tillämpning av tjänstestatslöshet kräver förståelse för de olika typer av statlig information som behöver hanteras.
Kontextdata
Inom en tjänstsammansättning kan tjänsten krävas för att hålla reda på data som är specifik för driften av en viss tjänsteaktivitet, vilket vanligtvis är kopplat till samordningen av meddelanden, t.ex. arbetsflöden, och de tillhörande reglerna som styr hur reglerna ska tolkas.
Affärsdata
Detta är den data som hänför sig till den faktiska affärsprocessen, som drivs av den aktuella serviceaktiviteten t.ex. kundregister etc. vid vissa tillfällen kan denna typ av data behöva lagras tillfälligt, speciellt om den fungerar som en ingång till nästa steg inom tjänsteverksamheten.
Sessionsdata
Detta hänför sig till kopplingsinformationen mellan tjänsterna, t.ex. när konsumentprogram och tjänster kommunicerar fram och tillbaka, kan någon form av korrelation krävas för att skicka den efterföljande begäran endast till den specifika instansen av tjänsten eftersom endast den instansen känner till tidigare serviceinteraktion.
Statslöshet och tjänstetyper
Principen om tjänstestatslöshet skulle kunna tillämpas i varierande utsträckning i förhållande till typen av lösningslogik som tjänsten innesluter.
Uppgiftstjänster
Uppgiftstjänsterna innehåller lösningslogik som är specifik för en viss affärsprocess och därför är deras återanvändningsnivå låg. Dessa tjänster innehåller dock kontextdata (arbetsflödesregler) om tjänsteaktiviteten, som är direkt proportionell mot storleken på tjänstens sammansättning som administreras av uppgiftstjänsten. minnesfotavtryck att designa sådana tjänster med statliga uppskjutningsalternativ och gör dem mer lyhörda.
Allmännyttiga tjänster
Dessa typer av tjänster kan behöva vara tillståndsfulla för att tillhandahålla statslöshet för uppdrags- och enhetstjänster. Å andra sidan måste en mycket återanvändbar verktygstjänst, t.ex. en hjälptjänst som fungerar som ett omslag för ett äldre system , vara måttligt tillståndslös så att den kan hantera flera samtidiga förfrågningar.
Entitetstjänster
Dessa tjänster är oberoende av någon specifik affärsprocess och anses vara de mest återanvändbara tjänsterna. En annan viktig faktor är att de behandlar data relaterade till affärsenheter och som sådana kräver högre nivåer av statslöshet så att de inte belastas med att hålla reda på affärsdata som de kan behöva behålla för att tillhandahålla den funktionalitet som krävs.
Tillståndslösheten kan antingen uppnås genom att delegera tillståndshantering till någon delad arkitektonisk förlängning, t.ex. en mellanprogramprodukt som existerar utanför tjänsteimplementeringsgränsen eller till en dedikerad mekanism som existerar innanför tjänstegränsen, t.ex. en dedikerad databas.
Överväganden
Det kanske inte alltid är möjligt att tillhandahålla ett dedikerat statligt uppskovsalternativ för varje tjänst eftersom detta helt klart kräver ytterligare investeringar . Å andra sidan kan användningen av ett delat tillståndsuppskjutningsalternativ skapa ett beroende för tjänsten, vilket kan stå i vägen för tjänsteutvecklingen.
Lagring och hämtning av tillståndsinformation kan oavsiktligt påverka tjänstens svarstid eftersom båda dessa uppgifter kan visa sig beräkningsintensiva eftersom data först måste konverteras till det ursprungliga formatet för lagringstillägget och vice versa när det gäller att hämta samma information.
Att designa tillståndslösa tjänster kräver extra ansträngningar och tid eftersom tjänsten behöver innehålla logik som samverkar med tillståndsförlängningarna. Detta skulle i sin tur kräva ytterligare kod och testning.
Vidare läsning
- Michael Poulin. Utveckling av principer för tjänsteorientering: tjänstestatslöshet, del 6 [ Online]. Åtkomstdatum: 19 april 2010.
- Mauro. et al. Serviceorienterad enhetsintegration - en analys av SOA-designmönster. [Online], s. 1–10, 2010 43rd Hawaii International Conference on System Sciences, 2010. Åtkomstdatum: 8 april 2010.