+7 (495) 229-0436   shopadmin@itshop.ru 119334, г. Москва, ул. Бардина, д. 4, корп. 3
 
 
Вход
 
 
Каталог
 
 
Подписка на новости
Новости ITShop
Windows 7 и Office: Новости и советы
Обучение и сертификация Microsoft
Вопросы и ответы по MSSQLServer
Delphi - проблемы и решения
Adobe Photoshop: алхимия дизайна
 
Ваш отзыв
Оцените качество магазина ITShop.ru на Яндекс.Маркете. Если вам нравится наш магазин - скажите об этом Google!
 
 
Способы оплаты
 
Курс расчета
 
 1 у.е. = 94.09 руб.
 
 Цены показывать:
 
 
 
 
  
Новости, статьи, акции
 

Как проверить приложение на соответствие архитектуре слоев

14.10.2011 12:51
Дмитрий Андреев

Любому разработчику известен архитектурный шаблон слоев. При всей его незамысловатости он позволяет эффективно прятать реализацию и абстрагировать компоненты разного уровня. Слои нижнего уровня могут изменяться без особого риска испортить работу приложения, облегчен рефакторинг. Единственное очевидное условие, которое вы должны соблюдать - это придерживаться принятой архитектуры. Но иногда бывает, что программист нет-нет да и соблазняется вызвать пару методов "через голову". Например из слоя интерфейса обратиться прямиком в слой базы данных. Не будем здесь искать злого умысла, может этот случай был связан со спешкой при выпуске срочного исправления для заказчика. Но постепенно количество таких небольших "грешков" может свести на нет принятую когда то стройную архитектуру и вы опять окажетесь со "спагетти кодом". Вылавливать такие случаи несоответствия кода архитектуре слоев на большой системе может быть очень затруднительно. К счастью в Visual Studio 2010 (редакций Premium и Ultimate) есть инструменты, которые могут значительно облегчить эту задачу.
 
В Visual Studio 2010 есть компонент, который называется Layered Diagrams - диаграммы слоев. На первый взгляд это банальный инструмент рисования "кубиков". Замечательное же в нем то, что впоследствии вы можете сопоставить сборки вашего проекта конкретным слоям, и в автоматическом режиме проверить, нет ли среди кода приложения вызовов которые противоречат принятой архитектуре.

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

Внутри команды всем очевиден порядок вызовов, и что не следует из интерфейса обращаться напрямую к слою БД. Когда у вас три сборки в проекте это возможно не будет проблемой. Но когда их у вас станет штук десять, держать в голове кто кого и из какого слоя может вызвать, станет затруднительно. Поэтому задокументируем нашу схему добавив в Solution проект с типом Modelling (File/Add New Project/Modelling Projects/Modelling Project):

Далее добавляем диаграмму слоев (Add New Item/Layer Diagram) и рисуем нашу архитектуру слоев:

Давайте сознательно допустим логическую ошибку в архитектуре слоев прямо в коде. Добавим референс на DbLayer и вызовем его прямо из UILayer:

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

Создаем сопоставление слоев сборкам.

На самом деле нам осталось проделать еще один шаг после того как созданы основные компоненты системы в виде сборок и нарисована диаграмма слоев. Необходимо сопоставить их между собой, просто перетащив из Solution Explorer узлы проектов на прямоугольники слоев:

При этом в правом верхнем углу будет отображаться количество сборок сопоставленных с этим слоем, а в Modelling проекте появятся ссылки на компоненты решения:

Теперь все готово для автоматической проверки архитектуры, достаточно вызвать контекстное меню на диаграмме слоев:

После непродолжительного анализа, который работает через Reflection мы получим список несоответствий нашего кода архитектуре:

И там будет тот самый вызов, который мы сознательно внесли в код, идущий в разрез с текущей архитектурой решения:

Error 1 AV0001: Invalid Dependency: UILayer.MainWindow.CalculateDiscount_Click(Method) --> DbLayer.Customer.IsHabraUser(Field)

После того как вы сделаете рефакторинг (в нашем простом случае просто перенесем вызов из UI в Business Logic), валидация архитектуры будет приводить к таким результатам:

Что говорит нам о том, что код нашего решения полностью соответствует принятой архитектуре слоев. Если понадобится, вы можете настроить проверку соответствия кода архитектуре слоев в автоматическом режиме, например при сборке проекта в TFS с помощью MSBuild (на Русском языке).

Ссылки по теме

  
Помощь
Задать вопрос
 программы
 обучение
 экзамены
 компьютеры
Бесплатный звонок
ICQ-консультанты
Skype-консультанты

Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 
Бестселлеры
Курсы обучения "Atlassian JIRA - система управления проектами и задачами на предприятии"
Microsoft Windows 10 Профессиональная 32-bit/64-bit. Все языки. Электронный ключ
Microsoft Office для Дома и Учебы 2019. Все языки. Электронный ключ
Курс "Oracle. Программирование на SQL и PL/SQL"
Курс "Основы TOGAF® 9"
Microsoft Office 365 Персональный 32-bit/x64. 1 ПК/MAC + 1 Планшет + 1 Телефон. Все языки. Подписка на 1 год. Электронный ключ
Курс "Нотация BPMN 2.0. Ее использование для моделирования бизнес-процессов и их регламентации"
 

О нас
Интернет-магазин ITShop.ru предлагает широкий спектр услуг информационных технологий и ПО.

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

Хорошие отзывы постоянных клиентов и высокий уровень специалистов позволяет получить наивысший результат при совместной работе.

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



 

О нас

 
Главная
Каталог
Новинки
Акции
Вакансии
 

Помощь

 
Общая справка
Как оформить заказ
Тарифы доставки
Способы оплаты
Прайс-лист
Карта сайта
 

Способы оплаты

 

Проекты Interface Ltd.

 
Interface.ru   ITShop.ru   Interface.ru/training   Olap.ru   ITnews.ru  
 

119334, г. Москва, ул. Бардина, д. 4, корп. 3
+7 (495) 229-0436   shopadmin@itshop.ru
Проверить аттестат
© ООО "Interface Ltd."
Продаем программное обеспечение с 1990 года