Servisní vrstva
Servisní vrstva (angl. Service Layer) definuje v inteligentních sítích a ve vícevrstvové architektuře OSA hranici aplikace a stanovuje množinu dostupných operací z pohledu klienta. Servisní vrstva zapouzdřuje business logiku, kontrolu transakcí a koordinaci odpovědí aplikace na implementované operace. Servisní vrstva je vzor pro uspořádání business logiky a někdy je nazývána vrstvou aplikační logiky.
Přístupy
[editovat | editovat zdroj]Pojem Service Layer může mít více interpretací. Podle Martina Fowlera je servisní vrstva zodpovědná za aplikační logiku aplikace, které se často říká „workflow logic“ (logika pracovního postupu). Existují dva základní přístupy k této vrstvě.
První přístup se nazývá doménová fasáda (angl. domain facade), v níž servisní vrstvu tvoří množina tenkých fasád nad doménovým modelem (angl. domain model). Třídy implementující fasádu neobsahují business logiku. Veškerou logiku implementuje doménový model. Tenké fasády obsahují pouze množiny operací, pomocí nichž komunikují s klientskými vrstvami.
Druhý způsob se nazývá Operations Script, ve kterém je servisní vrstva implementovaná sadou silnějších tříd, které přímo implementují aplikační logiku, ale delegují na doménová třídy doménovou logiku. Operace dostupné klientovi mají podobu skriptu, protože organizují práci mezi různými třídami z různých oblastí. Každá taková třída má většinou ve svém názvu "Service".
Identifikace operací a servis
[editovat | editovat zdroj]Identifikace operací potřebných na servisní vrstvě je velice jednoduchá. Jsou stanoveny potřebami klientské vrstvy, především uživatelským rozhraním. Uživatelské rozhraní podporuje případy užití, tudíž většina operací jsou tzv. CRUD (create, read, update, delete). Každá z těchto operací je jednou z operací servisní vrstvy.
Identifikace services k seskupení souvisejících operací už není tak jednoduchá. Pro malé aplikace stačí jedna service pojmenovaná dle aplikace. Větší aplikace většinou bývají rozděleny do subsystémů, kde je vhodné mít jednu service pro subsystém pojmenovanou dle daného subsystému. Další možností jsou services pojmenované dle domény např. ProductService nebo tematické services.
Implementace v Javě
[editovat | editovat zdroj]V obou přístupech mohou být třídy servisní vrstvy implementovány jako POJO objekty (angl. Plain Old Java Object) nebo komponenty Enterprise Java Beans.
Kdy nepoužívat servisní vrstvu
[editovat | editovat zdroj]Servisní vrstva není potřeba, pokud má aplikační logika pouze jednoho klienta - např. uživatelské rozhraní a aplikace nezahrnuje více transakčních zdrojů. Potom může transakce manuálně kontrolovat a koordinovat controller stránek, který je může delegovat přímo na Data Source vrstvu.
Literatura
[editovat | editovat zdroj]- Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford: Patterns of Enterprise Application Architecture ISBN 0-321-12742-0