Servisní vrstva
Author
Albert FloresServisní 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
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). +more 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. +more 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í. +more Každá taková třída má většinou ve svém názvu "Service".
Identifikace operací a servis
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. +more 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. +more 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ě
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
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ů. +more Potom může transakce manuálně kontrolovat a koordinovat controller stránek, který je může delegovat přímo na Data Source vrstvu.
Literatura
Martin Fowler, David Rice, Matthew Foemmel, Edward Hieatt, Robert Mee, Randy Stafford: Patterns of Enterprise Application Architecture