Astfel, toate dezavantajele de mai sus ale schemei file-server sunt eliminate în arhitectura client-server. Aplicații client-server

22.08.2019 Panoul Straturi

Departamentul de Învățământ General și Profesional al Regiunii Bryansk

Instituție de învățământ de stat

Colegiul de textile Klintsovsky

SOFTWARE PENTRU SISTEME DE INFORMAȚII AUTOMATE

Tehnologia client-server

Student gr. A-90______________________________ (Petrochenko A.O.)

Profesor _______________________ (Shirokova A.L.)

Klintsy – 2011

1. Servere. Bazele serverului

2. Model client-server

3. Clasificarea serverelor standard

4. Concluzie

1. Servere. Bazele serverului

Server (de la serverul englez, serving). În funcție de scop, există mai multe definiții ale conceptului de server.

1. Server (rețea) - un nod de rețea logic sau fizic care servește cereri către o adresă și/sau nume de domeniu (adiacent nume de domenii), constând dintr-unul sau un sistem de servere hardware pe care se execută unul sau un sistem de programe server

2. Server ( software) - software care primește cereri de la clienți (în arhitectura client-server).

3. Server ( hardware) - computer (sau special echipamente informatice) dedicată și/sau specializată pentru a îndeplini anumite funcții de serviciu.

3. Server în tehnologia de informație- componenta software sistem de calcul, efectuând funcții de service la solicitarea clientului, oferindu-i acces la anumite resurse.

Interrelaţionarea conceptelor. O aplicație server (server) rulează pe un computer, numit și „server”, iar atunci când se ia în considerare topologia rețelei, un astfel de nod este numit „server”. ÎN caz general poate fi ca aplicație server lansat normal statie de lucru, sau o aplicație server care rulează pe un computer server din topologia în cauză acționează ca un client (adică nu este un server din punctul de vedere al topologiei rețelei).

2. Model client-server

Un sistem client-server se caracterizează prin prezența a două procese independente care interacționează - un client și un server, care, în general, pot fi executate pe diferite calculatoare, schimbând date prin rețea.

Procese care implementează un serviciu, cum ar fi un serviciu sistem de fișiere sau sunt numite baze de date servere(servere). Sunt apelate procesele care solicită servicii de la servere prin trimiterea unei cereri și apoi așteptarea unui răspuns de la server clientii(clientii).

Conform acestei scheme, pot fi construite sisteme de procesare a datelor bazate pe DBMS, mail și alte sisteme. Vom vorbi despre baze de date și sisteme bazate pe acestea. Și aici va fi mai convenabil nu doar să luați în considerare arhitectura client-server, și comparați-l cu altul - un server de fișiere.

Într-un sistem de server de fișiere, datele sunt stocate pe un server de fișiere (de exemplu, Novell NetWare sau Windows NT Server), iar procesarea lor este efectuată pe stații de lucru, care, de regulă, operează unul dintre așa-numitele „DBMS-uri de birou ” - Access, FoxPro , Paradox, etc..

Aplicația de pe stația de lucru este „responsabilă pentru tot” - pentru creare interfata utilizator, prelucrarea logica a datelor si pentru manipularea directa a datelor. Serverul de fișiere oferă doar cele mai multe nivel scăzut- deschiderea, inchiderea si modificarea fisierelor. Vă rugăm să rețineți - fișiere, nu baze de date. Sistemul de gestionare a bazei de date se află pe stația de lucru.

Astfel, manipularea directă a datelor se realizează prin mai multe procese independente și inconsistente. În plus, pentru a efectua orice prelucrare (căutare, modificare, însumare etc.), toate datele trebuie să fie transferate prin rețea de la server la stația de lucru ( vezi fig. Comparație dintre modelele server de fișiere și modele client-server)


Orez. Comparație dintre modelele server de fișiere și modele client-server

Într-un sistem client-server, există (cel puțin) două aplicații - un client și un server, care împart între ele acele funcții care, într-o arhitectură de fișiere-server, sunt realizate în întregime de o aplicație pe o stație de lucru. Stocarea și manipularea directă a datelor este efectuată de un server de baze de date, care poate fi Microsoft SQL Server, Oracle, Sybase etc..

Interfața cu utilizatorul este creată de client, pentru construcția căreia puteți utiliza o serie de instrumente speciale, precum și majoritatea DBMS-urilor desktop. Logica de procesare a datelor poate fi executată atât pe client, cât și pe server. Clientul trimite cereri către server, de obicei formulate în SQL. Serverul procesează aceste solicitări și trimite rezultatul către client (desigur, pot fi mulți clienți).

Astfel, un proces este responsabil pentru manipularea directă a datelor. În același timp, prelucrarea datelor are loc în același loc în care sunt stocate datele - pe server, ceea ce elimină necesitatea transferului. volume mari date prin rețea.

Ce oferă arhitectura client-server?

Să ne uităm la această arhitectură din punct de vedere al nevoilor afacerii. Ce calități aduce un client-server unui sistem informațional?

Fiabilitate

Serverul bazei de date efectuează modificarea datelor pe baza unui mecanism de tranzacție, care oferă oricărui set de operațiuni declarate ca tranzacție următoarele proprietăți:

  • atomicitate- în orice împrejurare, fie vor fi efectuate toate operațiunile de tranzacție, fie nu vor fi efectuate niciuna; integritatea datelor la finalizarea tranzacției;
  • independenţă- tranzacțiile inițiate de utilizatori diferiți nu interferează în treburile celuilalt;
  • toleranta la greseli- după finalizarea tranzacției, rezultatele acesteia nu se vor mai pierde.

Mecanismul de tranzacție suportat de serverul de baze de date este mult mai eficient decât mecanismul similar din SGBD-urile desktop, deoarece serverul controlează central operarea tranzacțiilor. În plus, într-un sistem de fișiere-server, o defecțiune la oricare dintre stațiile de lucru poate duce la pierderea datelor și la inaccesibilitatea acestora la alte stații de lucru, în timp ce într-un sistem client-server, o defecțiune a clientului aproape niciodată nu afectează integritatea datelor. și disponibilitatea acestora pentru alți clienți.

Scalabilitate

