Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП / ООП / ры_приложений_полная_книга.pdf
Скачиваний:
532
Добавлен:
18.02.2017
Размер:
7.08 Mб
Скачать

Распределенное развертывание

В сценарии распределенного развертывания слой представления и бизнес-слой Вебприложения располагаются на разных уровнях и взаимодействуют удаленно. Как правило, бизнес-слой и слой доступа к данным размещаются на одном сервере. Рис. 2 демонстрирует такой сценарий.

Рис. 3

Распределенное развертывание Веб-приложения

При выборе распределенного развертывания руководствуйтесь следующими рекомендациями:

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

Используйте для бизнес-слоя интерфейс взаимодействия на основе сообщений.

Используйте для взаимодействия с бизнес-слоем TCP-протокол с бинарным кодированием. Это обеспечит лучшую производительность.

Предусмотрите защиту конфиденциальных данных, передаваемых между разными уровнями.

Балансировка нагрузки

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

Рис. 4

Балансировка нагрузки Веб-приложения

При проектировании балансировки нагрузки для Веб-приложения руководствуйтесь следующими рекомендациями:

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

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

Используйте Windows Network Load Balancing (NLB)1 для реализации перенаправления запросов на серверы фермы приложений.

Используйте кластеризацию для сокращения негативных последствий сбоев оборудования.

1 Система балансировки сетевой нагрузки Windows (прим. переводчика).

Если приложению предъявляются высокие требования по вводу/выводу, выполняйте секционирование базы данных и распределение ее на множество серверов баз данных.

Более подробно шаблоны развертывания рассматриваются в главе 19, «Физические уровни и развертывание».

Шаблоны проектирования

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

Категория

Шаблоны

 

 

Кэширование

Cache Dependency. Использует внешние данные для определения

 

состояния данных, хранящихся в кэше.

 

Page Cache. Улучшает время отклика динамических Веб-страниц,

 

доступ к которым осуществляется довольно часто, но сами они

 

меняются реже и потребляют большое количество ресурсов системы

 

для воссоздания.

 

 

Управление исключениями

Exception Shielding. При возникновении исключения предотвращает

 

предоставление сервисом данных о его внутренней реализации.

 

 

Протоколирование и

Provider. Реализует компонент, который предоставляет API,

инструментирование

отличающийся от клиентского API, обеспечивая возможность

 

подключения любой специальной реализации.

 

 

Компоновка страницы (UI)

Composite View. Сочетает отдельные представления в композитное

 

представление.

 

Template View. Реализует представление общего шаблона и создает

 

представления на базе этого шаблонного представления.

 

Transform View. Преобразует данные, переданные на уровень

 

представления, в HTML для отображения в UI.

 

Two-Step View. Преобразует модель данных в логическое

 

представление без какого-либо специального форматирования и затем

 

преобразует это логическое представление, добавляя необходимое

 

форматирование.

 

 

Представление

Model-View-Controller (Модель-Представление-Контроллер). На

 

основании пользовательского ввода распределяет данные предметной

 

области, представления и действий в три разных класса. Модель

 

управляет поведением и данными предметной области приложения,

 

отвечает на запросы о состоянии (обычно поступающие от

 

Представления) и на команды на изменение состояния (обычно

 

поступающие от Контроллера). Представление управляет

 

отображением данных. Контроллер интерпретирует ввод пользователя,

 

поступающий с устройств ввода, таких как мышь и клавиатура, и дает

 

указания модели и/или представлению о соответствующих изменениях.

 

 

 

Model-View-Presenter (Модель-Представление-Презентатор).

 

Разделяет обработку запроса на три отдельные роли, где

 

Представление отвечает за обработку пользовательского ввода,

 

Модель – за данные приложения и бизнес-логику, и Презентатор – за

 

логику представления и координирование взаимодействия между

 

Представлением и Моделью.

 

Passive View. Разновидность шаблона MVC. Сокращает представление

 

до необходимого минимума, перенося в контроллер функциональность

 

обработки пользовательского ввода и реализацию обновления

 

представления.

 

Supervising Presenter (или Supervising Controller). Разновидность

 

шаблона MVC, где контроллер отвечает за обработку сложной логики, в

 

частности, согласование представлений, а представление отвечает за

 

простую логику, касающуюся представления.

 

 

Обработка запросов

Intercepting Filter. Цепочка пригодных для компоновки фильтров

 

(независимые модули), реализующих обычные задачи предварительной

 

и последующей обработки при запросе Веб-страницы.

 

Page Controller. Принимает ввод из запроса и обрабатывает его для

 

конкретной страницы или действия Веб-сайта.

 

Front Controller. Консолидирует обработку запросов путем

 

направления всех запросов через один объект-обработчик, который

 

можно изменять во время выполнения с помощью декораторов.

 

 

Слой интерфейса

Façade. Реализует унифицированный интерфейс для набора операций,

сервиса

чтобы обеспечить упрощенный интерфейс и уменьшить связанность

 

систем.

 

Service Interface. Программный интерфейс, который может

 

использоваться другими системами для взаимодействия с сервисом.

 

 

Более подробно шаблон Page Cache рассматривается в статье «Enterprise Solution Patterns Using Microsoft .NET» по адресу http://msdn.microsoft.com/en-us/library/ms998469.aspx.

Более подробно шаблоны Model-View-Controller (MVC), Page Controller, Front Controller, Template View, Transform View и Two-Step View рассматриваются в книге Мартина Фаулера

«Архитектура корпоративных приложений». Addison-Wesley, 2002. Или по адресу http://martinfowler.com/eaaCatalog.

Более подробно шаблоны Composite View, Supervising Presenter и Presentation Model

рассматриваются в статье «Patterns in the Composite Application Library» по адресу http://msdn.microsoft.com/en-us/library/cc707841.aspx.

Более подробно шаблон Exception Shielding рассматривается в статье «Useful Patterns for Services» по адресу http://msdn.microsoft.com/en-us/library/cc304800.aspx.

Более подробно шаблон Service Interface рассматривается в статье «Service Interface»

(Интерфейс сервиса) по адресу http://msdn.microsoft.com/en-us/library/ms998421.aspx.

Более подробно шаблон Provider рассматривается в статье «Provider Model Design Pattern and Specification, Part I» по адресу http://msdn.microsoft.com/en-us/library/ms998421.aspx.

Соседние файлы в папке ООП