Wielopoziomowa architektura klient-serwer. Architektura systemów informatycznych

Z reguły komputery i programy wchodzące w skład systemu informatycznego nie są sobie równe. Niektóre z nich posiadają własne zasoby (system plików, procesor, drukarka, baza danych itp.), inne mają możliwość dostępu do tych zasobów. Komputer (lub program) zarządzający zasobem nazywany jest serwerem tego zasobu (serwer plików, serwer bazy danych, serwer obliczeniowy...). Klient i serwer zasobu mogą znajdować się na tym samym komputerze lub na różnych komputerach połączonych siecią.

W widoku wielopoziomowym systemy komputerowe Można wyróżnić trzy grupy funkcji, skupionych na rozwiązywaniu różnych podzadań:

  1. funkcje wprowadzania i wyświetlania danych (zapewniają interakcję użytkownika);
  2. specyficzne dla tego funkcje aplikacji Tematyka;
  3. funkcje zarządzania zasobami (system plików, baza danych itp.)

Ryc.1. Komponenty aplikacji sieciowych

Realizację tych funkcji zapewnia głównie oprogramowanie, które można przedstawić w postaci połączonych ze sobą komponentów (), gdzie:

  • komponent widoku odpowiedzialny za interfejs użytkownika;
  • komponent aplikacji implementuje algorytm rozwiązania konkretnego problemu;
  • element kontrolny zasób zapewnia dostęp do niezbędnych zasobów.

System autonomiczny (komputer niepodłączony do sieci) reprezentuje wszystkie te komponenty jako różne poziomy(OS, oprogramowanie narzędziowe i narzędzia, oprogramowanie aplikacyjne) i na poziomie aplikacji (nietypowym dla nowoczesne programy). Sieć jest taka sama - reprezentuje wszystkie te elementy, ale ogólnie jest rozproszona między węzłami. Zadanie sprowadza się do zapewnienia interakcji sieciowej pomiędzy tymi komponentami.

Architektura klient-serwer określa ogólne zasady organizacji interakcji w sieci, gdzie takie istnieją serwery, węzły zapewniające określone funkcje (usługi) oraz klienci, konsumenci tych funkcji.

Praktyczne implementacje takiej architektury nazywane są technologie klient-serwer. Każda technologia definiuje własne lub wykorzystuje istniejące zasady interakcji pomiędzy klientem a serwerem, tzw protokół wymiany (protokół interakcji).

W każdej sieci (nawet peer-to-peer), zbudowanej w oparciu o nowoczesne technologie sieciowe, występują elementy interakcji klient-serwer, najczęściej opartej na architektura dwupoziomowa. Nazywa się to dwupoziomowym (dwupoziomowym, 2-poziomowym) ze względu na potrzebę dystrybucji trzy podstawowy składniki między dwa węzły(klient i serwer).

Ryc.2. Dwuwarstwowa architektura klient-serwer

W systemach klient-serwer stosowana jest architektura dwuwarstwowa, gdzie serwer odpowiada na żądania klientów bezpośrednio i w całości, wykorzystując wyłącznie własne zasoby. Te. serwer nie wywołuje aplikacji sieciowych innych firm i nie uzyskuje dostępu zasoby stron trzecich wykonać dowolną część żądania ()

Lokalizacja komponentów po stronie klienta lub serwera determinuje następujące podstawowe modele ich interakcji w ramach architektury dwuwarstwowej:

  • serwer terminali— rozproszona prezentacja danych;
  • serwer plików— dostęp do zdalnej bazy danych i zasobów plikowych;
  • Serwer bazy danych— zdalna prezentacja danych;
  • serwer aplikacji- aplikacja zdalna.

Wymienione modele z odmianami są prezentowane na.

Ryc.3. Modele interakcji klient-serwer

Historycznie pierwszy pojawił się model rozproszonej prezentacji danych (model serwera terminali). Został on zaimplementowany na komputerze uniwersalnym (mainframe), który pełnił funkcję serwera, do którego podłączone były terminale alfanumeryczne. Użytkownicy wprowadzali dane z klawiatury terminala, które następnie były przenoszone na komputer typu mainframe i tam przetwarzane, łącznie z utworzeniem „obrazu” wyników. Ten „obrazek” był zwracany użytkownikowi na ekranie terminala.

Wraz z pojawieniem się komputerów osobistych i sieci lokalnych wdrożono model serwera plików, który zapewniał dostęp do zasobów plikowych, w tym do zdalnej bazy danych. W tym przypadku dedykowanym węzłem sieci jest serwer plików, który hostuje pliki bazy danych. Klienci uruchamiają aplikacje, które łączą komponent prezentacji i komponent aplikacji (DBMS i program aplikacyjny), korzystając z podłączonej zdalnej bazy danych jako pliku lokalnego. W tym przypadku protokoły wymiany reprezentują zestaw wywołań niskiego poziomu operacji systemu plików.

Model ten okazał się nieefektywny ze względu na fakt, że przy aktywnej pracy z tabelami bazy danych występuje duże obciążenie sieci. Częściowym rozwiązaniem jest obsługa replikacji tabel i zapytań. W tym przypadku np. przy zmianie danych nie aktualizowana jest cała tabela, a jedynie jej zmodyfikowana część.

Wraz z pojawieniem się wyspecjalizowanych systemów DBMS możliwe stało się wdrożenie innego modelu dostępu do zdalnej bazy danych – modelu serwera baz danych. W tym przypadku jądro DBMS działa na serwerze, program aplikacyjny na kliencie, a protokół komunikacyjny realizowany jest przy użyciu języka SQL. Takie podejście, w porównaniu z serwerem plików, prowadzi do zmniejszenia obciążenia sieci i ujednolicenia interfejsu klient-serwer. Jednak ruch w sieci pozostaje dość duży i nadal nie jest możliwe zadowalające administrowanie aplikacjami, ponieważ różne funkcje są połączone w jednym programie.

Wraz z opracowaniem i wdrożeniem mechanizmu procedury składowanej na poziomie serwera bazy danych koncepcja aktywny serwer bazy danych. W tym przypadku część funkcji komponentu aplikacji zaimplementowana jest w formie procedur składowanych wykonywanych po stronie serwera. Pozostała część logiki aplikacji jest wykonywana po stronie klienta. Protokół interakcji jest odpowiednim dialektem języka SQL.

Zalety tego podejścia są oczywiste:

  • możliwe jest scentralizowane administrowanie funkcjami aplikacji;
  • zmniejszenie kosztu posiadania systemu (TOC, całkowity koszt posiadania) poprzez wynajmowanie serwera zamiast jego zakupu;
  • znaczące zmniejszenie ruch sieciowy(ponieważ przesyłane są nie zapytania SQL, ale wywołania procedur składowanych).

Główną wadą są ograniczone narzędzia do tworzenia procedur składowanych w porównaniu z językami wysokiego poziomu.

Implementacja komponentu aplikacji po stronie serwera reprezentuje następujący model - serwer aplikacji. Przeniesienie funkcjonalności komponentów aplikacji na serwer zmniejsza wymagania konfiguracyjne klienta i upraszcza administrację, ale zwiększa wymagania dotyczące wydajności, bezpieczeństwa i niezawodności serwera.