Scalabilitatea este capacitatea sistemului de a se adapta la creșterea numărului de utilizatori și a volumului bazei de date cu o creștere adecvată a performanței platformei hardware, fără a înlocui software-ul.

Este bine cunoscut faptul că capacitățile DBMS-urilor desktop sunt serios limitate - cinci până la șapte utilizatori și, respectiv, 30-50 MB. Cifrele, desigur, reprezintă niște valori medii în cazuri specifice, acestea pot devia în orice direcție. Cel mai important, aceste bariere nu pot fi depășite prin creșterea capacităților hardware.

Sistemele bazate pe servere de baze de date pot suporta mii de utilizatori și sute de GB de informații - doar oferiți-le platforma hardware adecvată.

Siguranţă

Serverul de baze de date oferă instrumente puternice protecția datelor împotriva accesului neautorizat, imposibilă în SGBD-urile desktop. În același timp, drepturile de acces sunt administrate foarte flexibil - până la nivelul câmpurilor de tabel. În plus, puteți interzice complet accesul direct la tabele, permițând utilizatorului să interacționeze cu datele prin obiecte intermediare - vizualizări și proceduri stocate. Deci, administratorul poate fi sigur că niciun utilizator prea inteligent nu va citi ceea ce nu trebuie să citească.

Flexibilitate

Într-o aplicație de date, există trei straturi logice:

  • interfata utilizator ;
  • reguli de procesare logica(reguli de afaceri);
  • managementul datelor(doar nu confunda straturile logice cu niveluri fizice despre care vom vorbi de mai jos).

După cum sa menționat deja, într-o arhitectură de server de fișiere, toate cele trei straturi sunt implementate într-o aplicație monolitică care rulează pe o stație de lucru. Prin urmare, modificările în oricare dintre straturi duc în mod clar la modificarea aplicației și la actualizarea ulterioară a versiunilor acesteia pe stațiile de lucru.

Într-o aplicație client-server cu două niveluri prezentată în figura de mai sus, de regulă, toate funcțiile pentru crearea unei interfețe cu utilizatorul sunt implementate pe client, toate funcțiile pentru gestionarea datelor sunt implementate pe server, dar regulile de afaceri pot fi implementate atât pe server folosind mecanisme de programare a serverului (proceduri stocate, declanșatoare, vizualizări etc.) și pe client.

Într-o aplicație cu trei niveluri, există un al treilea strat intermediar care implementează regulile de afaceri, care sunt componentele cele mai frecvent modificate ale aplicației ( vezi fig. Model de aplicație client-server pe trei niveluri)

Orez. Model de aplicație client-server pe trei niveluri

Prezența nu a unuia, ci a mai multor niveluri permite flexibilitate și costuri minime adaptarea aplicației la cerințele de afaceri în schimbare.

Să încercăm să ilustrăm toate cele de mai sus cu un mic exemplu. Să presupunem că regulile de calcul s-au schimbat într-o anumită organizație salariile(reguli de afaceri) și software-ul corespunzător trebuie actualizate.

1) Într-un sistem server de fișiere, „pur și simplu” facem modificări aplicației și actualizăm versiunile acesteia pe stațiile de lucru. Dar acest „pur și simplu” implică costuri maxime ale forței de muncă.

2) Într-un sistem client-server cu două niveluri, dacă algoritmul de salarizare este implementat pe server sub forma unei reguli de salarizare, acesta este executat de un server de reguli de afaceri, implementat, de exemplu, ca un server OLE, iar noi va actualiza unul dintre obiectele sale fără a schimba nimic nici în aplicația client, nici pe serverul bazei de date.

Prin aplicație client-server vom înțelege un sistem informațional bazat pe utilizarea serverelor de baze de date (vezi nota lungă de la sfârșitul secțiunii 2.1). O reprezentare generală a unui sistem informațional într-o arhitectură client-server este prezentată în Figura 2.3.

  • Pe partea de client, se execută codul aplicației, care include în mod necesar componente care acceptă interfața cu utilizatorul final, produc rapoarte și efectuează alte funcții specifice aplicației (deocamdată, nu ne va interesa modul în care este construit codul aplicației) .
  • Partea client a aplicației interacționează cu partea client a software-ului de gestionare a bazei de date, care, de fapt, este reprezentantul individual al SGBD pentru aplicație.

(Aici din nou apar neajunsuri de terminologie. De obicei, atunci când o companie anunță lansarea unui alt server de baze de date, se înțelege implicit că există și o componentă client a acestui produs. Combinația „partea client a serverului de baze de date” pare oarecum ciudată, dar va trebui să folosim acest termen.)

Orez. 2.3. Reprezentarea generală a unui sistem informațional într-o arhitectură client-server

Rețineți că interfața dintre partea client a aplicației și partea client a serverului bazei de date se bazează de obicei pe utilizarea limbajului SQL. Prin urmare, funcții precum, de exemplu, preprocesarea formularelor destinate interogărilor bazei de date sau generarea rapoartelor rezultate sunt realizate în codul aplicației.

În cele din urmă, partea client a serverului de baze de date, folosind instrumentele acces la rețea, accesează serverul bazei de date, transmițându-i textul instrucțiunii SQL.

Mai trebuie făcute două observații aici.

  1. De obicei, companiile care produc servere de baze de date avansate se străduiesc să se asigure că produsele lor pot fi utilizate nu numai în rețelele standard de astăzi bazate pe TCP/IP, ci și în rețelele bazate pe alte protocoale (de exemplu, SNA sau IPX/SPX). Prin urmare, atunci când se organizează interacțiunile de rețea între părțile client și server ale SGBD, nu mijloace standard nivel înalt(de exemplu, mecanisme de cuibări software sau apeluri de proceduri la distanță) și propriile instrumente similare funcțional, mai puțin dependente de caracteristicile rețelei protocoale de transport.
  2. Când vorbim despre o interfață bazată pe limbajul SQL, trebuie să fim conștienți de faptul că, în ciuda eforturilor titane de a standardiza acest limbaj, nu există nicio implementare în care caracteristicile limbajului standard să nu fie extinse. Utilizarea neglijentă a extensiilor de limbă duce la dependența completă a aplicației de un anumit producător de server de baze de date.

