Архитектуры клиент/сервер

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

клиент/сервер состоит в использовании процесса-клиента в качестве

пользовательского интерфейса, а процесса-сервера - в качестве сервера базы данных или файл-сервера. На сегодняшний день наиболее распространенным вариантом аппаратного решения архитектуры клиент/сервер является наличие нескольких персональных компьютеров с работающими на них прцессами-клиентами и одного многозадачного хоста с крутящимися на нем процессами-серверами.

В случае двухуровневой архитектуры клиент/сервер клиент непосредственно общается с сервером, без участия каких-либо промежуточных процессов. Двухуровневая архитектура клиент/сервер является сейчас наиболее распространенной в локальных сетях из мини-компьютеров, хотя в недалеком

будущем эта ситуация, судя по всему, изменится. Двухуровневую архитектуру клиент/сервер отличает наличие больших клиентов или больших серверов, выполняющих всю работу промежуточного приложения. Следовательно, клиенты берут на себя заботы о пользовательском интерфейсе, проверяют вводимые

пользователем данные, занимаются маршрутизацией запросов к программам-серверам и выполняют некоторую часть логики. Серверы принимают клиентские запросы, выполняют поиск и обновление информации, например, в базах данных, поддерживают целостность информации, управляют транзакциями, выполняют логику и отсылают данные клиентам.

Трехуровневая архитектура клиент/сервер включает третий уровень обработки данных между клиентом и сервером. В локальных сетях, построенных на базе персональных компьютеров, трехуровневая архитектура представляет собой сравнительно недавнее изобретение, и то, что происходит на промежуточном уровне, гораздо менее строго определено, нежели то, чем занимается клиент и сервер. Важное преимущество трехуровневой архитектуры перед двухуровневой

состоит в том, что первая позволяет клиенту и серверу сбросить вес и стать маленькими клиентами и маленькими серверами. Это означает дальнейшее разделение функций, достижение большей модульности.

Многоуровневая относится к разновидности трехуровневой архитектуры, когда между клиентом и сервером существует несколько процессов. Например, установка базы данных в WWW является примером трехуровневой или многоуровневой архитектуры, где Web-сервер и программа-расширение сервера выполняют роль промежуточного программного обеспечения между Web-броузером и сервером базы данных.

Инструментарий WWW и источники данных - это две отдельные технологии, разрабатывавшиеся независимо друг от друга. Но та и другая основываются на двухуровневой архитектуре клиент/сервер.

Разграничение функций между Web-броузером и Web-сервером является очень четким. Web-сервер предоставляет HTML-страницы, а броузер отображает эти страницы путем интерпритации дескрипторов HTML. Ни одна из сторон не в состоянии изменить подобное разделение труда. Благодаря такой стандартизации

многочисленные производители могут создавать свои броузеры.

Разделение функций между клиентской и серверной частями гораздо менее различимо. Решение о том, как разделить работу, нередко принимаются программистами приложений, а влияют на него требования, предъявляемые к конкретному проекту. Такая недостаточность стандартизации означает, что немалая доля труда программистов тратится на внесение изменений в клиентскую

и/или серверную части программного продукта. Часть работы состоит в

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

занимает браузер, на уровне сервера находится сервер базы данных, а на

промежуточном уровне распологаются Web-сервер и программа – расширение сервера. Такое архитектурное решение позволяет уменьшить сетевой график, делает компоненты взаимосвязанными и повышает уровень безопасности.

Однако такая архитектура также затрудняет обработку транзакций базы данных ввиду природы протокола HTTP, не запоминающего состояния (этот протокол используется для передачи данных между броузером и сервером базы данных). Броузер посылает Web-серверу запросы на доставку Web-страниц или данных. Web-сервер обслуживает заявки на Web-страницы, а запросы данных отправляют программе-расширению серверной части. Последняя принимает передаваемые ей

запросы, преобразует их в форму, понятную серверу базы данных, и передает их серверу базы данных. Затем сервер базы данных выполняет работу по обслуживанию запроса, например добавление записи, и возвращает результаты программе-расширению серверной

части. Наконец та преобразует результаты в формат, приемлимый для броузера -HTML, и передает их Web-серверу, а тот в свою очередь броузеру.