Obecnie istnieje tendencja do powrotu do miejsca, w którym rozpoczęła się architektura klient-serwer - do centralizacji przetwarzania w oparciu o model terminal-serwer. Terminale we współczesnym wcieleniu różnią się od swoich alfanumerycznych przodków tym, że mając minimum oprogramowania i sprzętu, zapewniają możliwości multimedialne (m.in. Graficzny interfejs użytkownika). Działanie terminali zapewnia wydajny serwer, na którym wszystko się znajduje, aż do sterowniki wirtualne urządzeń, w tym sterowniki podsystemu wideo.

Ryc.4. Trójwarstwowa architektura klient-serwer

Kolejny trend w technologiach klient-serwer jest powiązany ze wszystkim świetny użytek przetwarzanie rozproszone. Realizowane są w oparciu o model serwera aplikacji, gdzie aplikacja sieciowa jest podzielona na dwie lub więcej części, z których każda może być wykonywana na osobnym komputerze. Dedykowane części aplikacji komunikują się ze sobą, wymieniając komunikaty w ustalonym wcześniej formacie. W tym przypadku mamy do czynienia z dwuwarstwową architekturą klient-serwer trzypoziomowy (trzypoziomowy, 3-poziomowy).

Z reguły trzecim ogniwem w architekturze trójwarstwowej jest serwer aplikacji, czyli tzw. komponenty są rozmieszczone w następujący sposób ():

  1. Prezentacja danych jest po stronie klienta.
  2. Komponent aplikacji – na dedykowanym serwerze aplikacji (opcjonalnie realizującym funkcje oprogramowania pośredniczącego).
  3. Zarządzanie zasobami – na serwerze bazy danych, który udostępnia żądane dane.

Ryc.5. Wielowarstwowa (N-warstwowa) architektura klient-serwer

Można rozszerzyć architekturę trójwarstwową wielopoziomowy (N-poziomowy, wielopoziomowy) poprzez przydzielenie dodatkowych serwerów, z których każdy będzie reprezentował własne usługi i korzystać z usług innych serwerów różne poziomy. Abstrakcyjny przykład modelu wielopołączeniowego podano pod adresem.

Porównanie architektur

Architektura dwuwarstwowa jest prostsza, ponieważ wszystkie żądania są obsługiwane przez jeden serwer, ale właśnie z tego powodu jest mniej niezawodna i stawia wyższe wymagania wydajności serwera.

Architektura trójwarstwowa jest bardziej złożona, ale ze względu na fakt, że funkcje są rozdzielone pomiędzy serwerami drugiego i trzeciego poziomu, architektura ta reprezentuje:

  1. Wysoki stopień elastyczności i skalowalności.
  2. Wysokie bezpieczeństwo (ponieważ bezpieczeństwo można zdefiniować dla każdej usługi lub poziomu).
  3. Wysoka wydajność (ponieważ zadania są rozdzielone pomiędzy serwerami).

Technologie klient-serwer

Architektura klient-serwer jest wykorzystywana w duża liczba technologie sieciowe wykorzystywane do uzyskiwania dostępu do różnych usługi sieciowe. Przyjrzyjmy się pokrótce niektórym rodzajom takich usług (i serwerów).

Serwery internetowe Początkowo zapewniały one dostęp do dokumentów hipertekstowych za pośrednictwem protokołu HTTP (Huper Text Transfer Protocol). Teraz obsługują zaawansowane możliwości, w szczególności pracę z pliki binarne(obrazy, multimedia itp.). Serwery aplikacji Zaprojektowany do scentralizowanego rozwiązywania stosowanych problemów w określonym obszarze tematycznym. Użytkownicy mają do tego prawo uruchamiać programy serwerowe do wykonania. Korzystanie z serwerów aplikacji zmniejsza wymagania konfiguracyjne klienta i upraszcza ogólne kierownictwo sieć. Serwery baz danych Serwery baz danych służą do przetwarzania zapytań użytkowników w języku SQL. W tym przypadku SZBD znajduje się na serwerze, z którym łączą się aplikacje klienckie. Serwery plików Serwer plików sklepy informacje w postaci plików i zapewnia użytkownikom dostęp do nich. Z reguły serwer plików zapewnia również pewien poziom ochrony przed nieautoryzowanym dostępem. Serwer proxy Po pierwsze, pełni rolę pośrednika, pomagając użytkownikom uzyskać informacje z Internetu, jednocześnie chroniąc sieć. Po drugie, przechowuje często używane informacje w pamięci podręcznej dysk lokalny, szybko dostarczając je użytkownikom bez konieczności ponownego łączenia się z Internetem. Zapory ogniowe(zapory sieciowe) Zapory ogniowe, analizując i filtrując przechodzący ruch sieciowy w celu zapewnienia bezpieczeństwa sieci. Serwery pocztoweŚwiadczymy usługi wysyłania i odbierania wiadomości e-mail. Serwery zdalny dostęp(RAS) Systemy te zapewniają połączenie z siecią za pośrednictwem linii telefonicznych. Zdalny pracownik może korzystać z zasobów firmowej sieci LAN, łącząc się z nią za pomocą zwykłego modemu.

To tylko kilka rodzajów z całej gamy. technologie klient-serwer, używane zarówno w sieciach lokalnych, jak i globalnych.

Aby uzyskać dostęp do niektórych usług sieciowych, wykorzystuje się klientów, których możliwości charakteryzują się pojęciem „grubości”. Określa konfigurację sprzętową i oprogramowanie dostępne dla klienta. Rozważmy możliwe wartości graniczne:

„Cienki” klient Termin ten definiuje klienta, którego zasoby obliczeniowe wystarczą jedynie do uruchomienia niezbędnej aplikacji sieciowej poprzez interfejs sieciowy. Interfejs użytkownika takiej aplikacji tworzony jest za pomocą środków statyczny HTML ( Wykonanie JavaScriptu nie podano), cała logika aplikacji jest wykonywana na serwerze.
Aby cienki klient działał, wystarczy zapewnić możliwość uruchomienia przeglądarki internetowej, w oknie której przeprowadzane są wszystkie czynności. Z tego powodu przeglądarka internetowa często nazywana jest „klientem uniwersalnym”. Klient „Gruby” Tak to właśnie jest stacja robocza albo komputer osobisty z własnym dyskowym systemem operacyjnym i posiadający niezbędny zestaw oprogramowania. Grubi klienci uzyskują dostęp do serwerów sieciowych głównie w celu dodatkowe usługi(na przykład dostęp do serwera WWW lub korporacyjnej bazy danych).
„Gruby” klient oznacza także kliencką aplikację sieciową działającą w lokalnym systemie operacyjnym. Taka aplikacja łączy w sobie komponent prezentacji danych (graficzny interfejs użytkownika systemu operacyjnego) i komponent aplikacji (moc obliczeniowa komputera klienckiego).