Vom analiza aceste probleme mai detaliat în partea a patra a cursului.

Să vedem acum ce se întâmplă pe partea serverului bazei de date. În produsele aproape tuturor companiilor, serverul primește textul operatorului în SQL de la client.

  • Serverul compilează instrucțiunea rezultată. Nu ne vom opri aici asupra limbajului țintă folosit de un anumit compilator; Diferite implementări au abordări diferite (vezi Partea 4 pentru exemple). Principalul lucru este că, în orice caz, pe baza informațiilor conținute în tabelele din catalogul bazei de date, reprezentarea non-procedurală a operatorului este convertită într-o procedură de executare a acesteia.
  • În continuare (dacă compilarea este finalizată cu succes), instrucțiunea este executată. Nu vom mai discuta detalii tehnice, deoarece diferă în implementări. Să luăm în considerare acțiuni posibile Instrucțiuni SQL.
    • Un operator poate aparține clasei de operatori pentru definirea (sau crearea) obiectelor bazei de date (ar fi mai corect și mai corect să vorbim despre elementele schemei bazei de date sau despre obiectele metadatelor). În special, pot fi definite domenii, tabele, constrângeri de integritate, declanșatoare, privilegii de utilizator și proceduri stocate. În orice caz, atunci când se execută instrucțiunea de creare a elementului de schemă a bazei de date, informațiile corespunzătoare sunt plasate în tabelele catalogului bazei de date (în tabelele metadatelor). Constrângerile de integritate sunt de obicei stocate în metabase de date direct într-o reprezentare textuală. Pentru acțiunile definite în declanșatoare și procedurile stocate, codul executabil procedural este generat și stocat în tabele de catalog. Rețineți că constrângerile de integritate, declanșatoarele și procedurile stocate sunt, într-un fel, reprezentanți ai aplicației din baza de date întreținută de server; ele formează baza backend-ului aplicației (vezi mai jos).
    • Când sunt executate instrucțiuni de preluare a datelor, pe baza conținutului tabelelor afectate de interogare și, eventual, folosind indecși menținuți în baza de date, se formează un set de rezultate de date (nu folosim în mod intenționat termenul „tabel de rezultate” aici deoarece, în funcție de tipul specific de declarație, rezultatul poate fi ordonat, iar tabelele, adică relațiile sunt neordonate prin definiție). Partea de server a SGBD trimite rezultatul către partea client, iar procesarea finală este efectuată în partea client a aplicației.
    • La executarea instrucțiunilor de modificare a conținutului bazei de date (INSERT, UPDATE, DELETE), se verifică să nu fie încălcate constrângerile de integritate definite în acest moment (cele care se verifică imediat), după care se efectuează acțiunea corespunzătoare (însoțită de modificarea tuturor indecși relevanți și modificări de jurnal). Apoi, serverul verifică dacă această modificare afectează condiția de declanșare a oricărui declanșator și, dacă este detectat un astfel de declanșator, execută procedura pentru acțiunea sa. Această procedură poate include instrucțiuni suplimentare de modificare a bazei de date care pot provoca declanșarea altor declanșatori etc. Puteți lua în considerare acțiunile care sunt efectuate pe serverul bazei de date atunci când verificați dacă constrângerile de integritate sunt îndeplinite și când declanșatoarele sunt declanșate pentru a reprezenta acțiunile părții server a aplicației.

La executarea operatorilor de modificare a schemei bazei de date (adăugarea sau eliminarea coloanelor din tabelele existente, schimbarea tipului de date al unei coloane existente tabelul existent etc.) se pot declanșa și declanșatorii, adică, cu alte cuvinte, partea de server a aplicației poate fi executată.

În general, într-o arhitectură de server de fișiere avem un client „gros” și un server foarte „subțire”, în sensul că aproape toată munca se face pe partea clientului și este necesară doar o capacitate suficientă de la server. memorie pe disc(Figura 2.2).

Orez. 2.2. Client „gras” și server „subțire” în arhitectura serverului de fișiere

Concluzii scurte. Simplă, la scară mică și pregătită pentru un singur utilizator, o aplicație server de fișiere poate fi proiectată, dezvoltată și depanată foarte rapid. Foarte des, pentru ca o companie mică să mențină, de exemplu, evidența personalului, este suficient să existe un sistem izolat care rulează pe un computer separat. Desigur, și în acest caz, utilizatorii finali (sau administratorii, a căror disponibilitate în acest caz este îndoielnică), necesită o mare atenție pentru a stoca și menține în siguranță integritatea datelor. Cu toate acestea, în cazuri ceva mai complexe (de exemplu, la organizarea unui sistem informațional pentru a susține un proiect realizat de un grup), arhitecturile serverului de fișiere devin insuficiente.

Client-server este o arhitectură de calcul sau de rețea în care sarcinile sau încărcarea rețelei sunt distribuite între furnizorii de servicii, numiți servere, și clienții de servicii, numiți clienți. Adesea, clienții și serverele comunică printr-o rețea de computere și pot fi diferite dispozitive fizice sau software.

Avantaje

Face posibilă, în majoritatea cazurilor, distribuirea funcțiilor unui sistem de calcul între mai multe computere independente dintr-o rețea. Acest lucru facilitează întreținerea sistemului informatic. În special, înlocuirea, repararea, modernizarea sau mutarea unui server nu afectează clienții.

Toate datele sunt stocate pe server, care, de regulă, este protejat mult mai bine decât majoritatea clienților. Este mai ușor să aplicați controalele de permisiuni pe server pentru a permite doar clienților cu drepturi de acces adecvate să acceseze date.

Vă permite să combinați diferiți clienți. Clienții cu diferite platforme hardware, sisteme de operare etc. pot folosi adesea resursele unui singur server.

[edita]

Defecte

Eșecul serverului poate face ca întreaga rețea de computere să fie inoperabilă.

Sprijinirea funcționării acestui sistem necesită un specialist separat - un administrator de sistem.

Cost ridicat al echipamentelor.

[edita]

Arhitectură client-server multi-nivel

Arhitectura client-server cu mai multe niveluri este un tip de arhitectură client-server în care funcția de procesare a datelor este efectuată pe unul sau mai multe servere separate. Acest lucru vă permite să separați funcțiile de stocare, procesare și prezentare a datelor pentru o utilizare mai eficientă a capabilităților serverelor și clienților.

