Powrót do strony głównej

Wielowarstwowa architektura: podwarstwy i modele danych

Artykuł opisuje wielowarstwową architekturę aplikacji z wykorzystaniem podwarstw i hierarchii modeli danych. Omówiono struktury single/multi-tier, mechanizmy dataflow i przykłady dla aplikacji webowych. Nadaje się dla middle/senior deweloperów.

Hierarchia warstw w architekturze aplikacji: pełna analiza
Advertisement 728x90

Wielowarstwowa architektura aplikacji: hierarchia podwarstw i modele danych

Wielowarstwowa architektura pozwala strukturyzować aplikacje, dzieląc funkcjonalność na izolowane warstwy: warstwę fasady dla dostępu zewnętrznego, warstwę logiki biznesowej oraz warstwę trwałości dla przechowywania danych. Każda warstwa składa się z podwarstw — podwarstwy fasady, podwarstwy logiki i podwarstwy dostępu do danych — zapewniających jednokierunkową interakcję i dwukierunkową wymianę danych między modelami.

Główne komponenty aplikacji jednowarstwowej

Aplikacja jednowarstwowa łączy trzy grupy funkcjonalności:

  • Funkcjonalność warstwowa: zestaw izolowanych warstw z jednokierunkową interakcją między sąsiednimi warstwami i podwarstwami.
  • Funkcjonalność poprzeczna: wspólne mechanizmy dostępne dla wszystkich warstw, takie jak logowanie czy zabezpieczenia.
  • Funkcjonalność przepływu danych: operacje przenoszenia danych, w tym:

- Mapowanie danych do transformacji między modelami danych.

Google AdInline article slot

- Powiązywanie danych z interfejsem użytkownika (UI).

- Serializacja danych do wymiany z zewnętrznymi systemami przez kanał transferu danych.

Interakcja warstw jest zorganizowana hierarchicznie: sąsiednie warstwy wymieniają dane jednokierunkowo, modele danych — dwukierunkowo. Aplikacja komunikuje się z zewnętrznymi konsumentami (konsumenci/producenci danych) przez interfejs wejściowy aplikacji, a z zewnętrznymi źródłami danych (lokalnymi/zdalnymi) przez interfejs wyjściowy aplikacji.

Google AdInline article slot

Lokalne źródła danych: pliki, porty USB/COM/LPT. Zdalne: bazy danych, FTP, LDAP, serwisy webowe, brokerzy wiadomości.

Struktura warstwy i podwarstw

Warstwa obejmuje funkcjonalność i powiązane modele danych. Podwarstwy:

  • Podwarstwa fasady: API dla dostępu z zewnątrz (metody publiczne).
  • Podwarstwa logiki: wewnętrzna logika warstwy.
  • Podwarstwa dostępu do danych: dostęp do zewnętrznych źródeł.

Przykłady interakcji:

Google AdInline article slot
  • Warstwa fasady: obsługiwacze zdarzeń UI lub endpointy.
  • Warstwa logiki: koordynacja logiki biznesowej (logika aplikacji).
  • Warstwa trwałości: obiekty dostępu do danych (DAO).

Podwarstwa logiki warstwy fasady formuje zawartość UI (np. szablony widoków w ASP.NET MVC) i walidatory (UniqueValueValidator z zapytaniem do bazy przez podwarstwę dostępu do danych).

Podwarstwa logiki warstwy logiki realizuje logikę domenową, interagując z warstwą trwałości dla danych referencyjnych lub w algorytmach rekurencyjnych.

Zewnętrzne interfejsy i granice aplikacji

  • Górna granica aplikacji: brama do zewnętrznych konsumentów przez interfejs wejściowy (formularze wizualne, gniazda po stronie serwera, timery).
  • Dolna granica aplikacji: brama do źródeł danych przez interfejs wyjściowy (gniazda, sterowniki baz danych).

Dostęp do danych z warstw fasady/logiki:

  • Bezpośredni do lokalnych źródeł.
  • Przez interfejs wyjściowy do zdalnych.
  • Przez warstwę trwałości do baz danych.

Warstwa trwałości skupia się na przechowywaniu i przetwarzaniu danych trwałych.

Przykłady architektur

Schematy strukturalne pokazują zastosowanie w serwisach webowych, przeglądarce raportów i ASP.NET MVC.

W przeglądarce raportów:

  • Podwarstwa fasady: formularz wizualny z komponentem przeglądarki raportów.
  • Podwarstwa logiki: generator raportów ze szablonami (szablony raportów), korzystający z danych z podwarstwy dostępu do danych.
  • Podwarstwa dostępu do danych: zapytania do warstwy trwałości dla danych raportowych.

Wielowarstwowa architektura rozszerza jednowarstwową: każde ogniwo to warstwowa aplikacja, opisując Client-Server, Event-Driven, Pipes and Filters, SOA, Mikrousługi.

Co jest najważniejsze

  • Podział na warstwy (fasada, logika, trwałość) zapewnia izolację i skalowalność.
  • Podwarstwy (fasada, logika, dostęp do danych) standaryzują API i logikę.
  • Jednokierunkowa interakcja warstw minimalizuje cykle zależności.
  • Przepływ danych (mapowanie, powiązywanie, serializacja) ujednolica przenoszenie danych.
  • Granice aplikacji (interfejsy wejściowy/wyjściowy) wyraźnie oddzielają kontekst wewnętrzny od zewnętrznego.

— Editorial Team

Advertisement 728x90

Czytaj dalej