Koncepcja aplikacji klient/serwer

Klient/serwer jest to taki model budowania systemów informatycznych, który pozwala na rozproszenie aplikacji, danych i usług na różne komputery połączone w sieci. Aby go zrealizować, w sieci muszą istnieć procesy zgłaszające żądania (klienci) i procesy obsługujące je (serwery). Procesy klientów i serwerów mogą działać na różnych komputerach. Zasadniczą sprawą dla zrozumienia idei konstruowania systemów klient/serwer jest możliwość wydzielenia funkcji, wykonujących określone usługi dla potrzeb klientów (lub innych serwerów).

Klient/serwer jest to taki model budowania systemów informatycznych, który pozwala na rozproszenie aplikacji, danych i usług na różne komputery połączone w sieci. Aby go zrealizować, w sieci muszą istnieć procesy zgłaszające żądania (klienci) i procesy obsługujące je (serwery). Procesy klientów i serwerów mogą działać na różnych komputerach. Zasadniczą sprawą dla zrozumienia idei konstruowania systemów klient/serwer jest możliwość wydzielenia funkcji, wykonujących określone usługi dla potrzeb klientów (lub innych serwerów).

Cele

Celem aplikacji klient/serwer jest umożliwienie użytkownikowi dostępu do informacji, niezależnie od miejsca jej lokalizacji w sieci. Aplikacja taka powinna odznaczać się następującymi właściwościami:

Niezależność od lokalizacji. Serwer jest to proces, który może rezydować na dowolnej maszynie w sieci, także na tej samej, na której działa klient. Działanie programu klienta nie może zależeć od lokalizacji procesów. Niezależność ta zapewnia odpowiednia, pośrednia warstwa oprogramowania (middleware), ukrywająca przed klientem szczegóły dotyczące lokalizacji.

Udostępnianie zasobów. Serwer może zajmować się dowolną liczbą klientów, udostępniając im obsługiwane zasoby (funkcje obliczeniowe, drukarkę, dyski, serwer bazy danych, serwer aplikacji CAD i in.)

Skalowalność aplikacji. Dodanie nowych stacji roboczych (zwykle są to PC), na których wykonuje się program klienta, nie powinna mieć wpływu na działanie systemu (także szybkość obsługi nie powinna ulec zmianie). Podobnie zwiększenie mocy obliczeniowej lub nawet zamiana komputera, na którym działa serwer lub rozproszenie serwera na kilka komputerów, nie powinno mieć żadnego wpływu na działanie systemu. Aplikacja powinna być tak napisana, aby wybór procesora, na którym działa serwer był dokonywany w czasie pracy systemu, nie w czasie jej opracowywania.

Współpraca przez sieć. Idealny system klient/serwer działa niezależnie od użytej technologi łączenia komputerów w sieci, użytego protokołu komunikacyjnego czy systemu operacyjnego.

Przenośność. Aplikacja powinna być tak opracowana, aby przeniesienie jej na inną platformę sprzętową i systemową nie stanowiło problemu. Można to zrealizować używając narzędzi, tworzących kod niezależny od docelowego środowiska implementacji.

Architektura klient/serwer

Współczesne systemy klient/serwer składają się na ogół z komputerów PC (stacji roboczych, Xterminali), na których prezentowane są wyniki pracy systemu i skąd wprowadzane są do niego dane, działających jako stacje klienckie i serwerów. Na stacjach klienta działają także gotowe programy do zastosowań biurowych (edytory tekstowe, arkusze obliczeniowe, programy graficzne). Dobrze opracowane aplikacje klient/serwer wykorzystują te programy w celu poszerzenia właściwości funkcjonalnych aplikacji, udostępniania danych między tymi programami i automatyzacji operacji powtarzalnych na uzyskanych danych (analizy statystyczne, obliczenia numeryczne, prezentowanie w formie graficznej).

Najczęściej systemy klient/serwer są związane z obsługą baz danych, chociaż łatwo wyobrazić sobie systemy tego typu przeznaczone do obsługi skomplikowanych zadań inżynierskich, korzystające z mocy obliczeniowej wysokiej klasy komputera w celu prowadzenia zaawansowanych obliczeń numerycznych, prezentowanych następnie na stacji roboczej klienta w postaci diagramów, wykresów czy schematów. Obecnie przeważają jednak systemy klient/serwer przeznaczone do obsługi baz danych.

