Tjänstens sammansättningsprincip
Inom datoranvändning är tjänstekompositabilitet en designprincip, tillämpad inom serviceorienteringsdesignparadigmet, som uppmuntrar designen av tjänster som kan återanvändas i flera lösningar som själva består av sammansatta tjänster . Möjligheten att omkomponera tjänsten är idealiskt oberoende av tjänstesammansättningens storlek och komplexitet.
Denna princip är direkt ansvarig för den smidighet som utlovas av SOA eftersom den främjar att skapa nya lösningar genom att återanvända befintliga tjänster.
Syfte
Konceptet att utveckla mjukvara av oberoende befintliga komponenter uppmuntrar begreppet sammansättning. Detta är det underliggande konceptet inom objektorientering där slutprodukten är sammansatt av flera sammanlänkade objekt som har förmågan att bli en del av flera mjukvarulösningar, oavsett hur komplex lösningen är. Samma sammansättningskoncept ärvs av tjänsteorientering, där en affärsprocess automatiseras genom att kombinera flera tjänster. Inom tjänsteorientering är det dock ännu större fokus på att bygga tjänster som kan komponeras och omkomponeras inom flera lösningar för att ge den smidighet som utlovas av SOA. Som ett resultat av denna betoning krävs vissa riktlinjer för att utveckla tjänster som effektivt kan aggregeras till flera lösningar.
Tjänstens komponerbarhetsprincip ger designöverväganden som hjälper till att utforma komponerbara tjänster i syfte att uppmuntra tjänsteåteranvändning så mycket som möjligt. Riktlinjerna som ges av denna princip förbereder tjänsten så att den är redo att delta i tjänstesammansättningar utan att kräva ytterligare designändringar.
Ansökan
Tillämpningen av tjänstens sammansättningsprincip kräver att tjänster utformas så att de kan användas i en tjänstesammansättning antingen som en tjänst som styr andra tjänster, det vill säga en controllertjänst, eller som en tjänst som tillhandahåller funktionalitet till andra tjänster i sammansättningen utan att ytterligare komponera andra tjänster, det vill säga en ackordsmedlem.
För att tjänsten ska tillhandahålla denna dubbla funktionalitet måste tjänstekontraktet utformas så att det presenterar funktionalitet baserat på varierande nivåer av in- och utdata. Om det krävs för att delta som en sammansättningsmedlem, så skulle vanligtvis ingångsparametrarna till tjänsten vara mer finkorniga jämfört med situationen när det krävs att delta som en sammansättningskontrollant. En mycket återanvänd tjänst måste vara så tillståndslös som möjligt ( servicestatslöshetsprincipen ) så att den kan ge optimal prestanda när den är sammansatt inom flera tjänstesammansättningar. Effektiviteten av denna princip beror på i vilken utsträckning resten av designprinciperna har tillämpats framgångsrikt. Tillämpningen av den standardiserade servicekontraktsprincipen gör tjänsterna interoperabla med andra och hjälper till att hålla sammansättningsdesignen enklare genom att undvika behovet av att utföra runtime-datamodelltransformation. Genom att tillämpa principen om tjänstelös koppling skulle en tjänst kunna återkomponeras med förtroende för att den inte skulle skapa någon form av negativ koppling med den andra tjänsten i sammansättningen. Tillämpningen av tjänsteautonomi och tjänstens statslöshetsprinciper ökar tjänstens tillförlitlighet och tillgänglighet så att den kan återanvändas i flera tjänstesammansättningar med ökat förtroende.
Överväganden
För att tjänsten ska vara en effektiv tjänstekontrollant såväl som en tjänstemedlem måste den underliggande teknikarkitekturen tillhandahålla en körtidsmiljö som är skalbar och kan stödja den tillståndslöshet som tjänsten kräver. På samma sätt som tjänstesammansättningarna ökar i storlek, kan lagring och hämtning av kontextdata, relaterade till tjänsternas körtidsinteraktion, behöva delegeras till runtimemiljön istället för att tjänsterna hanterar denna kontextdata för att göra tjänstsammansättningen mer effektiv.
I takt med att fler och fler tjänstesammansättningar byggs finns det en tendens att bli beroende av en tjänst som är mycket återanvänd. Detta kräver noggrann analys under utformningen av tjänstesammansättningarna och övervägande av alternativa standbytjänster för kritisk funktionalitet. Å andra sidan kan det bli svårt att utveckla en tjänst som nu blivit en del av flera tjänstesammansättningar. Detta skulle kunna åtgärdas genom tillämpningen av designmönstret för Concurrent Contracts som förespråkar att man bibehåller flera samtidiga kontrakt för en tjänst. På så sätt kan tjänsten utvecklas samtidigt som den ger bakåtkompatibilitet.
Några av faktorerna som avgör en tjänsts komponerbarhetspotential inkluderar:
- Förmåga att tillhandahålla funktionalitet på olika nivåer inom en affärsprocess.
- Message Exchange mönster
- Om tjänsten stöder transaktioner och funktioner för återställning/kompensation.
- Stöd för undantagshantering.
- Tillgängligheten av metadata om tjänstens kapacitet och beteende.
Se även
- Kjell-Sverre Jerijærvi. SOA-kontraktsmodell för löptid [Online]. Åtkomstdatum: 21 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.
- Dino Esposito. HTML Message Pattern [Online]. Åtkomstdatum: 21 april 2010.
- Serviceorienteringsprinciper
- Anne Thomas Manes. SOA-manifestet [online]. Åtkomstdatum: 21 april 2010.
- Wojciech Cellary, Sergiusz Strykowski. E-förvaltning baserad på molnberäkning och tjänsteorienterad arkitektur [ online]. Åtkomstdatum: 22 april 2010.
- Sun, L., Dong, H., Hussain, FK, Hussain, OK, Chang, E.: Val av molntjänster: Toppmoderna och framtida forskningsriktningar. Journal of Network and Computer Applications [Online] 45 (oktober 2014) s. 134-150. Åtkomstdatum: 16 juni 2015.