Tjänsteabstraktion

Tjänsteabstraktion är en designprincip som tillämpas inom det tjänsteorienterande designparadigmet så att informationen som publiceras i ett tjänstekontrakt begränsas till vad som krävs för att effektivt utnyttja tjänsten Tjänstekontraktet ska inte innehålla någon överflödig information som inte krävs för att dess åkallan. Dessutom bör informationen begränsas till endast det serviceavtal (tekniska kontraktet och servicenivåavtalet ), inget annat dokument eller medium bör göras tillgängligt för tjänstekonsumenterna förutom serviceavtalet som innehåller ytterligare servicerelaterad information.

Syfte

Ett serviceavtal som innehåller detaljer om vad det kapslar in (t.ex. logiken, implementeringen och tekniken som används för att bygga tjänsten) kan sluta användas på ett särskilt sätt genom att ge tjänstekonsumenten mer kunskap om tjänstens funktion. När det gäller serviceinriktning är mer kunskap inte nödvändigtvis bättre. Det finns en chans att ytterligare information kan försvåra återanvändbarheten av tjänsten eftersom tjänstekonsumentens designer kan effektivisera sin design baserat på denna kunskap. Att göra det skulle dock påverka utvecklingen av tjänstekontraktet eftersom tjänstekonsumenten nu är indirekt kopplad till tjänsteimplementeringen, som kan behöva bytas ut i framtiden. Detta ökar konsument-till-kontrakt-typen av koppling, vilket är en positiv typ av koppling. Att ha ett för stort beroende kan dock påverka utvecklingen för både tjänsteleverantören och tjänstekonsumenten negativt.

Att dölja information är fortfarande en av nyckelprinciperna inom objektorienterat paradigm som främjar att man abstraherar bort det inre arbetet i ett program . Ett klassiskt exempel skulle vara användningen av abstrakta klasser för att dölja den faktiska metodlogiken. Samma koncept tillämpas av tjänsteabstraktionsprincipen för att dölja de onödiga detaljerna om tjänstens funktion i syfte att underlätta tjänstens utveckling.

Ansökan

Tillämpningen av denna designprincip kräver att man undersöker fyra olika typer av abstraktioner som kan tillämpas på en tjänst.

Funktionell abstraktion

Denna form av abstraktion är beroende av hur mycket av tjänstelogiken som exponeras som tjänstekapacitet. Ett exempel skulle vara en klass där vissa av dess metoder är privata medan andra är offentliga. En klass skulle bara exponera de metoder som offentliga som den anser vara viktiga för dess objekt, alla hjälpmetoder som inte är relevanta för objekten hålls dolda.

Ett serviceavtal som inte har varit föremål för denna princip skulle kunna betecknas som ett "detaljerat kontrakt" som avslöjar mycket av affärsregler och valideringslogik. När denna princip väl har tillämpats i rimlig grad kan avtalet betecknas som ett "koncis avtal". Ytterligare tillämpning av denna designprincip skulle resultera i ett "optimerat kontrakt" som maximerar återanvändningspotentialen för tjänsten.

Teknikinformation abstraktion

All information om den underliggande teknologin som används inom tjänsten skulle resultera i en låg teknologisk informationsabstraktion eftersom tjänstekontraktet uttryckligen talar om för tjänstekonsumenterna hur tjänstelogiken och dess implementering är utformad. Denna extra information kan leda till att tjänstekonsumenter utformas på ett sätt som specifikt inriktar sig på just den implementeringen, och därigenom utveckla en koppling mellan konsument och implementering.

Logisk abstraktion

De programmatiska detaljerna om tjänstelogiken måste abstraheras eftersom kunskap om hur tjänsten faktiskt utför sin funktionalitet kan resultera i att tjänstekonsumenter tar hänsyn till denna information och därför utformas under dessa antaganden. Detta kan allvarligt hämma servicelogikrefaktoreringsinsatser och kan betraktas som ett antimönster mot tillämpningen av servicerefaktoreringsdesignmönstret .

Kvalitet abstraktion

Kvalitetsabstraktion avser de detaljer som tillhandahålls i tjänstens medföljande servicenivåavtal. Det är viktigt att bara koncentrera sig på den typen av information som faktiskt skulle hjälpa till att avgöra tjänstens tillförlitlighet och tillgänglighet, ingen annan information bör inkluderas som avslöjar onödiga detaljer, t.ex. detaljer om hur en tjänst sitter i den övergripande affärsprocessen och vilken andra tjänster som den använder för att uppfylla sin funktionalitet.

Nivån på åtkomstkontroll som tillämpas på en tjänst skulle avgöra hur mycket av tekniken, logiken och kvaliteten på tjänsteabstraktionerna som finns på plats. En "open access" skulle ge fri tillgång till alla som är intresserade av att ta reda på designspecifikationerna för en tjänst. I en "kontrollerad åtkomst" ges endast behöriga personer åtkomst och en policy för "ingen åtkomst" skulle helt neka all tillgång till designdokumenten.

Överväganden

Även om informationsdöljning anses vara en hälsosam praxis, kan dock för mycket informationsdöljning vara kontraproduktivt eftersom det kan begränsa tjänstens återanvändbarhetsnivå. Detta kan också resultera i redundanta tjänster eftersom tjänstedesigners inte har tillräckligt med information om tjänstens möjligheter. För detta måste varje tjänstekontrakt utformas på ett kortfattat men heltäckande sätt så att tjänstens möjligheter effektivt kan upptäckas och tolkas enligt principen om tjänstens upptäckbarhet .

Den typ av information som exponeras i serviceavtalet kan också leda till vissa säkerhetsrelaterade problem. till exempel kan en tjänst som sprider informationen om databasen som används till följd av ett internt fel falla offer för en attack där angriparen använder sig av de rapporterade feldetaljerna och försöker ansluta till databasen. Detta skulle kunna åtgärdas genom tillämpningen av designmönster för meddelandescreening och undantagsskärmning .

Vidare läsning

externa länkar