Cazuri speciale de arhitectură pe mai multe niveluri:

Arhitectură cu trei niveluri

[edita]

Rețea de servere dedicate

O rețea cu un server dedicat (rețeaua client/server engleză) este locală retea de calculatoare(LAN), în care dispozitive de rețea centralizat și gestionat de unul sau mai multe servere. Stațiile de lucru sau clienții individuale (cum ar fi PC-urile) trebuie să acceseze resursele de rețea prin server(e).

Introducere

S-au scris deja multe despre tehnologia client-server. Puteți vedea că o parte din entuziasmul în jurul acestui subiect care a avut loc în urmă cu doi ani s-a domolit cu siguranță. Articolele din presă și conversațiile de pe margine au căpătat un ton calm, de afaceri și acum, de regulă, se discută aspecte specifice ale aplicării acestei tehnologii. Întrebarea „A fi sau a nu fi o arhitectură client-server?” Acum nimeni nu o ridică - toată lumea știe că „A fi!”

Cu toate acestea, este posibil ca mulți cititori să fi devenit interesați de acest subiect abia recent, așa că, în opinia noastră, merită să revenim la el din nou și cu calm, într-o manieră de afaceri, să discutăm ce este arhitectura client-server, de ce este necesară și cum să abordează-l.

Ce este arhitectura client-server?

În general, un sistem client-server se caracterizează prin prezența a două procese independente care interacționează - un client și un server, care, în general, pot fi executate pe computere diferite, schimbând date prin rețea. Conform acestei scheme, pot fi construite sisteme de procesare a datelor bazate pe DBMS, mail și alte sisteme. Desigur, vom vorbi despre baze de date și sisteme bazate pe acestea. Și aici va fi mai convenabil nu doar să luăm în considerare arhitectura client-server, ci și să o comparăm cu un altul - server de fișiere.

Într-un sistem de server de fișiere, datele sunt stocate pe un server de fișiere (de exemplu, Novell NetWare sau Windows NT Server), iar procesarea lor este efectuată pe stații de lucru, care, de regulă, operează unul dintre așa-numitele „DBMS-uri de birou ” - Access, FoxPro , Paradox, etc..

Aplicația de pe stația de lucru este „responsabilă pentru tot” - pentru crearea interfeței cu utilizatorul, procesarea logică a datelor și pentru manipularea directă a datelor. Serverul de fișiere oferă doar cel mai scăzut nivel de servicii - deschiderea, închiderea și modificarea fișierelor, subliniez - fișiere, nu o bază de date. Baza de date există doar în „creierul” stației de lucru.

Astfel, manipularea directă a datelor se realizează prin mai multe procese independente și inconsistente. În plus, pentru a efectua orice procesare (căutare, modificare, rezumare etc.), toate datele trebuie să fie transferate prin rețea de la server la stația de lucru (vezi Fig. Comparația modelelor de fișiere-server și client-server)

Într-un sistem client-server, există (cel puțin) două aplicații - un client și un server, care împart între ele acele funcții care, într-o arhitectură de fișiere-server, sunt realizate în întregime de o aplicație pe o stație de lucru. Stocarea datelor și manipularea directă sunt efectuate de un server de baze de date, care poate fi Microsoft SQL Server, Oracle, Sybase etc.

Interfața cu utilizatorul este creată de client, pentru construcția căreia puteți utiliza o serie de instrumente speciale, precum și majoritatea DBMS-urilor desktop. Logica de procesare a datelor poate fi executată atât pe client, cât și pe server. Clientul trimite cereri către server, de obicei formulate în SQL. Serverul procesează aceste solicitări și trimite rezultatul către client (desigur, pot fi mulți clienți).

Astfel, un proces este responsabil pentru manipularea directă a datelor. În același timp, prelucrarea datelor are loc în același loc în care sunt stocate datele - pe server, ceea ce elimină nevoia de a transfera cantități mari de date prin rețea.

Când aveți nevoie de o arhitectură client-server?

Chiar și o analiză foarte detaliată a caracteristicilor arhitecturii client-server poate să nu răspundă la întrebarea „Ce îmi va oferi asta?” Să privim această arhitectură din punctul de vedere al nevoilor afacerii. Ce calități aduce un client-server unui sistem informațional:

Fiabilitate

Oricine a fost cel puțin o dată în rolul de administrator al bazei de date în momentul în care această bază de date „a murit” din cauza „înghețului” unui server sau stație de lucru, a unei căderi de curent sau a unei alte nenorociri nu va mai neglija niciodată problemele de fiabilitate (dacă , de bineînțeles, va putea păstra acest rol). Dacă nu ai jucat încă acest rol, sper că ai imaginația de a reda acest thriller în cap și prudența de a-ți păstra baza de date (și pe tine) cât mai în siguranță. Cum ajută arhitectura client-server aici?

Serverul bazei de date efectuează modificarea datelor pe baza unui mecanism de tranzacție, care oferă oricărui set de operațiuni declarate ca tranzacție următoarele proprietăți:

atomicitate - în orice circumstanță, fie se vor efectua toate operațiunile tranzacției, fie nu se va efectua niciuna; integritatea datelor la finalizarea tranzacției;

independență - tranzacțiile inițiate de diferiți utilizatori nu interferează în treburile celuilalt;

rezistență la eșec - după finalizarea tranzacției, rezultatele acesteia nu se vor pierde.

Mecanismul de tranzacție suportat de serverul de baze de date este mult mai eficient decât mecanismul similar din SGBD-urile desktop, deoarece serverul controlează central operarea tranzacțiilor. În plus, într-un sistem de fișiere-server, o defecțiune la oricare dintre stațiile de lucru poate duce la pierderea datelor și la inaccesibilitatea acestora la alte stații de lucru, în timp ce într-un sistem client-server, o defecțiune a clientului aproape niciodată nu afectează integritatea datelor. și disponibilitatea acestora pentru alți clienți.

Scalabilitate

Scalabilitatea este capacitatea sistemului de a se adapta la creșterea numărului de utilizatori și a volumului bazei de date cu o creștere adecvată a performanței platformei hardware, fără a înlocui software-ul.