Istnieją dwie zasadnicze formy architektury klient/serwer do obsługi baz danych: dwuý i trójwarstwowa. W architekturze dwuwarstwowej wielu klientów korzysta z danych z jednego serwera. W architekturze trójwarstwowej dane znajdują się na wielu serwerach i ich aktualizacja wymaga dokonania jednoczesnej, skoordynowanej operacji na dwóch lub więcej komputerach. Do tego celu używa się tzw. monitora transakcji, chociaż ogólna architektura trójwarstwowa wykracza poza systemy z monitorem transakcji.

Monitor transakcji stanowi integralną część wielu systemów zarządzania bazami danych; istnieją także handlowo dostępne, samodzielne monitory transakcji, współpracujące z wieloma systemami baz danych. Jego zadaniem jest taka koordynacja działania serwerów, aby dane zostały zaktualizowane poprawnie. Jeżeli na przykład na jednym serwerze dokonuje się operacji debetu z konta jednego klienta banku, na korzyść drugiego klienta tegoż banku, którego dane znajdują się na drugim serwerze, to operacja może być dokonana jedynie na obydwu serwerach. Jeżeli z jakiegoś powodu (awaria, błędne dane klienta, przekroczony limit kredytu) operacja się nie uda, to nie mogą nastąpić żadne zmiany w danych któregokolwiek z klientów. I tym właśnie między innymi zajmuje się monitor transakcji.

Aplikacje klient/serwer

Jak pokazano na rysunku, aplikacja klient/serwer działająca na wielu stacjach roboczych klientów, korzysta poprzez sieć z wielu różnych serwerów. Wszystkie te elementy systemu łączy pośrednia warstwa oprogramowania (middleware), służąca do uniezależnienia aplikacji od rodzaju użytych komputerów, systemów operacyjnych i protokołów sieciowych.

Jednakże różne usługi, niedostępne w typowych systemach operacyjnych (synchronizacja czasowa, bezpieczeństwo, usługi katalogowe umożliwiające rozwiązywanie problemów niezależności od lokalizacji) muszą być zrealizowane przez te części aplikacji, które będą wykorzystywane przez wielu klientów i wiele serwerów.

Rozdział funkcjonalny

W celu umożliwienia rozdzielenia części aplikacji na różne komputery (procesory), musi ona być podzielona na niezależne części funkcjonalne:

* część prezentacyjną

* część związaną z realizacją biznesowych usług aplikacji

* obsługę danych aplikacji.

Poszczególne części aplikacji mogą być dzielone na mniejsze elementy składowe, realizowane na rozdzielnych procesorach. Najbardziej popularny model dwupoziomowej aplikacji klient/serwer polega na przydzieleniu funkcji prezentacji do stacji roboczej, a funkcji biznesowych usług aplikacji i obsługi danych do procesora - serwera aplikacji. Przeniesienie części funkcji biznesowych na stację roboczą zmniejsza obciążenie serwera, nie tworzy jednak sensu stricte środowiska przetwarzania rozproszonego klient/serwer. Przetwarzanie rozproszone można zrealizować jedynie w takim modelu funkcjonalnego rozdziału aplikacji, w którym da się wydzielić pewne usługi, wspólnie wykorzystywane przez wielu klientów i zrealizować je jako oddzielne moduły funkcjonalne.

Enkapsulacja usług. Serwer jest to specjalityczny proces (moduł funkcjonalny) realizujący określone usługi na podstawie żądania przesyłanego do niego w sieci. Przykładem takiego serwera będzie obsługa podejmowania pieniędzy z konta klienta banku, z której może korzystać zarówno kasjer wypłacający mu pieniądze, jak bankomat dokonujący tej samej operacji z karty klienta. Serwer działa na dowolnym z komputerów sieci i jego kod może być dowolnie zmieniany, pod warunkiem, że nie ulegną zmianie zasady uruchamiania jego usług (interfejs zewnętrzny, API).

Serwerem jest także system zarządzania bazami danych , operujący na danych w bazie na podstawie komunikatów SQL, przesyłanych do niego przez poszczególnych klientów. Inny przykład serwera to system zapewniania bezpieczeństwa danych w sieci, realizujący weryfikację użytkowników, dostarczający im haseł jednorazowego użytku, uprawniających do dostępu do sieci i realizujący utajnianie komunikatów przesyłanych w sieci. W sieciach z rozproszeniem danych na różnych komputerach, istnieje także konieczność korzystania z serwera czasowego, synchronizującego zegary wszystkich komputerów w sieci.


TOP 200