Ostatnio coraz częściej używa się innego określenia: „bogaty” – klient. Klient „bogaty” to swego rodzaju kompromis pomiędzy klientem „grubym” i „cienkim”. Podobnie jak cienki klient, bogaty klient również reprezentuje graficzny interfejs użytkownika, już opisano za pomocą XML-a i zawiera niektóre bogate funkcje klienta (np. interfejs „przeciągnij i upuść”, karty, wiele okien, menu rozwijane itp.)

Na serwerze zaimplementowana jest także logika aplikacji klienta „bogatego”. Dane są wysyłane do standardowy format wymiany, w oparciu o ten sam XML (protokoły SOAP, XML-RPC) i interpretowane przez Klienta.

Poniżej podano niektóre podstawowe protokoły klienckie oparte na formacie XML:

  • XAML (eXtensible Application Markup Language) – opracowany przez firmę Microsoft, stosowany w aplikacjach na platformie .NET;
  • XUL (XML User Interface Language) to standard opracowany w ramach projektu Mozilla, używany m.in klient poczty przeglądarka Mozilla Thunderbird lub Mozilla Firefox;
  • Przewód - technologia multimedialna NA Oparty na XMLu, opracowany przez Macromedia/Adobe.

Wniosek

Więc, Główną ideą architektury klient-serwer jest podzielenie aplikacji sieciowej na kilka komponentów, z których każdy implementuje określony zestaw usług. Komponenty takiej aplikacji mogą działać dalej różne komputery, wykonując funkcje serwera i/lub klienta. Poprawia to niezawodność, bezpieczeństwo i wydajność aplikacji sieciowych oraz sieci jako całości.

Pytania kontrolne

  1. Jaka jest główna idea interakcji CS?
  2. Jaka jest różnica między koncepcjami „architektury klient-serwer” a „technologią klient-serwer”?
  3. Lista komponenty K-S interakcje.
  4. Jakie zadania realizuje komponent prezentacyjny w architekturze KS?
  5. W jakim celu narzędzia dostępu do baz danych prezentowane są jako osobny komponent w architekturze KS?
  6. Dlaczego logika biznesowa jest wyróżniona jako osobny komponent w architekturze KS?
  7. Wymień modele interakcji klient-serwer.
  8. Opisz model serwera plików.
  9. Opisz model serwera bazy danych.
  10. Opisz model „serwera aplikacji”.
  11. Opisz model serwera terminali
  12. Wymień główne typy serwerów.

Stały adres tej strony:

Przygotowanie użytkownika

Ochrona

Wymagania serwera

Udostępnione zasoby

W sieci peer-to-peer każdy komputer musi:

· udostępnij większość swoich zasobów obliczeniowych użytkownik lokalny(do osoby siedzącej przy tym komputerze);

· w celu obsługi dostępu do zasobów użytkownika zdalnego (dostęp do serwera przez sieć), podłącz dodatkowe zasoby obliczeniowe.

Sieć oparta na serwerach wymaga wydajniejszych serwerów, ponieważ muszą one obsługiwać żądania od wszystkich klientów w sieci.

Podstawowa ochrona polega na ustawieniu hasła dla udostępnionego zasobu, takiego jak katalog. Centralne zarządzanie bezpieczeństwem w sieci peer-to-peer jest bardzo trudne, ponieważ każdy użytkownik instaluje je niezależnie, a „współdzielone” zasoby mogą znajdować się na wszystkich komputerach, a nie tylko na serwerze centralnym. Taka sytuacja stwarza poważne zagrożenie dla całej sieci, a niektórzy użytkownicy mogą w ogóle nie zainstalować ochrony. Jeśli kwestie prywatności mają dla Ciebie fundamentalne znaczenie, zalecamy wybór sieci opartej na serwerze.

Ponieważ w sieci peer-to-peer każdy komputer działa zarówno jako klient, jak i serwer, użytkownicy muszą posiadać wystarczającą wiedzę, aby móc działać zarówno jako użytkownicy, jak i administratorzy swojego komputera.

Temat 5.2. Sieciowy system operacyjny. Klient-serwer

Klient-serwer(Klient-serwer) – architektura obliczeniowa lub sieciowa, w której zadania lub obciążenie sieci są rozdzielane pomiędzy dostawców usług, zwanych serwerami, i klientów usług, zwanych klientami. Często klienci i serwery komunikują się za pośrednictwem sieci komputerowej i mogą to być różne urządzenia fizyczne lub oprogramowanie.

Wielopoziomowa architektura klient-serwer to rodzaj architektury klient-serwer, w której funkcja przetwarzania danych realizowana jest na jednym lub większej liczbie oddzielnych serwerów. Dzięki temu można oddzielić funkcje przechowywania, przetwarzania i prezentacji danych na więcej efektywne wykorzystanie możliwości serwerów i klientów.

Szczególne przypadki architektury wielopoziomowej:

· Architektura trójwarstwowa

· Dedykowana sieć serwerów

· Sieć z serwerem dedykowanym (angielska sieć klient/serwer) jest siecią lokalną śieć komputerowa(LAN), w którym urządzenia sieciowe scentralizowane i zarządzane przez jeden lub więcej serwerów. Poszczególne stacje robocze lub klienci (tacy jak komputery PC) muszą uzyskiwać dostęp do zasobów sieciowych za pośrednictwem serwera(ów).

Sieciowy system operacyjny- system operacyjny z wbudowanymi możliwościami pracy w sieciach komputerowych. Takie możliwości obejmują:

· wsparcie sprzęt sieciowy

· wsparcie protokoły sieciowe

· obsługa protokołów routingu

· wsparcie dla filtrowania ruchu sieciowego

· wsparcie dostępu do zasoby zdalne takie jak drukarki, dyski itp. w sieci

Dostępność w systemie usługi sieciowe umożliwiając zdalnym użytkownikom korzystanie z zasobów komputera

Przykłady sieciowych systemów operacyjnych:

Novella NetWare’a

· Microsoft Windows (95, NT, XP, Vista, Seven)

· Różny Systemy UNIX, takie jak Solaris, FreeBSD

· Różne systemy GNU/Linux

ZyNOS od ZyXEL

Nowoczesne sieciowe systemy operacyjne (UNIX, WIN2000, NOWELL NW) implementują pełny stos protokołów modelu OSI, dlatego UNIX obsługuje stos protokołów (TCP/IP, NW LINK, NET BIOS). Nowell NW obsługuje stos protokołów IPX/SPX.Apple Mac korzysta z własnego zestawu protokołów.

Niezależnie od producenta wszystkie sieciowe systemy operacyjne spełniają następujące funkcje:

1. Podział funkcji pomiędzy węzłami sieci (klientami i serwerami);

2. Obsługa protokołów komunikacyjnych;

3. Wsparcie dla sieciowego systemu plików;

4. Ochrona danych.

Wszystkie sieciowe systemy operacyjne można podzielić na 2 typy:

1. Sieci typu peer-to-peer lub peer-to-peer (każda z nich). Przykład Windows 9x;

2. Sieć oparta na serwerze dedykowanym.

