Обратная связь по архитектуре приложений - PullRequest
1 голос
/ 08 апреля 2009

Я искал отзывы о текущем дизайне.

Вот как это выглядит сейчас

  1. Ссылки на веб-приложения (пользовательский интерфейс) BLL Layer и BusinessEntities Layer
  2. BusinessEntites Layer - содержит интерфейсы и классы (с внутренней проверкой свойств)
  3. BLL (ссылается на уровень BusinessEntities и DAL) - имеет в основном менеджеров для каждого из бизнес-объектов с такими методами, как Create () Save () Delete ().
  4. DAL (ссылается на слои BusinessEntities) - содержит команды БД, которые создают / добавляют / обновляют объекты бизнес-объектов.

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

Также мне не нравится идея, что DAL ссылается на слой BusinessEntities, но как еще я собираюсь возвращать объекты вместо наборов данных / DataTables?

Спасибо за любые отзывы.

1 Ответ

1 голос
/ 08 апреля 2009

Что касается необходимости ссылаться на бизнес-уровень из DAL, я бы согласился, что это, вероятно, не оптимально - более низкие уровни не должны знать о вышеупомянутых уровнях, это уменьшает возможность повторного использования и добавляет дополнительные / потенциально циклические зависимости.

Рассматривали ли вы, чтобы ваши бизнес-объекты "заполнялись" и выполняли свои собственные операции персистентности, используя классы DAL, а не DAL, действующий для них как фабрика (как в вашем текущем проекте)? Таким образом, ваш DAL будет более непосредственным представлением базы данных, а бизнес-объекты будут содержать (бизнес) логику, необходимую для надлежащего заполнения и сохранения.

Кроме того, слой "BLL", который вы специфицируете, на самом деле не кажется мне содержащим бизнес-логику; мне кажется, это скорее уровень персистентных сервисов для сущностей.

Таким образом, вариант того, что вы предлагаете, может быть:

  1. Web / UI, ссылающиеся на бизнес-объекты
  2. BusinessEntities, содержит интерфейсы и классы с бизнес-логикой. Уровень данных DataServices
  3. DataServices, содержит классы, которые загружают, находят и сохраняют данные. Может обслуживать «общие» структуры, содержащие данные (объекты передачи данных), которые могут быть созданы, использованы и обработаны бизнес-объектами. Рекомендации DAL.
  4. DAL, который просто предоставляет классы, которые отображаются на таблицы.

В зависимости от ваших требований я бы рассмотрел возможность объединения ваших BusinessEntities и DataServices (BLL в вашем первоначальном дизайне) в один уровень; единственная причина, по которой я могу подумать о том, чтобы разделить их, - это если вы делаете что-то вроде Silverlight, где вам нужны асинхронные операции с данными на клиентских бизнес-объектах.

Конечно, все это с неполным знанием ваших конкретных системных требований - вам нужно будет разработать то, что лучше всего подходит для вашего конкретного приложения. Удачи!

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