Отправляет email-рассылки с помощью сервиса Sendsay

.NET: Записки программиста

  Все выпуски  

Архитектор в поисках силы ...


Информационный Канал Subscribe.Ru


.NET: Записки программиста или хлопок одной ладони


Выпуск седьмой: Архитектор в поисках силы ...

"Самое время заняться изучением новых заклинаний и тратой очков умений ("Skill Points").
Не путайте их с очками опыта. Опыт продвигает вас на следующий уровень, а очки умений (SP)
уходят на изучение заклинаний и приобретение навыков. Отправимся в деревню темных эльфов
 к Магистру Власти (Magister Vlasty),  прогуляемся по тамошним магазинам и поучимся уму-разуму."
(Lineage 2)



Как всегда доброе утро! Как вы помните, мы изучали заклинания, доступные расе Архитекторов. Первое заклинание называлось "Application Diagram" и позволяло создавать диаграммы, описывающие компоненты вашего проекта и связи между ними. Например, вы могли указать, что ваш проект состоит из:

  • Windows application, с которым работают пользователи
  • Web-service, который поставляет данные Windows application
  • SQL Database, которая используется Web-service в качестве источника данных

Второе заклинание Архитекторов - "Logical Datacenter Diagram". Оно позволяет описать логическую структуру окружения, в котором вы будете размещать компоненты проекта, ее конфигурацию и ограничения. Кубиками, из которых вы будете создавать эту диаграмму, являются сервера. Под сервером тут понимается не физический компьютер, а программа - сервер приложений (application server software), который будет поддерживать выполнение какого-либо из компонент вашего проекта. Такими серверами могут быть:

  • WindowsClient - окружение (hosting environment), предоставляемое операционной системой Windows. Она поддерживает выполнение таких компонент как Windows Application и Office Application

  • IISWebServer - MS Internet Information Server, поддерживающий выполнение Web Applications и Web Services

  • DatabaseServer - представляет собой обобщенный сервер баз данных, поддерживающий компоненты типа ExternalDatabase

  • GenericServer - представляет собой среду выполнения приложений, для которой не нашлось подходящего предопределенного логического сервера (из вышеуказанных). Иными словами - все другие типы логических серверов.

Логические сервера могут быть сгруппированы в зоны (Zone), определяющие политики безопасности. Связи между зонами и серверами задаются при помощи коммуникационных точек (Endpoints). Существуют клиентские коммуникационные точки (client endpoints), позволяющие выполняющимся на логическом сервере приложениям обращаться к внешним серверам, и серверные коммуникационные точки (server endpoints), которые позволяют приложениям внешних серверов обращаться к приложениям, выполняющимся на данном логическом сервере. Зоны связываются при помощи Zone endpoints (даже не буду пытаться это перевести, получится длинно и не так понятно), являющимися своеобразными порталами для коммуникации между серверами и зонами. Zone endpoints могут накладывать ограничения на направление потока данных (inbound, outbound, or bi-directional communication), а также ограничивать типы коммуникации, например, вы можете указать, что данная точка поддерживает обращение только к Web приложениям, причем только по одному указанному Url.

Кроме того вы можете размещать в диаграммах комментарии. Пример панели Toolbox для "Logical Datacenter Diagram" приведен на Рис. 1.


Рис. 1

Продожим создание наших диаграмм на примере простого приложения (см. предыдущий выпуск). Применяем заклинание "Add -> New Distributed System Diagram... -> Logical Datacenter Diagram", доступное в контекстном меню для Solution (на закладке Solution Explorer). Создаем в ней две зоны (см. Рис. 2), первая - "Public Zone", объединяет все компьютеры пользователей, на которых будет выполняться наше клиентское Windows приложение (это именно логическое представление, с физической точки зрения - это все сети, пользователи которых имеют доступ в интернет и могут обратиться к серверной части нашего проекта). Вторая - "Security Zone", содержит MS IIS и MS SQL сервера (физически они могут быть установлены как на одном компьютере, так и на разных). В Public Zone помещаем WindowsClient - логический сервер, который впоследствии будет поддерживать наше Windows приложение. Размещаем Zone endpoints в обеих зонах. Поскольку наше Windows Application будет общаться с Web сервисом, размещаем HttpClientEndpoint на сервере WindowsClient. Обратите внимание, что дизайнер диаграмм следит за корректностью размещения объектов и не позволит разместить, скажем, GenericServerEndpoint на сервере WindowsClient, поскольку тот не может выполнять серверные приложения. Так же, если вы, разместите на диаграмме две точки, поддерживающие только inbound коммуникацию, вам не удастся связать их при помощи Connection.


Рис. 2

Свяжем HttpClientEndpoint с ZoneEndpoint, а ту, в свою очередь, со второй ZoneEndpoint. Теперь, поместим IISWebServer и DatabaseServer в SecurityZone. Размещаем WebSiteEndpoint на IISWebServer (он будет принимать запросы для Web сервиса), а так же связываем IISWebServer с DatabaseServer при помощи DatabaseClient(Server)Endpoints (наш Web сервис должен иметь возможность обращаться к базе данных). 

Так же вы можете накладывать ограничения как на логические сервера, так и на точки коммуникации. Так, например, вы можете указать, что WindowsClient поддерживает только OfficeApplication - тогда впоследствии вы не сможете связать WindowsApplication с этим логическим сервером. Или можете указать, что на логическом сервере IISWebServer установленна OS Windows 2000 с Service Pack 2.0. Впоследствии, все эти ограничения будут использованы для проверки, можно ли размещать (deploy) разработанные нами компоненты на этих серверах. Кстати, к логическим серверам типа IISWebServer можно применять очень полезное заклинание "Import Settings...", позволяющее задать настройки и ограничения на основании существующего MS IIS.


Уже начало первого и Шахерезаде ... ну Вы знаете :) Хм, еще немного, и эту рассылку смело можно будет назвать "Тысяча и одна ночь программиста", судя по времени, когда я пишу эти выпуски :).

Если у Вас есть какие-то вопросы, пожелания или замечания - я буду рад, если Вы поделитесь ими со мной. В конце концов, рассылки пишутся не только ради самоутверждения их авторов :) А так, у вас появится шанс повлиять на рассылку, сделав ее для себя более привлекательной, а у меня - исчезнет ощущение, что выпуски прочитываются и сразу же бесследно исчезают в папке "Deleted".

Пишите на мой адрес,
Удачи и приятной работы!



Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.prgnotes
Архив рассылки
Отписаться
Вспомнить пароль

В избранное