Klient-serwer –
asymetryczna
architektura
oprogramowania
umożliwiająca rozdzielenie pewnych funkcjonalności, w celu zwiększenia elastyczności i ułatwienia wprowadzania zmian w każdej z części. Polega to na ustaleniu, że serwer zapewnia usługi dla klientów, którzy mogą komunikować się z serwerem wysyłając żądanie (request). Podstawowe i najczęściej używane serwery to: serwer pocztowy,
serwer WWW
,
serwer plików
,
serwer aplikacji
. Z usług jednego
serwera
może zazwyczaj korzystać wielu klientów. Zdarza się, że jeden
klient
może korzystać jednocześnie z usług wielu serwerów.
Cechy charakterystyczne serwera:
- Pasywny
- Czeka na żądania od klientów
- W momencie otrzymania żądania, przetwarza je, a następnie wysyła odpowiedź
Cechy charakterystyczne klienta
- Aktywny
- Wysyła żądanie do serwera
- Oczekuje na odpowiedź od serwera
Odmianą połączenia klient-serwer jest sieć
P2P
, gdzie każdy komputer może pełnić role klienta i serwera.
Architektura
Ze względu na podział wykonywanych zadań wyróżnia się następujące typy architektury klient/serwer:
- architektura dwuwarstwowa – przetwarzanie i składowanie danych odbywa się w jednym module
-
architektura trójwarstwowa
– przetwarzanie i składowanie danych następuje w dwóch osobnych modułach
-
architektura wielowarstwowa
– przetwarzanie, składowanie i inne operacje na danych odbywają się w wielu osobnych modułach.
Komunikacja
Połączenie pomiędzy klientem a serwerem opisane jest przy pomocy
protokołów sieciowych
. Najczęściej spotykanym jest protokół
TCP/IP
. W większości przypadków komunikacja opiera się na schemacie, w którym klient nawiązuje połączenie z serwerem. Następnie wysyła żądanie w określonym formacie do serwera i oczekuje na jego odpowiedź. Serwer cały czas oczekuje na klientów i w momencie otrzymania żądania przetwarza je i wysyła odpowiedź.
Zalety
- Wszystkie informacje przechowywane są na serwerze, wobec tego możliwe jest lepsze zabezpieczenie danych. Serwer może decydować kto ma prawo do odczytywania i zmiany danych.
- Istnieje wiele rozwiniętych technologii wspomagających działanie, bezpieczeństwo i użyteczność tego typu rozwiązania.
Wady
- Duża liczba klientów próbujących otrzymać dane z jednego serwera powoduje różnego typu problemy związane z przepustowością łącza oraz technicznymi możliwościami przetworzenia żądań klientów.
- W czasie, gdy serwer nie działa, dostęp do danych jest całkowicie niemożliwy.
- Do uruchomienia jednostki będącej serwerem z możliwością obsługi dużej ilości klientów potrzebne jest specjalne oprogramowanie oraz
sprzęt komputerowy
, które nie występują w większości komputerów domowych.
Przykłady
Mimo faktu, że główna idea może być zaimplementowana na wiele sposobów, najprostszym przykładem są strony internetowe. Przeglądając strony internetowe komputer użytkownika jest klientem, a komputery które obsługują bazy danych i inne aplikacje potrzebne do obsługi połączenia to serwer. W momencie gdy przeglądarka żąda jakiejś strony, serwer wyszukuje odpowiednie informacje w bazie danych, przetwarza je do postaci strony internetowej, a następnie wysyła do klienta.
Zobacz też