Este bine cunoscut faptul că capacitățile DBMS-urilor desktop sunt serios limitate - cinci până la șapte utilizatori și, respectiv, 30-50 MB. Cifrele, desigur, reprezintă niște valori medii în cazuri specifice, acestea pot devia în orice direcție. Cel mai important, aceste bariere nu pot fi depășite prin creșterea capacităților hardware.

Sistemele bazate pe servere de baze de date pot suporta mii de utilizatori și sute de GB de informații - doar oferiți-le platforma hardware adecvată.

Siguranţă

Serverul de baze de date oferă mijloace puternice de protejare a datelor împotriva accesului neautorizat, ceea ce nu este posibil în SGBD-urile desktop. În același timp, drepturile de acces sunt administrate foarte flexibil - până la nivelul câmpurilor de tabel. În plus, puteți interzice complet accesul direct la tabele, permițând utilizatorului să interacționeze cu datele prin obiecte intermediare - vizualizări și proceduri stocate. Deci, administratorul poate fi sigur că niciun utilizator prea inteligent nu va citi ceea ce nu trebuie să citească.

Flexibilitate

Într-o aplicație de date, există trei straturi logice:

interfata utilizator;

reguli de procesare logică (reguli de afaceri);

gestionarea datelor (nu trebuie să confundați doar straturile logice cu straturile fizice, despre care se vor discuta mai jos).

După cum sa menționat deja, într-o arhitectură de server de fișiere, toate cele trei straturi sunt implementate într-o aplicație monolitică care rulează pe o stație de lucru. Prin urmare, modificările în oricare dintre straturi duc în mod clar la modificarea aplicației și la actualizarea ulterioară a versiunilor acesteia pe stațiile de lucru.

În aplicația client-server pe două niveluri prezentată în Fig. 1, de regulă, toate funcțiile pentru crearea unei interfețe cu utilizatorul sunt implementate pe client, toate funcțiile de gestionare a datelor sunt implementate pe server, dar regulile de afaceri pot fi implementate atât pe server folosind mecanisme de programare a serverului (proceduri stocate, declanșatoare, vizualizări etc.), și asupra clientului. Într-o aplicație cu trei niveluri, apare un al treilea nivel, intermediar, care implementează regulile de afaceri, care sunt componentele aplicației cel mai frecvent modificate (vezi Fig. Modelul aplicației client-server pe trei niveluri)

Prezența nu a unuia, ci a mai multor niveluri vă permite să adaptați în mod flexibil și eficient aplicația la cerințele în schimbare ale afacerii.

Să încercăm să ilustrăm toate cele de mai sus cu un mic exemplu. Să presupunem că regulile de salarizare ale unei anumite organizații (reguli de afaceri) s-au schimbat și software-ul corespunzător trebuie actualizat.

1) Într-un sistem server de fișiere, „pur și simplu” facem modificări aplicației și actualizăm versiunile acesteia pe stațiile de lucru. Dar acest „pur și simplu” implică costuri maxime ale forței de muncă.

2) Într-un sistem client-server cu două niveluri, dacă algoritmul de salarizare este implementat pe server sub forma unei reguli de salarizare, acesta este executat de un server de reguli de afaceri, implementat, de exemplu, ca un server OLE, iar noi va actualiza unul dintre obiectele sale fără a schimba nimic nici în aplicația client, nici pe serverul bazei de date.

Etapele construirii unui sistem client-server.

Să presupunem că utilizați astăzi o aplicație, implementată într-o arhitectură de server de fișiere, folosind mijloace Microsoft Accessși gândiți-vă la dezvoltarea sa. Pot fi luați în considerare următorii pași.

1. Transferați baza de date pe Microsoft SQL Server, păstrând interfața și logica de operare neschimbate. În același timp, nu vei profita de toate avantajele arhitecturii client-server, dar poți fi sigur că datele tale sunt stocate în siguranță.

2. Dezvoltați o aplicație client-server pe două niveluri, folosind aceeași combinație Access - SQL Server, care funcționează foarte bine. Puteți face acest lucru, de exemplu, schimbând treptat componentele individuale ale aplicației obținute la pasul 1. O alternativă ar fi să dezvoltați o aplicație complet nouă folosind Visual Basic, Delphi sau oricare dintre zecile de instrumente disponibile ca client.

3. Dacă planificați o creștere serioasă a organizației dvs., atunci utilizarea unei arhitecturi cu trei niveluri vă va permite să distribuiți mai flexibil sarcina în creștere între servere și să minimizați costurile de întreținere și dezvoltare a sistemului.

Sperăm că acest articol v-a oferit o înțelegere generală a arhitecturii client-server și a beneficiilor acesteia. În numerele viitoare, intenționăm să vorbim mai detaliat despre Microsoft SQL Server și construirea de sisteme bazate pe acesta.

Sunt componente inegale reteaua de informatii. Unii dețin o resursă și, prin urmare, sunt numiți servere, alții accesează aceste resurse și sunt numiți clienți. Să ne uităm la modul în care interacționează între ele și care este arhitectura client-server.

Arhitectura client-server

Arhitectura „Client-Server” este interacțiunea componentelor structurale dintr-o rețea bazată pe cele definite de o anumită rețea, unde componentele structurale sunt serverul și nodurile care asigură anumite funcții (servicii) specializate, precum și clienții care folosesc acest lucru. serviciu. Funcții specifice Se obișnuiește să se împartă în trei grupe pe baza rezolvării anumitor probleme:

  • funcțiile de introducere și prezentare a datelor sunt concepute pentru interacțiunea utilizatorului cu sistemul;
  • funcții aplicate - fiecare are propriul său set;
  • Funcțiile de gestionare a resurselor sunt concepute pentru a gestiona sistemul de fișiere, diferite baze de date și alte componente.

De exemplu, un computer fără conexiune la rețea,reprezintă componente de prezentare, aplicație și control la diferite niveluri. Aceste niveluri includ sistemul de operare, aplicația și software-ul utilitar și diverse utilitare. În același mod, toate componentele de mai sus sunt prezentate pe Internet. Principalul lucru este să asigurați în mod corespunzător interacțiunea în rețea între aceste componente.

