Правильный код

Модели архитектуры ПО

В архитектуре ПО по Фаулеру стоит различать три слоя: домен, источник данных и представление. Более подробно назначение и применение каждого из слоев описано в книге «Архитектура корпоративных приложений».

Модель Брауна, описанная в книге «Enterprise Java Programming with IBM Websphere », охватывает пять слоев: представление, контроллер/медиатор, домен (предметная область, бизнес-логика), отображение данных и источник данных . Два дополнительных слоя, по существу, выполняют посреднические функции между базовыми слоями: контроллер/медиатор соединяет слои представления и домена, а слой отображения данных служит связующим звеном между предметной областью и источником данных.

Хорошая схема расслоения кода приложений на платформе J2EE реализована в виде набора типовых решений Core J2EE : Здесь различаются следующие слои: клиент, представление, бизнес, интеграция и ресурсы . Слою бизнеса соответствует слой домена, а слою интеграции соответствует слой источника данных. Основное отличие модели связано с расщеплением слоя представления на две части между клиентом (слой клиента) и сервером (собственно слой представления). Более подробное описание каждого из слоев читайте в книге «Core J2EE Patterns: Best Practices and Design Strategies »

В архитектуре Microsoft DNA различают три слоя — представление, бизнес и доступ к данным, которые довольно точно соответствуют трём слоям модели Фаулера. Наибольшее отличие состоит в способе передачи информации от слоя доступа к данным. В Microsoft DNA все слои имеют дело с множествами записей, возвращаемыми SQL-запросами, которые инициировались кодом слоя доступа к данным. Отсюда следует, что слои бизнеса и представления непосредственно "осведомлены" о существовании базы данных. Данная модель хорошо описана в книге Киртланда «Designing Component-Based Applications ».

Схема Маринеску содержит пять слоев: представление, приложение, службы, домен и сохранение данных. Слой представления расщеплён на два слоя, отображающих структуру контроллера приложения. Домен также подвергся расщеплению: на основе модели предметной области сконструирован слой служб, что соответствует обычной практике деления бизнес-логики на две части. Идея вычленения слоя служб из слоя предметной области основана на подходе, предполагающем возможность отмежевания логики процесса от "чистой" бизнес-логики. Уровень служб обычно охватывает логику, которая относится к конкретному варианту использования системы или обеспечивает взаимодействие с другими инфраструктурами . Подробное описание данной архитектуры ПО вы найдете в книге «EJB Design Patterns ».

Самая сложная схема расслоения ПО предложена Нильссоном, в его книге «.NET Enterprise Design with Visual Basic .NET and SQL Server 2000» . Она состоит из следующих слоев: потребитель, вспомогательный слой потребителя, приложение, домен, доступ к хранимым данным, общедоступные хранимые процедуры и приватные хранимые процедуры. Нильссон предусматривает активное использование хранимых процедур и поощряет размещение в них фрагментов бизнес-логики для повышения производительности приложения. Слои хранимых процедур Нильссона содержат как источники данных, так и бизнес-логику.

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