Klient-serwer
Z Wikipedii
Klient/serwer to 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.
Spis treści |
[edytuj] 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.
[edytuj] 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ź.
[edytuj] 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.
[edytuj] Wady
- Duża ilość 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 hardware, które nie występują w większości komputerów domowych.
[edytuj] 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.