Vzory softwarové architektury od Marka Richardse

Klíčové pojmy

Na obrázku 1-2 si všimněte, že každá z vrstev architektury je označena jako uzavřená. To je velmi důležitý koncept vzoru vrstvené architektury. Uzavřená vrstva znamená, že když se požadavek přesouvá z vrstvy do vrstvy, musí projít vrstvou hned pod ní, aby se dostal do další vrstvy pod ní. Například požadavek pocházející z prezentační vrstvy musí nejprve projít obchodní vrstvou a poté vrstvou perzistence, než se konečně dostane do databázové vrstvy.

Obrázek 1-2. Uzavřené vrstvy a přístup k požadavkům

Proč tedy neumožnit prezentační vrstvě přímý přístup buď k vrstvě perzistence, nebo k databázové vrstvě? Přímý přístup k databázi z prezentační vrstvy je přece mnohem rychlejší než procházení spoustou zbytečných vrstev jen proto, abychom získali nebo uložili informace z databáze. Odpověď na tuto otázku spočívá v klíčovém konceptu známém jako vrstvy izolace.

Koncept vrstev izolace znamená, že změny provedené v jedné vrstvě architektury obecně nemají dopad na komponenty v jiných vrstvách ani je neovlivňují: změna je izolována na komponenty v rámci této vrstvy a případně na další přidruženou vrstvu (například vrstvu persistence obsahující SQL). Pokud byste prezentační vrstvě umožnili přímý přístup k perzistenční vrstvě, pak by změny provedené v SQL v rámci perzistenční vrstvy ovlivnily jak obchodní, tak prezentační vrstvu, čímž by vznikla velmi těsně provázaná aplikace s mnoha vzájemnými závislostmi mezi komponentami. Tento typ architektury je pak velmi obtížné a nákladné měnit.

Koncepce izolovaných vrstev také znamená, že každá vrstva je nezávislá na ostatních vrstvách, čímž má jen malou nebo žádnou znalost vnitřního fungování ostatních vrstev v architektuře. Abychom pochopili sílu a důležitost tohoto konceptu, vezměme v úvahu rozsáhlé úsilí o refaktorizaci při převodu prezentačního rámce z JSP (Java Server Pages) na JSF (Java Server Faces). Za předpokladu, že smlouvy (např. model) používané mezi prezentační a obchodní vrstvou zůstanou stejné, není obchodní vrstva refaktorizací ovlivněna a zůstává zcela nezávislá na typu frameworku uživatelského rozhraní používaného prezentační vrstvou.

Ačkoli uzavřené vrstvy usnadňují vrstvy izolace, a proto pomáhají izolovat změny v rámci architektury, existují situace, kdy má smysl, aby některé vrstvy byly otevřené. Předpokládejme například, že chcete do architektury přidat vrstvu sdílených služeb obsahující společné komponenty služeb, ke kterým přistupují komponenty v rámci obchodní vrstvy (např. datové a řetězcové obslužné třídy nebo třídy pro audit a protokolování). Vytvoření vrstvy služeb je v tomto případě obvykle dobrý nápad, protože z architektonického hlediska omezuje přístup ke sdíleným službám na obchodní vrstvu (a nikoli na prezentační vrstvu). Bez samostatné vrstvy neexistuje nic, co by z architektonického hlediska omezovalo přístup prezentační vrstvy k těmto společným službám, což ztěžuje řízení tohoto omezení přístupu.

V tomto příkladu by se nová vrstva služeb pravděpodobně nacházela pod obchodní vrstvou, což by znamenalo, že komponenty v této vrstvě služeb nejsou přístupné z prezentační vrstvy. To však představuje problém v tom, že obchodní vrstva nyní musí projít vrstvou služeb, aby se dostala k vrstvě perzistence, což nedává žádný smysl. To je odvěký problém vrstvené architektury, který se řeší vytvořením otevřených vrstev v rámci architektury.

Jak je znázorněno na obrázku 1-3, vrstva služeb je v tomto případě označena jako otevřená, což znamená, že požadavky mohou tuto otevřenou vrstvu obejít a přejít přímo do vrstvy pod ní. V následujícím příkladu, protože vrstva služeb je otevřená, je nyní obchodní vrstvě dovoleno ji obejít a přejít přímo na vrstvu perzistence, což dává smysl.

Obrázek 1-3. Otevřené vrstvy a tok požadavků

Použití konceptu otevřených a uzavřených vrstev pomáhá definovat vztah mezi vrstvami architektury a toky požadavků a také poskytuje návrhářům a vývojářům potřebné informace pro pochopení různých omezení přístupu vrstev v rámci architektury. Neschopnost zdokumentovat nebo řádně sdělit, které vrstvy v architektuře jsou otevřené a které uzavřené (a proč), obvykle vede k těsně provázaným a křehkým architekturám, které se velmi obtížně testují, udržují a nasazují.

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.