Заменяет ли MVC традиционный BLL, созданный вручную? - PullRequest
9 голосов
/ 22 апреля 2010

Я привык создавать пользовательский интерфейс, BLL, DAL вручную (иногда я использовал LINQ-to-SQL или SubSonic для DAL). Я сделал несколько небольших проектов с использованием MVC с момента его выпуска.

В этих проектах я все еще продолжал писать BLL и DAL вручную, а затем включал их в модели / контроллеры MVC. Я стремлюсь оптимизировать свое время в проектах, это кажется излишним и потенциальной тратой времени.

Вопрос

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

UPDATE:

Я просто хотел добавить, что меня беспокоит не DAL (я часто использую SubSonic и NH), а скорее фокус на BLL. Извините за путаницу.

Ответы [ 3 ]

10 голосов
/ 22 апреля 2010

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

Уровень бизнес-логики остается, если он у вас есть.

Уровень доступа к данным остается, если он у вас есть.

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

Также модели не равны бизнес-объектам.Модели - это набор данных, отображаемый представлением, который может содержать некоторые вспомогательные данные, не связанные с бизнес-объектом.

Вы можете использовать ORM и заменить им слой доступа к данным.Зависит от ORM, как вы можете интегрировать его.С EF вы можете использовать объекты напрямую как бизнес-объекты.

4 голосов
/ 22 апреля 2010

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

1 голос
/ 22 апреля 2010

Нет, MVC не заменяет созданный вручную интерфейс, BLL, DAL.

  • Вы не должны были иметь DAL, созданный вручную, в течение примерно 8 лет или около того. Много хороших или плохих генераторов DAL отсутствуют на протяжении многих лет. Около 2001 года у меня была одна полная ORM. NHibernate также выходит много лет назад. Мир - даже для .NET - не заканчивается на предложениях MS (которые - все из них в этой области, LINQ2SQL и EF) все еще действительно низкого качества по сравнению с вещами, которые есть у других.

  • Вам по-прежнему приходится кодировать бизнес-логику и пользовательский интерфейс в MVC - просто иначе, чем в классическом ASP.NET. Идея состоит не в том, чтобы избавиться от них, а в том, чтобы организовать их в другой организации, которая лучше подходит для чистого HTML, а также, например, для модульного тестирования (которое действительно сложно сделать в классическом ASP.NET).

...