2014-10-29 8 views
-1

Я новичок в разработке шаблонов. Я хочу научиться строить трехуровневую архитектуру. Я искал, но смущен в некоторых случаях. В этой статье http://www.dotnetfunda.com/articles/show/18/4-tier-architecture-in-aspnet-with-csharp автор добавляет еще один уровень с названием Business Object. По моему мнению, очень полезно передавать данные с одного уровня на другой. И поскольку этот уровень включает только бизнес-объекты, мы можем добавить ссылку на этот уровень другим, и это не нарушает правила.Создание приложения n-уровня

Но некоторые другие статьи, они используют DTO. При таком подходе мы должны преобразовывать данные между DAL и BAL.

Я думаю, что использование слоя бизнес-объекта более логично и легко, и я не вижу недостатков в его использовании.

Пожалуйста, помогите мне прийти к устойчивому решению. Спасибо

ответ

1

Поскольку вы используете бизнес-объекты по всему миру, на протяжении всего приложения, будет работать собственный уровень. Поскольку бизнес-объекты не являются специфичными для реализации, они не должны тесно связывать вас с любыми внешними зависимостями. Это предполагает, что вы не используете технологию доступа к данным, такую ​​как Linq to Sql, где для объектов необходим специальный код Sql.

В последние пару лет, тем не менее, я перешел к дизайну «луковой архитектуры». Я сохраняю свои бизнес-объекты (объекты) и мои интерфейсы в основных проектах. Я добавляю весь свой бизнес-код и код, специфичный для реализации, в проект служб и, наконец, стандартный проект пользовательского интерфейса. Проект UI и сервисов каждый знает только о ядре. Все мои службы реализуют один из интерфейсов в ядре, и мой код пользовательского интерфейса написан на основе основных интерфейсов, а не на конкретных реализациях сервисов. Таким образом, мой пользовательский интерфейс и мои сервисы полностью развязаны и не знают друг друга. Эта модель также может быть расширена за счет включения других проектов (я использую инфраструктуру для сквозных задач, таких как ведение журнала).

Для подхода n-уровня я считаю, что уровень бизнес-объектов в порядке. Вы также можете вернуть какую-то собственную запись данных (DataTable и т. Д. На C#) на свой бизнес-уровень, сохранить там свои объекты и включить конструктор, который принимает собственный тип данных.