Архітектура клієнт-сервер - це мережева архітектура, в якій взаємодіють пристрої звані клієнтами і серверами. Дана архітектура може використовуватися як для фізичних пристроїв, так і для програмного забезпечення залежно від розподілу логічних компонентів додатка між клієнтом і сервером.
В архітектуру клієнт-сервер входять наступні основні компоненти:
Використання такої архітектури допомагає оптимізувати розподіл обчислювальних ресурсів і забезпечує захист даних.
Розподілені системи і додатки
Розподілена система являє собою групу комп'ютерів, яку користувачі бачать як єдину об'єднану систему.
Виділяють 2 аспекти розподіленої системи:
- всі комп'ютери є автономними;
- користувачам така система представляється єдиною.
Розподілені додатки в мережі Інтернет, як правило, мають у своїй основі модель типу клієнт-сервер - в цій моделі програми структурують, розділяючи їх на серверні процеси, що надають спеціалізовані служби для клієнтських процесів, при цьому серверні процеси можуть працювати з одним або декількома клієнтами:
Хоча і клієнт, і сервер теоретично можуть знаходитися на одному комп'ютері, в основному системи такої архітектури запускають клієнтські процеси на одному комп'ютері, а процеси сервера на іншому, а для того, щоб обмінюватися інформацією використовують мережеві зв'язку. Така модель дозволяє одному процесу працювати незалежно від інших, виконувати ті чи інші завдання і розподіляти обчислювальне навантаження.
Зазвичай в якості клієнта використовується настільний ПК, який виконує ПО кінцевого користувача - це будь-які прикладні програми, які направляють запит по мережі сервера і обробляють отриману від нього інформацію. Наприклад ПК, який працює під управлінням Windows і виконує програму клієнта може послати запит серверу працює на іншій системі або ж сервера баз даних. Сервер ж отримавши запит, виконує ті чи інші дії від імені клієнта.
Взаємодія клієнта і сервера в мережі Інтернет здійснюється за допомогою запитів, які клієнт посилає серверу, і відповідей, які сервер відсилає на запит клієнта.
Дослідження роботи різних додатків-інтернет показують, що в 70 відсотках випадків для виконання тих чи інших дій користувачеві не потрібно звертатися до сервера - всі ці дії можуть бути реалізовані на стороні клієнта, якщо їх виконання може бути на ньому запрограмовано.
Переваги архітектури клієнт-сервер
Безсумнівна перевага полягає в наближеності даних до обчислювальних процесів. Велика частина розрахунків виконується на стороні сервера, завдяки чому швидкодія значно збільшується.
Технологія клієнт-сервер дає велику безпеку для користувача, процеси виконуються більш стабільно, злагоджено, з підвищеною конфіденційністю, дані швидко обробляються і надійно зберігаються. Розвиток системи з архітектурою клієнт-сервер зобов'язана також тому, що при підключенні до недорогих серверів таких же недорогих ПК виходить оптимальне співвідношення вартості і продуктивності.
Як правило, програма обробки даних (клієнтська частина) розташовується на одному ПК, а сама БД - на іншому. Такий поділ цілком закономірно: клієнтська частина програми (та, що знаходиться у користувача), передає по мережі запит на обробку даних на інший комп'ютер, на якому сервер бази даних їх читає, виконує, і повертає по мережі відповідь клієнту. Причому по мережі передається лише корисна інформація.
З іншого боку постійно вдосконалюється сам метод зберігання і обробки даних, і якщо його реалізація (тобто сервер баз даних) змінилася, то не потрібно буде робити нову компіляцію з новими бібліотеками всіх розроблених програм, а потрібно всього лише зробити установку нового сервера БД і перевести бази даних в новий формат сервера.
Використовуючи різні комп'ютери, розробники клієнт-серверних систем емулюють обчислювальну потужність великих ЕОМ, розподіляють прикладні завдання по різних комп'ютерів і серверів. Кожен з цих комп'ютерів бере на себе певну обчислювальну навантаження, використовує інформацію спільно з іншими процесорами в мережі.
Але сама ідея полягає в підвищенні потужності системи, не шляхом збільшення продуктивності одного комп'ютера, а узагальнюючи можливості багатьох.
Швидкодія є основним фактором для розробки систем для клієнт-серверної архітектури. Використання програмних засобів швидкої розробки дозволяє розробникам "створювати прикладні системи для клієнт-серверної архітектури в дуже короткі терміни. Реалізувати клієнт серверну архітектур в вашому офісі, або підтримувати поточну можуть компанії, які проводять абонентське обслуговування комп'ютерів організацій. Або грамотні системні адміністратори.