Cum funcționează arhitectura client-server

Arhitectura client-server este folosită cel mai adesea pentru a crea baze de date corporative în care informațiile nu sunt doar stocate, ci și procesate periodic. diverse metode. Baza de date este elementul principal al oricărui sistem de informații corporative, iar serverul găzduiește nucleul acestei baze de date. Astfel, pe server au loc cele mai complexe operațiuni legate de introducerea, stocarea, prelucrarea și modificarea datelor. Când un utilizator (client) accesează baza de date (server), cererea este procesată: accesând direct baza de date și returnând un răspuns (rezultat procesare). Rezultatul procesării este un mesaj de rețea despre succesul operațiunii sau o eroare. Calculatoarele server pot gestiona solicitări simultane de la mai mulți clienți pentru același fișier. O astfel de muncă prin rețea vă permite să accelerați activitatea aplicațiilor pe care le utilizați.

Arhitectura client-server: aplicarea tehnologiei

Această arhitectură este folosită pentru a accesa diverse resurse folosind tehnologii de rețea: baze de date, servere de mail, firewall-uri, servere proxy. Dezvoltarea aplicațiilor client-server poate îmbunătăți securitatea, fiabilitatea și performanța aplicațiilor utilizate și a rețelei în ansamblu. Aplicațiile client-server sunt cel mai adesea folosite pentru automatizarea afacerii.

Un SGBD modern trebuie să satisfacă o serie de cerințe, dintre care cea mai importantă este un server de baze de date inteligent de înaltă performanță. În continuare, vom lua în considerare principalele tendințe în dezvoltarea sa și vom discuta mecanismele specifice în care acestea sunt întruchipate.

Procesul de îmbunătățire tehnică a serverului de baze de date rămâne încă invizibil pentru majoritatea utilizatorilor SGBD-urilor moderne. Prin urmare, atunci când aleg un anumit sistem, nici ei, de regulă, nu iau în considerare nivel tehnic deciziilor încorporate în mecanismul funcționării acestuia, nici impactul acestor decizii asupra performanța generală SGBD. Între timp, calitatea sa nu este determinată de bogăția interfețelor utilizator sau de varietatea instrumentelor de suport pentru dezvoltare, ci depinde în primul rând de caracteristicile arhitecturii serverului de baze de date. În continuare, vor fi luate în considerare modele ale tehnologiei client-server, se va determina locul serverului bazei de date în aceste modele, iar cele mai importante mecanisme ale serverului bazei de date - proceduri, reguli (declanșatoare), evenimente - vor fi descrise pe scurt. Acesta din urmă va fi ilustrat cu exemple care utilizează dialectul SQL adoptat în SGBD-ul Ingres.

Tehnologie și modele client-server.

„Client-server” este un model de interacțiune între computere dintr-o rețea. De regulă, computerele nu sunt egale. Fiecare dintre ele are propriul său scop, diferit de celelalte și își joacă rolul său. Unele computere din rețea dețin și gestionează informații și resurse de calcul, cum ar fi procesoare, sisteme de fișiere, servicii de corespondență, servicii de imprimare și baze de date. Alte computere au capacitatea de a accesa aceste servicii folosind serviciile primului. Calculatorul care gestionează această sau acea resursă este de obicei numit serverul acestei resurse, iar computerul care dorește să o utilizeze se numește client. Un anumit server este determinat de tipul de resursă pe care îl deține. Deci, dacă resursa este o bază de date, atunci despre care vorbim O server de baze de date, al căror scop este de a deservi cererile clienților legate de prelucrarea datelor; dacă resursa este un sistem de fișiere, atunci vorbim despre server de fișiere, sau server de fișiere etc.

Într-o rețea, același computer poate acționa atât ca client, cât și ca server. De exemplu, într-un sistem informatic care include computere personale, un computer mainframe și un minicomputer care rulează UNIX, acesta din urmă poate acționa atât ca server de bază de date, deservind cereri de la clienți - computere personale, cât și ca client, trimițând cereri către mainframe. calculator.

Același principiu se aplică interacțiunii programelor. Dacă unul dintre ei îndeplinește anumite funcții, oferind altora un set corespunzător de servicii, atunci un astfel de program acționează ca un server. Programele care folosesc aceste servicii se numesc clienți. Astfel, nucleul unui SGBD relațional orientat spre SQL este adesea numit server de baze de date sau server SQL, iar programul care îl accesează pentru serviciile de procesare a datelor se numește client SQL.

Inițial, SGBD-urile aveau o arhitectură centralizată (Figura 10). În el, funcționau SGBD-ul însuși și programele de aplicație care lucrau cu baze de date calculator central(computer mainframe sau mini-computer). Bazele de date erau de asemenea amplasate acolo. Terminalele erau conectate la computerul central și acționau ca stații de lucru ale utilizatorului. Toate procesele legate de prelucrarea datelor, cum ar fi: suport pentru introducerea utilizatorului, generarea, optimizarea și executarea interogărilor, schimbul cu dispozitivele memorie externă etc., au fost executate pe un computer central, care impunea performanțe stricte. Caracteristicile primei generații DBMS sunt direct legate de arhitectura sistemelor mainframe și minicomputer și reflectă în mod adecvat toate avantajele și dezavantajele acestora. Cu toate acestea, suntem mai interesați de starea actuală a SGBD-ului multi-utilizator, pentru care arhitectura client-server a devenit standardul de facto.

Figura 10 – Sisteme cu arhitectură centralizată

Pentru a vă face o idee mai clară a caracteristicilor sale, este necesar să luați în considerare mai multe modele de tehnologie client-server, care vor fi realizate.

Dacă se presupune că proiectat sistem informatic(IS) va avea o tehnologie client-server, ceea ce înseamnă că programele de aplicație implementate în cadrul său vor fi distribuite în natură. Cu alte cuvinte, unele dintre funcțiile programului de aplicație (sau, mai simplu, aplicația) vor fi implementate în programul client, altele - în programul server și se va defini un anumit protocol pentru interacțiunea lor.

