Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции.doc
Скачиваний:
482
Добавлен:
28.03.2015
Размер:
5.84 Mб
Скачать

Варианты архитектуры клиент-сервер

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

♦ Клиентские машины, на которых имеются программы, реализующие толь­ко пользовательский интерфейс или его часть.

♦ Серверы, реализующие все остальное, то есть уровни обработки и данных.

Проблема подобной организации состоит в том, что на самом деле система не является распределенной: все происходит на сервере, а клиент представляет со­бой не что иное, как простой терминал. Существует также множество других возможностей, наиболее употребительные из них мы сейчас рассмотрим.

Многозвенные архитектуры

Один из подходов к организации клиентов и серверов — это распределение про­грамм, находящихся на уровне приложений, описанном в предыдущем пункте, по различным машинам, как показано на рис. 1.20. В качестве первого ша­га мы рассмотрим разделение на два типа машин: на клиенты и на серверы, что приведет нас к физически двухзвенной архитектуре (physically two-tiered archi­tecture).

Один из возможных вариантов организации — поместить на клиентскую сторону только терминальную часть пользовательского интерфейса, как показано на рис. 1.20, а, позволив приложению удаленно контролировать представление данных. Альтернативой этому подходу будет передача клиенту всей работы с поль­зовательским интерфейсом (рис. 1.20, б). В обоих случаях мы отделяем от при­ложения графический внешний интерфейс, связанный с остальной частью при­ложения (находящейся на сервере) посредством специфичного для данного приложения протокола. В подобной модели внешний интерфейс делает только то, что необходимо для предоставления интерфейса приложения.

Рис. 1.20.Альтернативные формы организации архитектуры клиент-сервер

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

Во многих системах клиент-сервер популярна организация, представленная на рис. 1.20, ги д.Эти типы организации применяются в том случае, когда кли­ентская машина — персональный компьютер или рабочая станция — соединена сетью с распределенной файловой системой или базой данных. Большая часть приложения работает на клиентской машине, а все операции с файлами или ба­зой данных передаются на сервер. Рисунок 1.20, дотражает ситуацию, когда часть данных содержится на локальном диске клиента. Так, например, при рабо­те в Интернете клиент может постепенно создать на локальном диске огромный кэш наиболее часто посещаемых web-страниц.

Рассматривая только клиенты и серверы, мы упускаем тот момент, что серве­ру иногда может понадобиться работать в качестве клиента. Такая ситуация, от­раженная на рис. 1.21, приводит нас к физически трехзвенной архитектуре (phy­sically three-tiered architecture).

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

Рис. 1.21. Пример сервера, действующего как клиент