K1. W sieci peer-to-peer wszystkie komputery PC mają równe prawa, ale w sieci znajdują się także klienci i serwery. Zwykle każdy komputer PC można przełączyć w tryb serwera, jeśli użytkownik tego chce (przydzielany jest zasób współdzielony).

Systemowi operacyjnemu sieci peer-to-peer brakuje niezawodnej wydajności i bezpieczeństwa. Używany w sieci, gdy jest 10-15 szt. Przykładem sieci peer-to-peer jest Win94/98/OS/2/LANtastic

K2. W tej sieci zawsze znajduje się główny komputer PC - serwer, który jest specjalnie zoptymalizowany do szybkiego przetwarzania żądań od wielu klientów (około -100) oraz do zarządzania ochroną plików i katalogów. W duże sieci wyróżniać się oddzielne serwery Dla indywidualne aplikacje(WEB – serwer, Plik – serwer, Drukuj – serwer, Serwer DB i serwer poczty elektronicznej)

Oprogramowanie serwera jest wysoce zaawansowane, niezawodne i wydajne. Może działać na różnych platformach.

Inny system operacyjny – Unix, Win 2000Server, NovellNetWare

Oprogramowanie klienckie dowolnego systemu operacyjnego umożliwia przekierowanie żądania użytkownika z lokalizacji lokalnej. PC do serwera z niezbędnymi zasobami. Odbywa się to za pomocą specjalnego readresatora (przechwytywacza), który przechwytuje żądanie i określa, czy ma ono zostać wykonane na lokalnym komputerze, czy na serwerze.

Struktura ponownego dyrektora:

DB, na strukturalnym język Zapytania SQL (Strukturalny język zapytań), czyli Standard przemysłowy w świecie relacyjnych baz danych. Serwer zdalny odbiera żądanie i przekazuje je do serwera bazy danych SQL. Serwer SQL – specjalny program, który zarządza zdalną bazą danych. Serwer SQL zapewnia interpretację żądania, jego wykonanie w bazie danych, wygenerowanie wyniku żądania i dostarczenie go do aplikacji klienckiej. W takim przypadku zasoby komputera klienckiego nie są zaangażowane w fizyczną realizację żądania; komputer kliencki wysyła jedynie żądanie do bazy danych serwera i odbiera wynik, po czym interpretuje go jako niezbędny i przedstawia użytkownikowi. Ponieważ wynik żądania jest wysyłany do aplikacji klienckiej, przez sieć „przechodzą” tylko te dane, których potrzebuje klient. W rezultacie zmniejsza się obciążenie sieci. Ponieważ żądanie jest realizowane tam, gdzie przechowywane są dane (serwer), nie ma potrzeby wysyłania dużych partii danych. Dodatkowo serwer SQL, jeśli to możliwe, optymalizuje otrzymane zapytanie tak, aby zostało ono wykonane w jak najkrótszym czasie przy jak najmniejszym nakładzie pracy [[3.2], [3.3]]. system pokazano na rys. 3.3.

Wszystko to zwiększa wydajność systemu i skraca czas oczekiwania na wynik żądania. Gdy zapytania są wykonywane przez serwer, stopień bezpieczeństwa danych znacznie wzrasta, ponieważ reguły integralności danych są zdefiniowane w bazie danych na serwerze i są takie same dla wszystkich aplikacji korzystających z tej bazy danych. Eliminuje to możliwość definiowania sprzecznych zasad zachowania integralności. Potężny silnik transakcyjny obsługiwany przez serwery SQL pozwala zapobiegać jednoczesnym zmianom tych samych danych przez różnych użytkowników oraz zapewnia możliwość przywrócenia oryginalnych wartości w przypadku wprowadzenia zmian w bazie danych, które zakończyły się nieprawidłowo [[3.2], [ 3.3]].


Ryż. 3.3. Architektura klient-serwer

  • Istnieje sieć lokalna, składający się z komputerów klienckich, z których każdy ma aplikacja kliencka do pracy z bazą danych.
  • Na każdym z komputerów klienckich użytkownicy mają możliwość uruchomienia aplikacji. Korzystając z interfejsu użytkownika udostępnianego przez aplikację, inicjuje wywołanie do systemu DBMS zlokalizowanego na serwerze w celu pobrania/aktualizacji informacji. Do komunikacji wykorzystywany jest specjalny język zapytań SQL, tj. Tylko tekst żądania jest przesyłany przez sieć od klienta do serwera.
  • SZBD inicjuje wywołania danych znajdujących się na serwerze, w wyniku czego całe przetwarzanie danych odbywa się na serwerze i jedynie wynik zapytania jest kopiowany na komputer kliencki. W ten sposób DBMS zwraca wynik do aplikacji.

Przyjrzyjmy się jak wygląda rozdzielenie funkcji pomiędzy serwerem i klientem.

  • Funkcje aplikacji klienckiej:
    • Wysyłanie żądań do serwera.
    • Interpretacja wyników zapytań otrzymanych z serwera.
    • Prezentowanie wyników użytkownikowi w jakiejś formie (interfejs użytkownika).
  • Funkcje po stronie serwera:
    • Odbieranie żądań z aplikacji klienckich.
    • Interpretacja próśb.
    • Optymalizacja i realizacja zapytań do baz danych.
    • Przesyłanie wyników do aplikacji klienckiej.
    • Zapewnienie systemu bezpieczeństwa i kontroli dostępu.
    • Zarządzanie integralnością bazy danych.
    • Implementacja stabilności trybu pracy wielu użytkowników.

Tak zwane „przemysłowe” systemy DBMS działają w architekturze klient-serwer. Nazywa się je przemysłowymi, ponieważ to DBMS tej klasy może zapewnić pracę systemy informacyjne skala średniego i dużego przedsiębiorstwa, organizacji, banku. Do kategorii przemysłowych systemów DBMS zalicza się MS SQL Server, Oracle, Gupta, Informix, Sybase, DB2, InterBase i szereg innych [[3.2]].

Z reguły serwer SQL prowadzony jest przez pojedynczego pracownika lub grupę pracowników (administratorów serwera SQL). Rządzą Charakterystyka fizyczna bazy danych, optymalizować, konfigurować i redefinicja różne komponenty baz danych, tworzyć nowe bazy danych, zmieniać istniejące itp., a także nadawać uprawnienia (uprawnienia do określonego poziomu dostępu do określonych baz danych, serwera SQL) różnym użytkownikom [[3.2]].

Przyjrzyjmy się głównym zaletom tej architektury w porównaniu z architekturą serwera plików:

  • Ruch sieciowy jest znacznie zmniejszony.
  • Zmniejsza się złożoność aplikacji klienckich (większość obciążenia spada na część serwerową), a co za tym idzie, zmniejszają się wymagania dotyczące wydajności sprzętowej komputerów klienckich.
  • Dostępność specjalna narzędzie programowe– Serwer SQL – powoduje, że znaczna część zadań projektowych i programistycznych została już rozwiązana.
  • Integralność i bezpieczeństwo bazy danych ulega znacznemu zwiększeniu.