Principiul de bază al tehnologiei client-server este împărțirea funcțiilor unei aplicații interactive standard în patru grupuri de naturi diferite. Primul grup este funcțiile de introducere și afișare a datelor. Al doilea grup combină funcții pur aplicate caracteristice unui dat domeniul subiectului(de exemplu, pentru sistemul bancar - deschiderea unui cont, transferul de bani dintr-un cont în altul etc.). Al treilea grup include funcțiile fundamentale de stocare și gestionare a resurselor informaționale (baze de date, sisteme de fișiere etc.). În cele din urmă, funcțiile celui de-al patrulea grup sunt funcții de serviciu (jucând rolul de legături între funcțiile primelor trei grupuri.

În conformitate cu aceasta, următoarele componente logice se disting în orice aplicație:

O componentă de prezentare care implementează funcțiile primului grup;

O componentă de aplicație care acceptă funcțiile celui de-al doilea grup;

Componenta de acces resurse informaționale, susținând funcțiile grupului al treilea, și sunt introduse și clarificate acorduri privind metodele de interacțiune a acestora (protocol de interacțiune).

Diferențele în implementările tehnologiei client-server sunt determinate de patru factori. În primul rând, în ce tipuri de software sunt integrate fiecare dintre aceste componente. În al doilea rând, ce mecanisme software sunt folosite pentru a implementa funcțiile tuturor celor trei grupuri. În al treilea rând, modul în care componentele logice sunt distribuite între computerele din rețea. În al patrulea rând, ce mecanisme sunt folosite pentru a conecta componentele între ele.

Există patru abordări implementate în modele:

· model server de fișiere (File Server - FS);

· model de acces la date la distanță (Remote Data Access - RDA);

· model de server de baze de date (DataBase Server - DBS);

model de server de aplicații ( Server de aplicații- AS).

Modelul FS este cel de bază pentru rețelele locale de calculatoare personale. Nu cu mult timp în urmă a fost extrem de popular în rândul dezvoltatorilor autohtoni care foloseau sisteme precum FoxPRO, Clipper, Clarion, Paradox etc. Esența modelului este simplă și cunoscută de toată lumea. Se ia în considerare unul dintre calculatoarele din rețea server de fișiereși oferă servicii de procesare a fișierelor altor computere. Serverul de fișiere rulează sub controlul rețelei sistem de operare(de exemplu, Novell NetWare) și joacă rolul unei componente pentru accesarea resurselor de informații (adică fișiere). Pe alte computere din rețea rulează o aplicație, al cărei cod combină o componentă de prezentare și o componentă de aplicație (Figura 11). Protocolul de schimb este un set de apeluri de nivel scăzut care oferă unei aplicații acces la sistemul de fișiere de pe serverul de fișiere.

Figura 11 – Model de server de fișiere

Modelul FS a servit ca fundație pentru extinderea capacităților SGBD-urilor personale în direcția suportării modului multi-utilizator. În astfel de sisteme pe mai multe calculatoare personale sunt executate atât programul de aplicație, cât și o copie a SGBD-ului, iar bazele de date sunt conținute în fișiere partajate care se află pe serverul de fișiere. Când un program de aplicație accesează o bază de date, SGBD transmite cererea către serverul de fișiere. Această solicitare specifică fișierele în care se află datele solicitate. Ca răspuns la cerere, serverul de fișiere trimite blocul de date necesar prin rețea. SGBD, după ce l-a primit, efectuează acțiunile asupra datelor care au fost declarate în programul de aplicare.

Dezavantajele tehnologice ale modelului includ mare trafic de rețea(transferul mai multor fișiere, cerute de cerere), o gamă restrânsă de operațiuni de manipulare a datelor („datele sunt fișiere”), lipsa măsurilor de securitate adecvate pentru accesarea datelor (protecție doar la nivel de sistem de fișiere) etc. De fapt, cele de mai sus nu sunt dezavantaje, ci sunt o consecință a limitărilor inerente ale modelului FS, determinate de natura sa. Neînțelegerile apar atunci când modelul FS este utilizat în alte scopuri, de exemplu, atunci când încearcă să-l interpreteze ca model de server de baze de date. Locul modelului FS în ierarhia modelelor client-server este locul modelului server de fișiere și nimic mai mult. De aceea, încercările de a crea sisteme corporative mari bazate pe modelul FS sunt sortite eșecului - încercări care au fost făcute în trecutul recent și se fac adesea acum.

Modelul RDA mai avansat din punct de vedere tehnologic diferă semnificativ de modelul FS prin natura componentei de acces la resursele informaționale. Acesta este de obicei un server SQL. În modelul RDA, codurile componentei de prezentare și ale componentei aplicației sunt combinate și executate pe computerul client. Acesta din urmă acceptă atât funcțiile de introducere a datelor și de afișare, cât și funcții pur de aplicație. Accesul la resursele informaționale este asigurat fie de către operatori ai unui limbaj special (limbaj SQL, de exemplu, dacă vorbim de baze de date), fie prin apeluri la funcții ale unei biblioteci speciale (dacă există o interfață de programare a aplicațiilor adecvată - API).

Clientul trimite cereri către resurse de informații (de exemplu, baze de date) prin intermediul rețelei computer la distanță. Rulează nucleul DBMS, care procesează interogări, efectuând acțiunile prescrise în acestea și returnează rezultatul clientului, formatat ca un bloc de date (Figura 12). În acest caz, inițiatorul manipulării datelor sunt programele care rulează pe computerele client, în timp ce miezului DBMS îi este atribuit un rol pasiv - deservirea interogărilor și procesarea datelor.

Figura 12 – Model de acces la date de la distanță

Modelul RDA elimină dezavantajele inerente ambelor sisteme cu arhitectură centralizată și sistemelor cu server de fișiere.

În primul rând, mutarea componentei de prezentare și a componentei de aplicație pe computerele client ușurează semnificativ sarcina pe serverul bazei de date, minimizând numărul total de procese ale sistemului de operare. Serverul de baze de date este eliberat de funcții neobișnuite pentru acesta; Procesorul sau procesoarele serverului sunt complet încărcate cu procesarea datelor, interogări și tranzacții. Acest lucru este posibil prin eliminarea terminalelor și dotarea stațiilor de lucru cu calculatoare care au propriile resurse de calcul locale, utilizate pe deplin de programele front-end. Pe de altă parte, încărcarea rețelei este redusă drastic, deoarece nu sunt cererile de I/O care sunt transmise de la client la server (ca în sistemele cu un server de fișiere), ci solicitările în limbajul SQL, volumul lor este semnificativ mai mic.

Principalul avantaj al modelului RDA este unificarea interfeței client-server sub forma limbajului SQL. Într-adevăr, interacțiunea unei componente de aplicație cu nucleul DBMS este imposibilă fără un mijloc de comunicare standardizat. Solicitările făcute de un program către nucleu trebuie să fie înțelese de ambii. Pentru a face acest lucru, ele ar trebui să fie formulate într-un limbaj special. Dar există deja în SGBD Limbajul SQL, despre care s-a discutat deja. Prin urmare, este recomandabil să îl utilizați nu numai ca mijloc de accesare a datelor, ci și ca standard de comunicare între client și server.

O astfel de comunicare poate fi comparată cu o conversație între mai multe persoane, când unul răspunde la întrebările celorlalți (întrebările se pun simultan). Mai mult, face asta atât de repede încât timpul de așteptare pentru un răspuns se apropie de zero. De mare viteză comunicarea se realizează în primul rând printr-o formulare clară a întrebării, atunci când cel care pune întrebări și cel care răspunde nu au nevoie de consultări suplimentare cu privire la esența problemei. Vorbitorii schimbă câteva fraze scurte, fără ambiguitate, nu au nevoie să clarifice nimic.

Din păcate, modelul RDA nu este lipsit de o serie de dezavantaje. În primul rând, interacțiunea dintre client și server prin interogări SQL încarcă semnificativ rețeaua. În al doilea rând, administrarea satisfăcătoare a aplicațiilor în modelul RDA este aproape imposibilă datorită combinării funcțiilor de natură diferită (funcții de prezentare și aplicație) într-un singur program.

Alături de modelul RDA, modelul promițător DBS devine din ce în ce mai popular (Figura 13). Acesta din urmă este implementat în unele SGBD relațional(Informix, Ingres, Sybase, Oracle). Se bazează pe mecanism proceduri stocate- Instrument de programare SQL Server. Procedurile sunt stocate într-un dicționar de bază de date, partajate între mai mulți clienți și executate pe același computer pe care rulează serverul SQL. Limbajul în care sunt dezvoltate procedurile stocate este o extensie procedurală a limbajului interogări SQLși este unic pentru fiecare SGBD specific.

Figura 13 – Modelul serverului bazei de date

În modelul DBS, componenta de prezentare rulează pe computerul client, în timp ce componenta aplicație este concepută ca un set de proceduri stocate și rulează pe computerul serverului bazei de date. Acolo se execută și componenta de acces la date, adică nucleul DBMS. Avantajele modelului DBS sunt evidente: aceasta este posibilitatea de administrare centralizată a funcțiilor aplicației și reducerea traficului (în loc de interogări SQL, apelurile către procedurile stocate sunt trimise prin rețea) și capacitatea de a împărți o procedură între mai multe aplicații și economisirea resurselor computerului prin utilizarea unui plan de execuție a procedurii odată creat. Dezavantajele modelului includ instrumentele limitate utilizate pentru scrierea procedurilor stocate, care sunt diverse extensii procedurale ale SQL care nu rezistă comparației vizuale și vizuale. funcţionalitate cu limbaje de a treia generație, cum ar fi C sau Pascal. Sfera de utilizare a acestora este limitată la un SGBD specific, majoritatea SGBD-urilor nu au capacitatea de a depana și testa procedurile stocate dezvoltate.

În practică, modelele mixte sunt adesea folosite, atunci când suportul pentru integritatea bazei de date și unele funcții simple ale aplicației sunt suportate de proceduri stocate (model DBS) și multe altele funcții complexe sunt implementate direct într-un program de aplicație care rulează pe un computer client (model RDA). Într-un fel sau altul, SGBD-urile moderne multi-utilizator se bazează pe modelele RDA și DBS, iar atunci când creează un IS care implică utilizarea doar a unui SGBD, aleg unul dintre aceste două modele sau o combinație rezonabilă a acestora.

Figura 14.

Model de server de aplicații.

În modelul AS (Figura 14), procesul care rulează pe computerul client este, ca de obicei, responsabil pentru interfața cu utilizatorul (adică îndeplinește funcțiile primului grup). Atunci când se solicită servicii de la o componentă a aplicației, acest proces joacă rolul de client de aplicație(Client de aplicație - AC). O componentă de aplicație este implementată ca un grup de procese care îndeplinesc funcții de aplicație și se numește server de aplicații ( Server de aplicații - AS). Toate operațiunile asupra resurselor informaționale sunt efectuate de componenta corespunzătoare, în raport cu care AS joacă rolul unui client. Resurse disponibile din componentele aplicației diverse tipuri- baze de date, cozi, servicii postale etc.

Modelele RDA și DBS se bazează pe o separare a funcțiilor pe două niveluri. În modelul RDA, funcțiile aplicației sunt atribuite programului client în modelul DBS, kernel-ul DBMS își asumă responsabilitatea pentru execuția lor; În primul caz, componenta de aplicație se îmbină cu componenta de prezentare, iar în al doilea, este integrată în componenta de accesare a resurselor informaționale. Modelul AS implementează o schemă de separare a funcțiilor pe trei niveluri, în care componenta aplicației este evidențiată ca cel mai important element izolat al aplicației, mecanismele universale ale unui sistem de operare multitasking sunt utilizate pentru a o defini și interfețele cu alte două componente sunt standardizate. . Modelul AS este baza pentru monitorizarea procesării tranzacțiilor ( Monitoare de procesare a tranzacțiilor - TPM), sau, mai simplu, monitoare de tranzacții, care se remarcă ca tip special de software.

În concluzie, observăm că atunci când vorbim despre un server de baze de date, ne referim adesea atât la un computer, cât și la software - nucleul DBMS. Când descriem arhitectura Client-Server, prin server de baze de date ne referim la un computer. Mai mult, serverul de baze de date va fi înțeles ca software - nucleul DBMS.


Informații conexe.