Моделът Клиент/Сървър

Предназначение и произход

Терминът "клиент/сървър" за първи път се използва при свързване на персонални компютри в мрежа през 80-те години. Действителният клиент/сървър модел започва да печели популярност в края на 80-те.

Терминът "клиент/сървър" описва взаимоотношенията между две компютърни програми, от които едната програма – клиент, прави заявка за услуга към другата програма - сървър, който изпълнява заявката (вижте фигура 1). Въпреки, че идеята за клиент/сървър може да се използва от програми на един компютър, по-важна е идеята, реализирана в мрежа. В една мрежа моделът клиент/сървър предоставя удобен начин за свързване на програми, разпределени в нея.

Фигура 1: Общ вид на модела клиент/сървър

История на еволюцията на клиент/сървър модела

Клиент/сървър архитерктурата има за цел да предложи по-добри показатели, в сравнение с централизираният модел на големите приложения, по отношение на:

Клиент/Сървър

Моделът клиент/сървър е основата на днешните разпределени системи. Той е отговор на ограниченията типични за традиционния модел на централизирани ресурси, където главният компютър предоставя достъп до бази от данни чрез множество терминали. Клиент/сървър моделът е отговор и на архитектурата на файловите сървъри в локални мрежи, където системи комуникират с файл сървър, неразполагащ с мощен процесор.

Архитектурата клиент/сървър има три основни компонента: клиент, сървър и връзката помежду им.

Клиент

Клиентът е програмата, очакваща да получи услуга от друга програма. Той взаимодейства с потребителя чрез клавиатурата, дисплея или друго входно/изходно устройство. Клиентът няма директни отговорности към достъпа до данни. Той само изпраща заявки до сървъра и показва върнатите резултати на екрана. Ето защо клиентската машина може да бъде оптимизирана за своята работа. Например, тя няма да има нужда от голямо дисково пространство, за чиято сметка може да подобри възможностите на графичните си устройства. Клиентът извършва следните обработки:

Обикновено за това не се изисква някаква сложна и скъпа техника. Най-обикновен персонален компютър би бил достатъчен на всеки желаещ да отправи заявка.

Сървър

Сървърът е системата, която предоставя набор от услуги на клиента. Той има за задача да приема и обработва клиентските заявки и да връща отговора обратно. Сървърът има нужда от голямо дисково пространство и мощен процесор, за да обработва бързо голямо количество информация (данни).

Връзката между клиента и сървъра

Клиентът и сървърът могат да са на един и същ компютър или на различни компютри, свързани в мрежа. Мрежата прави възможна отдалечената клиент/сървър комуникация.

Подмодели на клиент/сървър архитектурата

Двуслоен клиент/сървър модел

Клиент/сървър архитектурата не винаги се ограничава до комуникацията с единствен сървър. Понякога клиентските заявки се разпределят между много сървъри. Но в най-честия случай края на клиент/сървър веригата е сървърът с базите данни, а клиентското приложение се грижи за логиката и графичния интерфейс (вижте фигура 2).

Фигура 2: Двуслоен клиент/сървър модел

Трислоен клиент/сървър модел

Трислойната архитектура се появява, за да се преодолеят ограниченията на двуслойния модел. Тя добавя трети слой между потребителската среда и сървъра с базите данни. Съществуват множество от варианти за реализирането на междинния слой: контрол на изпълнението на транзакциите, сървъри за съобщения и сървъри за приложения. Средният слой може да извършва буфериране на клиентските заявки, изпълнение на приложения, операции с бази от данни. В добавка на това, средният слой може да разпределя по време и приоритет заявките. Клиентът може да остави заявката си на средния слой, който да извърши всичко необходимо по изпълнението и връщането на резултата (вижте фигура 3). При много голям брой потребители работещи с даден сървър трислойният модел дава по-добри резултати от двуслойния.

Фигура 3: Трислоен клиент/сървър модел

Приложение на модела клиент/сървър в Интернет

Когато трябва да се свържат няколко съществуващи информационни системи, се оказва, че повечето функциониращи информационни системи са несъвместими помежду си. Някои от тях работят на твърде стари машини, докато други са изградени на база последния "вик на техниката", което води и до разнообразие на използваните технологии. Ясно е, че решим ли да пренасяме данни между такива системи няма да ни е лесно и ще трябва да се преборим с редица усложнения. Немислимо е да се унифицират всички системи, защото това би струвало страшно много, а и не всеки разполага с необходимия финансов и човешки потенциал да го направи. Освен това веднъж синхронизирани, компонентите на мрежите трябва да продължат да се подобряват и поддържат хомогенни. Вижда се, че уеднаквяване на компонентите е почти, за да не кажем напълно, невъзможно да се постигне. Решението, което се налага по естествен начин е да слезем едно ниво надолу – щом не можем да уеднаквим компонентите можем да уеднаквим стандартите за пренос на данни между тях.

