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.

Przykład działania wielu klientów z serwerem

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 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.

[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.

[edytuj] Zobacz też