Architektury Klient-serwer

Architektura typu klient-serwer – architektura, w której wystepują dwa główne typy komponentów – klient, oraz serwer. Serwer jest oprogramowaniem dostarczającym pewne usługi klientowi. Głownym modelem komunikacji w tego typu architekturach jest model żądanie-odpowiedź. Do najważniejszych typów architektur klient-serwer zaliczamy architektury warstwowe – dwuwarstwowe, trójwarstwowe oraz wielowarstwowe.

Architektura dwuwarstwowa

Architektura dwuwarstwowa – architektura składająca się z trzech typów komponentów umieszczonych w dwóch warstwach fizycznych. W architekturze tej występują następujące typy komponentów:

  • interfejs użytkownika (User Interface),

  • logika przetwarzająca,

  • baza danych.

Wszystkie komponenty umieszczone są w dwóch fizycznych warstwach – logika przetwarzająca jest podzielona pomiędzy obie warstwy.

Źródło: opracowanie własne

Konsekwencje - zalety

Zalety architektury dwuwarstwowej:

  • skalowalność – najczęściej nie więcej niż do 100 użytkowników,

  • ergonomia – dzięki UI istnieje możliwość graficznego interfejsu użytkownika,

  • elastyczność.

Architektura trójwarstwowa

Architektura trójwarstwowa – architektura składająca się z trzech typów komponentów umieszczonych w trzech warstwach fizycznych. W architekturze tej tak samo jak w architekturze dwuwarstwowej występują następujące typy komponentów:

  • interfejs użytkownika (User Interface),

  • logika przetwarzająca,

  • baza danych.

Każdy komponent umieszczony jest w osobnej warstwie fizycznej – logika przetwarzająca została umieszczona w osobnej warstwie fizycznej

Źródło: opracowanie własne

Niekiedy warstwa logiki przetwarzającej (middleware) jest dodatkowo dzielona na dwie osobne warstwy – warstwę webową oraz warstwę biznesową (middleware). Mamy wtedy do czynienia z architekturą wielowarstwową.

Konsekwencje - zalety

Poniżej lista zalet architektury trójwarstwowej:

  • skalowalność – lepsza niż w architekturze dwuwarstwowej, możliwość skalowania każdej warstwy osobno,

  • wydajność – ustawienia każdej warstwy można optymalizować osobno, możliwość wprowadzenia load-balancingu pomiędzy warstwami, możliwośc wprowadzenia keszowania danych w warstwie przetwarzającej.

  • elastyczność – warstwa logiki zarządza zasobami zazwyczaj na podstawie ich nazw co zwiększa elastyczność i ułatwia skalowanie.

  • łatwe zarządzanie – wydzielenie logiki przetwarzającej do osobnej warstwy przyczyniło się do ułatwienia zarządzania logiką – łatwiej zainstalować nową wersję oprogramowania, łatwiej monitorować itp.

Comments