Това определя следните изисквания към глобалната мрежа:

  1. Да поддържа връзка между хетерогенни (разнородни като компоненти) мрежи.

  2. Да е независима от времето и разстоянията в комуникационната среда.

  3. Да позволява достъп до информацията и приложенията на различни сървъри чрез единствен клиент, което да се имплементира под форма на универсално клиентско приложение.

  4. Да предоставя възможност за свързване чрез компютърна мрежа или с помощта на достатъчно евтино персонално устройство (налага се модем-а ) при възможно най-ниска цена.

  5. Клиентите да имат достъп до въпросната мрежа без значение компютърната си платформа.

  6. Информацията, която ще се разполага на сървърите да е достъпна посредством унифициран стандарт и то независим от платформата, на която работи сървъра.

Ето защо глобалната мрежа – Интернет зае толкова важно място сред средствата за комуникация. Едно от основните й качества е, че е хетерогенна и повечето използвани в наши дни информационни и комуникационни технологии могат без проблем да се свържат с Интернет.

За използването на Интернет е важно разбирането на технологиите, чрез които работи самата глобална мрежа. В тази връзка, трябва да е наясно как точно се извършва обмена на информация по Интернет.

Oсновният модел за обмен на информация в Интернет е модела "клиент/сървър".

WWW е Интернет услуга, в основата на която стои също модела клиент/сървър и чрез която ще демонстрираме прилагането на модела. Комуникацията между Web клиента и Web сървъра се осъществява чрез използване на протокола HTTP. HTTP ( Hyper Text Transfer Protocol) служи за обмен на документи между сървър и клиент, и е част от протоколния стек TCP/IP за управление на поток от данни в Интернет. Всъщност протокола HTTP функционира на базата на проста схема от тип "въпрос–отговор". Клиентът изпраща заявка към сървъра, на която сървърът отговаря. Графично схемата е показана на следната фигура.

Принцип на комуникиране между Web клиент и Web сървър

Илюстрираният начин за взаимодействие между клиент и сървър не е единствения в Интернет. Освен при HTTP подобна схема на комуникация се прилага и при други протоколи – например FTP (File Transfer Protocol). Общо казано Web сървърът ще изпраща поисканите от клиентите заявки и файлове. Разликата между това дали ще използваме FTP или HTTP сървър се състои в значително по–богатата функционалност на HTTP сървъра. Ако изградим нашия сайт с Web страници под форма на хипермедийни документи, може да сложим освен текста и асоциирани с него графични, звукови или видео компоненти. Тогава, при условие, че клиент е отправил заявка към сайта ни, като резултат ще му бъдат изпратени всички елементи на документа, т.е всички съставни компоненти ще влязат в документа-резултат. Освен това според естеството на заявката и средствата за нейната обработка, от сървъра към клиента може да се изпращат и генерирани динамично данни (CGI интерфейс, Java аплет или Active X контрола).

Трислойният модел клиент/сървър, разгледан по отношение на услугата WWW, структурно може да бъде разделен на две части. Първата част включва всичко, което се намира между клиента и HTTP сървъра. Характерно за тази част от модела е, че е стандартизирана, платформено независима, в основата й са принципите на действие на Интернет услугите,и може без проблеми да поддържа мрежи с нисък дебит. Втората част на модела обхваща всичко, което стои след HTTP сървъра. Специално в тази част много от технологиите и елементите на класическия модел "клиент/сървър" са запазени. По-долу е показано графично поведението на Web сайт в Интернет среда, обусловено от правилата на трислоен клиент/сървър модел.

Схема на функциониране на Web сайт, базиран на технологията

Клиентът управлява потребителския интерфейс, управлява и контролира входящите данни. Това предпазва мрежата от излишен трафик . Web сървърът свързва клиента, който иска някаква информация, със сървъра, където се пазят данните, които са поискани. Сървърът за данни има за цел да обработи данните и заявките (обикновено те са във форма на SQL) и осъществява връзка със сървъра на базата от данни с цел достъп до данните. С цел облекчаване натоварването на сървърите и увеличение на капацитета, с който биха могли да обслужват отправени към сайта ни заявки, работата им може да се разпредели между няколко физически отделени машини, а не върху една единствена.

Схематично, етапите през които трябва да премине Интернет приложението в средата на трислоен клиент/сървър може да се опишат по следния начин:

  1. Web сървъра и Web клиента се свързват посредством HTTP протокола и се извлича съответната страница, която се предава на браузъра.

  2. Клиента въвежда данните в HTML формуляри, които се визуализират при него от Web браузър.

  3. При самото въвеждане има контрол, който се извършва от скриптов език, който може да е Perl, C, JavaScript, VBScript или който и да е друг, ако сме се спрели на CGI метод за трансфер на данни и генериране на динамична HTML страница. При положение, че използваме Java същата функция извършват специално написани приложения, наречени сървлети.

  4. Заявката се изпраща към HTTP сървър с помощта на протокола CGI или се генерира от Java сървлета.

  5. Получените данни се обработват и се генерира заявка, в нашия пример SQL заявка.

  6. Свързваме се с нужните ни данни посредством сървъра на БД.

  7. Получените като резултат от изпълнената заявка данни се вграждат в HTML страница. Целта е да може да се интерпретират от клиента.

  8. Резултатите се изпращат на клиента и се визуализират от браузъра.