Wady obejmują wyższe wydatki finansowe dla sprzętu i oprogramowanie, a także fakt, że duża liczba komputerów klienckich zlokalizowanych w różnych miejscach powoduje pewne trudności z terminową aktualizacją aplikacji klienckich na wszystkich komputerach klienckich. Jednak architektura klient-serwer sprawdziła się w praktyce, m.in obecnie Istnieje duża liczba baz danych zbudowanych zgodnie z tą architekturą.

3.4. Trójwarstwowa (wielopoziomowa) architektura klient-serwer.

Trzy łącza (w niektórych przypadkach wiele łączy) architektura(N-poziomowy lub wielopoziomowy architekturę trójwarstwową? Teraz, gdy zmienia się logika biznesowa, nie ma już potrzeby zmiany aplikacji klienckich i aktualizacji ich dla wszystkich użytkowników. Ponadto wymagania dotyczące sprzętu użytkownika są maksymalnie obniżone.

W rezultacie praca ma następującą strukturę:

  • Baza danych w postaci zestawu plików zlokalizowana jest na dysku twardym specjalnie dedykowanego komputera (serwera sieciowego).
  • System DBMS znajduje się również na serwerze sieciowym.
  • Istnieje specjalnie dedykowany serwer aplikacji, na którym znajduje się oprogramowanie do analizy biznesowej (logika biznesowa) [[3.1]].
  • Komputerów klienckich jest wiele, a na każdym z nich zainstalowany jest tzw. „cienki klient” – aplikacja kliencka implementująca interfejs użytkownika.
  • Na każdym z komputerów klienckich użytkownicy mają możliwość uruchomienia aplikacji – cienkiego klienta. Wykorzystując interfejs użytkownika udostępniany przez aplikację, inicjuje połączenie z oprogramowaniem Business Intelligence znajdującym się na serwerze aplikacji.
  • Serwer aplikacji analizuje wymagania użytkowników i generuje zapytania do bazy danych. Do komunikacji wykorzystywany jest specjalny język zapytań SQL, tj. Tylko tekst żądania jest przesyłany przez sieć z serwera aplikacji do serwera bazy danych.
  • DBMS zawiera w sobie wszystkie informacje o fizycznej strukturze bazy danych znajdującej się na serwerze.
  • SZBD inicjuje wywołania danych znajdujących się na serwerze, w wyniku czego wynik zapytania jest kopiowany do serwera aplikacji.
  • Serwer aplikacji zwraca wynik do aplikacji klienckiej (użytkownika).
  • Aplikacja za pomocą interfejsu użytkownika wyświetla wynik zapytań.

Technologia klient-serwer jest uważana za jedną z „wielorybów” nowoczesny świat sieć komputerowa. Jednak problemy, dla których został opracowany, odchodzą już w przeszłość. Nowe zadania i technologie wymagają ponownego przemyślenia zasad działania systemów klient-serwer. Jedna z tych technologii Świat Szeroka sieć. Technologia webowa jest rozwinięciem architektury klient-serwer, czyli tzw. Za pomocą jednego klienta możesz połączyć się z wieloma serwerami. System informacyjny, oprócz interfejsu, musi posiadać poziomy przetwarzania i przechowywania danych. Problemem twórców Internetu jest koordynacja Praca w sieci z innymi elementami systemu, takimi jak bazy danych. Jednym z obiecujących sposobów rozwiązania tego problemu są wielopoziomowe systemy klient-serwer.

System klasyczny klient-serwer działa w schemacie żądanie-odpowiedź (architektura dwupoziomowa). Klient wykonuje aktywną funkcję (żądania), serwer odpowiada na nie pasywnie.


Każdy system informacyjny musi składać się z co najmniej trzech części funkcjonalnych - modułów przechowywania danych, przetwarzania danych i interfejsu użytkownika.

Każdą z tych części można wdrożyć niezależnie od pozostałych dwóch.

Na przykład . Nie zmieniając programów służących do przechowywania i przetwarzania danych, można zmienić interfejs użytkownika tak, aby te same dane były wyświetlane w postaci tabel, wykresów czy histogramów. Bez zmiany programów do prezentacji i przechowywania danych można zmienić programy przetwarzające poprzez zmianę algorytmu wyszukiwanie pełnotekstowe. Nie zmieniając programów do prezentacji i przetwarzania danych, możesz zmienić oprogramowanie do przechowywania danych, przechodząc na inny system plików.

W architektura klasyczna klient-serwer Trzy główne części aplikacji są rozproszone w dwóch modułach fizycznych. Zazwyczaj oprogramowanie do przechowywania danych znajduje się na serwerze (/: serwerze bazy danych), interfejs użytkownika znajduje się po stronie klienta, ale przetwarzanie danych musi być rozproszone pomiędzy częścią klienta i serwera. To jest główna wada tej architektury. Algorytmy przetwarzania danych partycjonujących wymagają synchronizacji działań obu części systemu. Aby uniknąć niespójności różne elementy architektury próbują przetwarzać dane w jednej z dwóch części - albo po stronie klienta (gruby klient), albo po stronie serwera (cienki klient lub 2,5-warstwowy klient-serwer). Każde podejście ma swoje wady: W pierwszym przypadku sieć jest nieuzasadniona przeciążona, ponieważ przesyła surowe (redundantne) dane, co utrudnia obsługę i modyfikację systemu, ponieważ zastąpienie algorytmu obliczeniowego lub poprawienie błędu wymaga jednoczesnej całkowitej wymiany wszystkich programów interfejsu, w przeciwnym razie nastąpi niespójność danych; w drugim przypadku, gdy całe przetwarzanie informacji odbywa się na serwerze, pojawia się problem opisu wbudowanych procedur i ich debugowania (opis ma charakter deklaratywny i nie pozwala na debugowanie krok po kroku). Poza tym systemu z przetwarzaniem informacji na serwerze absolutnie nie da się przenieść na inną platformę.

Większość nowoczesne środki Rapid Application Development (RAD), które współpracują z różnymi bazami danych, implementuje pierwszy model („gruby” klient), zapewniając interfejs z serwerem bazy danych poprzez Język SQL.. Ta opcja, oprócz wad wymienionych powyżej, ma niski poziom bezpieczeństwo.

Na przykład. W systemach bankowych prawo zapisu do tabeli głównej systemu księgowego mają wszyscy operatorzy operatorzy. Oprócz, ten system Przeniesienie do technologii internetowych jest prawie niemożliwe, ponieważ do uzyskania dostępu do serwera bazy danych wykorzystywane jest specjalistyczne oprogramowanie klienckie.

Wady omówionych powyżej modeli:

1. „Gruby” klient

F złożoność administracji;

F trudności w aktualizacji oprogramowania, ponieważ jego wymiana musi odbywać się jednocześnie w całym systemie;

F złożoność podziału władzy, ponieważ dostęp jest ograniczony nie działaniami, ale tabelami;

F przeciążenie sieci spowodowane transmisją nieprzetworzonych danych;

F słaba ochrona danych.

2. Serwer „gruby”.

ð wdrożenie staje się bardziej skomplikowane, ponieważ języki PL/SQL nie nadają się do tworzenia takiego oprogramowania i nie ma narzędzi do debugowania;

ð wydajność programów w językach PL/SQL jest niższa niż w innych językach, co jest istotne dla złożone systemy;

ð programy napisane w językach DBMS nie działają niezawodnie, co może skutkować awarią całego serwera bazy danych;

ð programy stworzone w ten sposób są całkowicie nieprzenośne na inne systemy i platformy.



Aby rozwiązać te problemy, stosuje się wielopoziomowe (trzy lub więcej) modele klient-serwer.

Wielowarstwowe architektury klient-serwer — bardziej inteligentna dystrybucja modułów przetwarzania danych działających na jednym lub większej liczbie oddzielnych serwerów.

Te moduły oprogramowania wykonywać funkcje serwery dla interfejsów z użytkownikami i klient- dla serwerów baz danych. Ponadto różne serwery aplikacji mogą komunikować się ze sobą w celu dokładniejszego podziału systemu bloki funkcyjne pełniąc określone role.

Na przykład. Możesz wybrać serwer zarządzania personelem, który będzie realizował wszystkie funkcje niezbędne do zarządzania personelem. Powiązując z nim oddzielną bazę danych, możesz ukryć przed użytkownikami wszystkie szczegóły implementacji tego serwera, umożliwiając dostęp jedynie do jego publicznie dostępnych funkcji. Taki system łatwiej dostosować do sieci, bo Łatwiej jest opracować formularze HTML umożliwiające użytkownikowi dostęp do niektórych funkcji bazy danych niż do wszystkich danych.

W modelu trójwarstwowym cienki klient nie jest przeciążony funkcjami przetwarzania danych, ale pełni główną rolę systemu prezentacji informacji pochodzących z serwera aplikacji. (Ten interfejs jest zaimplementowany przy użyciu standardowe środki Technologie internetowe – przeglądarka, CGI i Java). Zmniejsza to ilość danych przesyłanych pomiędzy klientem a serwerem aplikacji, umożliwiając połączenie klientom posiadającym wolne linie telefoniczne.

Trójpoziomowy model klient-serwer pozwala na dokładniejsze przypisanie uprawnień użytkownikom, ponieważ otrzymują oni uprawnienia nie do samej bazy danych, ale do niektórych funkcji serwera aplikacji, co zwiększa bezpieczeństwo systemu.

Wielopoziomowe systemy klient-serwer można łatwo przenieść do technologii Web - w tym celu wystarczy zastąpić część kliencką uniwersalną przeglądarką, a serwer aplikacji uzupełnić o serwer WWW i programy wywołujące procedury małego serwera. W systemie trójpoziomowym kanałem komunikacyjnym pomiędzy serwerem aplikacji a bazą danych przesyłanych jest wiele informacji, ale obliczenia nie spowalniają się, gdyż komunikacja określone elementy używane są szybsze linie. Wymaga to niższych kosztów, ponieważ oba serwery znajdują się w tym samym obiekcie. Rodzi to jednak problem spójności wspólnych obliczeń, do rozwiązania którego wzywani są menedżerowie transakcji – nowe elementy systemów wielopoziomowych.

Menedżerowie transakcji

MT - pozwalają jednemu serwerowi aplikacji na jednoczesną komunikację z kilkoma serwerami baz danych. Chociaż serwery Oracle posiadają mechanizm wykonywania transakcji rozproszonych, ale jeśli użytkownik przechowuje część informacji w bazie danych Oracle, część w bazie danych Informix, a część w pliki tekstowe, to nie możesz obejść się bez MT. MT służy do zarządzania rozproszonymi operacjami heterogenicznymi i koordynowania działań różnych komponentów systemu informatycznego. Każde złożone oprogramowanie wymaga użycia MT.

Na przykład. Systemy bankowe musi wdrożyć różne transformacje złożenie dokumentów, tj. pracować jednocześnie z danymi przechowywanymi zarówno w bazie danych, jak i w zwykłe pliki, - to są funkcje, które MT pomaga wykonywać.

MT to program lub zestaw programów, za pomocą których można koordynować działanie różnych elementów systemu informatycznego.

Logicznie rzecz biorąc, MT jest podzielony na kilka części:

· menadżer komunikacji (kontroluje wymianę komunikatów pomiędzy elementami systemu informatycznego;

· menadżer transakcji (zarządza operacjami rozproszonymi);

· menedżer logów (monitoruje przywracanie i wycofywanie rozproszonych operacji);

· menadżer zamków (zapewnia poprawny dostęp do udostępnianych danych).

Zazwyczaj M-komunikacja jest łączona z M-autoryzacją, a M-transakcje są łączone z M-blokadami i zapisami systemowymi. Co więcej, takie M rzadko jest zawarte w pakiecie dostaw, ponieważ jego funkcje (prowadzenie ewidencji, dystrybucja zasobów i operacje kontrolne) są zwykle wykonywane przez samą bazę danych (na przykład Oracle).

Największe zmiany pojawiło się w M-komunikacji, wraz z pojawieniem się w tym obszarze nowych technologii obiektowych (CORBA, DCOM itp.). Wielopoziomowy model klient-serwer może znacznie uprościć przetwarzanie rozproszone, czyniąc je nie tylko bardziej niezawodnym, ale także bardziej dostępnym.

4.4. Przetwarzanie systemów pocztowych­ -

to gwarancja dostarczenia informacji i sposób na integrację aplikacji

Projektowanie systemów informatycznych stawia analityków systemowych przed rozwiązaniami następujących problemów:

ð system rozproszony;

ð integracja różne zastosowania;

ð łatwość administrowania.

Współczesne komputery są w większości rozproszone, dlatego pojawia się problem wyboru sposobu interakcji pomiędzy poszczególnymi częściami takich systemów. Łączenie wielu systemów informatycznych wymaga rozwiązania integracyjnego duża ilość zastosowania heterogeniczne. Taki (zintegrowany) system musi posiadać całą funkcjonalność połączonych podsystemów, zachowując przy tym prostotę i łatwość obsługi. Problem ten można rozwiązać za pomocą technologiczne systemy pocztowe(STP).

Terminem „poczta technologiczna” określa się interakcję między aplikacjami („poczta elektroniczna” to interakcja między ludźmi), przesyłana informacja ma charakter technologiczny, jej tworzenie i przesyłanie może odbywać się bez/lub przy minimalnym udziale człowieka.

System poczty technologicznej obejmuje dwa różne sposoby interakcje stosowane we współczesnych systemach rozproszonych.

Jedna z nich opiera się na koncepcji połączenia (ryc. 1), a druga na idei przesyłania wiadomości.

1


Ryc.1. Mechanizm interakcji zorientowany na połączenie

Proces interakcji pomiędzy aplikacjami i korzystania z nawiązania połączenia można podzielić na trzy fazy:

1. nawiązanie połączenia;

2. przekazywanie informacji;

3. zamknięcie połączenia.

Taka interakcja wymaga połączenia wszystkich trzech faz i jednoczesnej pracy aplikacji, co nie zawsze jest możliwe.

Systemy zbudowane na zasadzie przesyłania komunikatów wykorzystują podczas interakcji technologię kolejki komunikatów (rys. 2).



Ryc.2. Komunikacja aplikacji przy użyciu technologii kolejkowania wiadomości

Aplikacje wymieniające informacje nie adresują ich bezpośrednio do siebie, ale do kolejek komunikatów powiązanych z aplikacjami. Połączenie aplikacji z kolejką odbywa się z reguły w trybie on-line, co pozwala uniknąć czasu potrzebnego na nawiązanie połączenia. Oprogramowanie sterujące może znajdować się na tej samej maszynie, co aplikacje, lub na serwerze dedykowanym. Systemy korzystające z technologii kolejkowania wiadomości, w odróżnieniu od systemów nawiązywania połączeń, nie wymagają jej stałe połączenie ani w procesie interakcji, ani w jednoczesnym działaniu oddziałujących ze sobą aplikacji. Te właściwości zapewniają im elastyczność i akceptowalność różne obszary Aplikacje.

Wszechstronność technologicznych systemów pocztowych pozwala na pracę nad nimi heterogeniczny (różne platformy programowe i sprzętowe, na których działają Poszczególne komponenty STP, a także różnorodne metody połączeń i protokoły interakcji stosowane w strukturach systemów. Heterogeniczność osiąga się poprzez oddzielenie części serwerowej i klienckiej protokołu STP. Części klienckie mają niewielką funkcjonalność i można je przenosić na różne platformy. Tym samym eksploatacja STP nie wymaga ponoszenia kosztów dodatkowego sprzętu – system dopasowuje się do istniejących środków (zarówno sprzętu i oprogramowania, jak i istniejących kanałów transmisji danych) i nie wymaga ich wymiany.

Zalety stosowania STP:

Ø Gwarantowane dostarczenie wiadomości. Serwery kolejkowania wiadomości

Sami ustalają, jak zapewnić dostawę w przypadku awarii poszczególnych części systemu: ponownie wysłać, znaleźć alternatywną trasę lub skorzystać z innych metod. Ponieważ STP zapewniają wymianę informacji pomiędzy aplikacjami, fakt niedostarczenia wiadomości musi być śledzony i przetwarzany (w przeciwieństwie do E-mail, gdzie w przypadku niedostarczenia wiadomości użytkownik ma obowiązek podjąć działania naprawcze);

Ø Brak blokowania aplikacji podczas przesyłania informacji, ponieważ Istnieje technologia kolejek wiadomości, wydzielona jest część serwerowa systemu TP, która odpowiada za dostarczanie wiadomości. Brak blokowania skraca czas przestoju aplikacji;

Ø Możliwość ustawienia priorytetów i opcji wiadomości podczas wysyłania. Priorytety pozwalają na wdrożenie kilku systemy równoległe transmisja wiadomości. Jednakże wiadomości o niższym priorytecie nie będą miały żadnego wpływu na dostarczanie wiadomości o wyższym priorytecie. Ma to pozytywny wpływ przy projektowaniu i konfigurowaniu dużych systemów, a także przy administrowaniu systemami;

Ø Możliwość wymiany informacji w heterogenicznym środowisku, w którym możliwa jest modernizacja zarówno sprzętu, jak i oprogramowania.

Tłumaczenie z języka angielskiego: Chernobay Yu.A.

Rozwój systemów klient-serwer

Architektura systemu komputerowego ewoluowała wraz ze zdolnością sprzętu do korzystania z działających na nim aplikacji. Najprostszą (i najwcześniejszą) ze wszystkich była „architektura Mainframe”, w której wszystkie operacje i funkcjonowanie są wykonywane w obrębie komputera-serwera (lub „hosta”). Użytkownicy wchodzili w interakcję z serwerem za pośrednictwem „głupich” terminali, które przesyłały instrukcje poprzez przechwytywanie naciśnięć klawiszy do serwera i wyświetlały użytkownikowi wyniki instrukcji. Aplikacje tego typu miały charakter typowy i pomimo stosunkowo dużej mocy obliczeniowej komputerów serwerowych, na ogół były stosunkowo powolne i niewygodne w obsłudze, ze względu na konieczność przesyłania do serwera każdego naciśnięcia klawisza.

Wprowadzenie i powszechne wykorzystanie komputera PC z jego własnym moc obliczeniowa i graficzny interfejs użytkownika pozwoliły aplikacjom stać się bardziej złożonymi i rozszerzyć systemy sieciowe doprowadziło do drugiego głównego typu architektury systemu, „partycjonowania plików”. W tej architekturze komputer PC (lub „stacja robocza”) pobiera pliki ze specjalistycznego „serwera plików”, a następnie lokalnie zarządza aplikacją (w tym danymi). Działa to dobrze, gdy wykorzystanie współdzielonych danych, aktualizacja danych i ilość danych, które zostaną przesłane, są niewielkie. Jednak szybko stało się jasne, że udostępnianie plików coraz bardziej zatyka sieć, a aplikacje stają się coraz bardziej złożone i wymagają przesyłania coraz większej ilości danych w obu kierunkach.

Problemy związane z przetwarzaniem danych przez aplikacje za pośrednictwem pliku udostępnianego w sieci doprowadziły na początku lat 80. do rozwoju architektury klient-serwer. W tym podejściu serwer plików zostaje zastąpiony serwerem bazy danych, który zamiast po prostu przesyłać i przechowywać pliki do podłączonych stacji roboczych (klientów), odbiera i faktycznie realizuje żądania danych, zwracając jedynie wynik żądany przez klienta. Przesyłając tylko dane żądane przez klienta, a nie cały plik, architektura ta znacznie zmniejsza obciążenie sieci. Umożliwiło to stworzenie systemu, w którym wielu użytkowników mogło aktualizować dane poprzez interfejsy GUI połączone z jedną wspólną bazą danych.

Zazwyczaj do wymiany danych między klientem a serwerem używany jest Strukturalny Język Zapytań (SQL) lub Zdalne Wywoływanie Procedur (RPC). Poniżej opisano kilka podstawowych opcji organizacji architektury klient-serwer.

W architekturze dwuwarstwowej obciążenie jest dzielone pomiędzy serwer (w którym znajduje się baza danych) i klienta (w którym mieści się interfejs użytkownika). Zwykle znajdują się one na różnych maszynach fizycznych, ale nie jest to wymagane. Pod warunkiem, że warstwy są logicznie od siebie oddzielone, można je umieścić (na przykład w celach programistycznych i testowych) na tym samym komputerze (ryc. 1).

Rysunek 1: Architektura dwuwarstwowa

Rozkład logiki aplikacji i przetwarzania danych w tym modelu był i pozostaje problematyczny. Jeśli klient jest „inteligentny” i zajmuje się głównym przetwarzaniem danych, wówczas pojawiają się problemy związane z dystrybucją, instalacją i utrzymaniem aplikacji, ponieważ każdy klient potrzebuje własnej lokalnej kopii oprogramowania. Jeśli klient jest „głupi”, logika aplikacji i przetwarzanie muszą zostać zaimplementowane w bazie danych i dlatego staje się to całkowicie zależne od używanego konkretnego systemu DBMS. W każdym przypadku każdy klient musi się zarejestrować i w zależności od otrzymanych praw dostępu wykonywać określone funkcje. Jednak dwuwarstwowa architektura klient-serwer była dobra decyzja, kiedy liczba użytkowników była stosunkowo niewielka (do około 100 jednoczesnych użytkowników), ale wraz ze wzrostem liczby użytkowników pojawiło się szereg ograniczeń w korzystaniu z tej architektury.

Wydajność: wraz ze wzrostem liczby użytkowników wydajność zaczyna się pogarszać. Spadek wydajności jest wprost proporcjonalny do liczby użytkowników, z których każdy ma własne połączenie z serwerem, co oznacza, że ​​serwer musi utrzymywać wszystkie te połączenia (za pomocą komunikatów „Keep-Alive”) nawet wtedy, gdy baza danych nie jest używana .

Bezpieczeństwo: Każdy użytkownik musi posiadać indywidualny dostęp do bazy danych oraz uprawnienia do obsługi aplikacji. W tym celu konieczne jest przechowywanie w bazie danych praw dostępu każdego użytkownika. Gdy chcesz dodać funkcjonalność do aplikacji i zaktualizować uprawnienia użytkownika.

Funkcjonalność: Bez względu na rodzaj klienta, większość przetwarzania danych musi znajdować się w bazie danych, co oznacza, że ​​jest ona całkowicie zależna od możliwości udostępnionych w bazie danych przez producenta. Może to poważnie ograniczyć funkcjonalność aplikacji, ponieważ różne bazy danych obsługują różne funkcje różne języki programowanie, a nawet wdrażanie podstawowych funkcji, takich jak wyzwalacze, na różne sposoby.

Przenośność: Architektura dwuwarstwowa jest tak zależna od konkretnej implementacji bazy danych, że przenośność istniejących aplikacji dla różnych systemów DBMS staje się poważnym problemem. Jest to szczególnie prawdziwe w przypadku zastosowań na rynkach pionowych, gdzie wybór systemu DBMS nie jest określany przez dostawcę.

Mimo to dwupoziomowa architektura znalazła nowe życie w erze Internetu. Może dobrze działać w odłączonym środowisku, w którym interfejs użytkownika jest głupi (np. Przeglądarka). Jednak pod wieloma względami ta implementacja stanowi powrót do oryginalnej architektury komputerów mainframe.

Próbując przezwyciężyć ograniczenia opisanej architektury dwuwarstwowej Ogólny zarys powyżej wprowadzono dodatkowy poziom. Architektura ta jest standardowym modelem klient-serwer o architekturze trójwarstwowej. Celem dodatkowej warstwy (powszechnie zwanej warstwą „środkową” lub „reguł”) jest zarządzanie wykonywaniem aplikacji i zarządzanie bazami danych. Podobnie jak w przypadku modelu dwupoziomowego, poziomy mogą znajdować się albo na różnych komputerach (rysunek 2), albo na jednym komputerze w trybie testowym.

Rysunek 2: Architektura trójwarstwowa

Wprowadzenie środkowego rzędu w dużej mierze wyeliminowało ograniczenia architektury dwuwarstwowej, co dało system znacznie bardziej elastyczny i skalowalny. Ponieważ klienci łączą się teraz tylko z serwerem aplikacji, a nie bezpośrednio z serwerem danych, wyeliminowany zostaje ciężar utrzymywania połączeń i konieczność implementacji logiki aplikacji w bazie danych. Baza danych może obecnie pełnić jedynie funkcje przechowywania i wyszukiwania danych, a zadanie przyjmowania i przetwarzania wniosków może realizować średni poziom architekturę trójwarstwową. Rozwój systemów operacyjnych, które obejmowały takie elementy, jak pule połączeń, kolejki i rozproszone przetwarzanie transakcji, wzmocnił (i uprościł) rozwój warstwy środkowej.

Należy zauważyć, że w tym modelu serwer aplikacji nie kontroluje interfejsu użytkownika, a użytkownik nie wysyła zapytań bezpośrednio do bazy danych. Zamiast tego umożliwia wielu klientom współdzielenie logiki biznesowej, obliczeń i dostępu do wyszukiwarki danych. Główną zaletą jest to, że klient wymaga mniej oprogramowania i nie potrzebuje już bezpośredniego połączenia z bazą danych, co poprawia bezpieczeństwo. Dzięki temu aplikacja jest bardziej skalowalna, koszty wsparcia i instalacji na jednym serwerze są znacznie niższe niż w przypadku utrzymywania aplikacji bezpośrednio na komputerze klienta czy nawet w architekturze dwuwarstwowej.

Istnieje wiele odmian podstawowych modeli trzypoziomowych zaprojektowanych do działania różne funkcje. Należą do nich rozproszone przetwarzanie transakcji (gdzie wiele systemów DBMS jest aktualizowanych w tym samym protokole), aplikacje oparte na komunikatach (gdzie aplikacje nie komunikują się w czasie rzeczywistym) i zgodność między platformami (aplikacje Object Request Broker lub „ORB”).

Architektura wielowarstwowa lub architektura N-warstwowa

Wraz z rozwojem aplikacji internetowych w obliczu ogólnego wzrostu liczby użytkowników, podstawowy trójpoziomowy model klient-serwer został rozszerzony o dodatkowe poziomy. Takie architektury nazywane są „wielowarstwowymi" i zazwyczaj składają się z czterech warstw (rysunek 3), gdzie serwer w sieci jest odpowiedzialny za obsługę połączenia pomiędzy klientem przeglądarki a serwerem aplikacji. Zaletą jest to, że wiele serwerów WWW może łączyć się do jednego serwera aplikacji, zwiększając w ten sposób przetwarzanie większej liczby jednocześnie podłączonych użytkowników.

Rysunek 3: Architektura N-warstwowa

Poziomy a warstwy

Terminy te są (niestety) często mylone. Istnieje jednak między nimi duża różnica i mają one określone znaczenie. Główna różnica polega na tym, że warstwy znajdują się w warstwie fizycznej, a warstwy w warstwie logicznej. Innymi słowy, warstwę teoretycznie można wdrożyć niezależnie na oddzielnym komputerze, a warstwa stanowi logiczny podział w obrębie warstwy (rysunek 4). Typowy model trójwarstwowy opisany powyżej zazwyczaj zawiera co najmniej siedem warstw rozdzielonych na wszystkich trzech poziomach.

Najważniejszą rzeczą do zapamiętania w przypadku architektury warstwowej jest to, że żądania i odpowiedzi z każdego wątku w jednym kierunku przechodzą przez wszystkie warstwy i że warstw nigdy nie można pominąć. Zatem w modelu pokazanym na rysunku 4 jedyną warstwą, która może uzyskać dostęp do warstwy „E” (warstwa dostępu do danych), jest warstwa „D” (warstwa reguł). Podobnie warstwa „C” (warstwa walidacji aplikacji) może odpowiadać tylko na żądania z warstwy „B” (warstwa obsługi błędów).

Rysunek 4: Wiersze podzielone na warstwy logiczne