Можем ли мы использовать DAO непосредственно в контроллере вместо объектов бизнес-уровня?

Я не просто получаю одну вещь... Я работаю над каким-то внутренним проектом.. (Java/ Spring/ Hibernate). Я использую слой дао, слой представления. Нужно ли использовать бизнес-уровень в моем приложении?

Причина, которую я спросил, потому что, какие бы методы ни были в dao, те же методы существуют и на бизнес-уровне... так что я могу напрямую использовать DAO в моем контроллере вместо объектов бизнес-уровня...

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

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

Жду ваших ответов

1 ответ

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

Часто кажется, что бизнес-уровень не нужен, когда приложение делает чуть больше, чем CRUD. Это падает, однако, когда:

  1. Вам нужно изменить структуру пользовательского интерфейса для вашего приложения... и технология пользовательского интерфейса развивается быстро
  2. Вы должны предоставить свою бизнес-логику другому клиентскому коду в виде библиотеки или удалить клиентов через веб-сервисы.
  3. Ваше приложение растет... и приобретает более серьезные бизнес-правила
  4. Вы хотите начать модульное тестирование своей бизнес-логики

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

По этой причине многие приложения VB6 пришлось оставить и переписать: они должны были написать свою бизнес-логику в C++ COM-объектах... их можно вызывать из.NET. Те же самые программисты VB6 перешли на VB.NET Winforms и снова совершили ту же ошибку.

РЕДАКТИРОВАТЬ: Что касается услуг: напишите уровень обслуживания, когда это необходимо. Сервисный уровень обычно представляет собой тонкий слой, который находится перед бизнес-уровнем. Это на самом деле клиент вашей бизнес-логики. Часто у него будут одинаковые интерфейсы. Вам это не нужно, если вам не нужно выставлять свою логику по сети. Я работал над командами, которые настаивали на написании слоев WCF перед их бизнес-логикой... только для того, чтобы потом запустить весь код на той же машине в любом случае. Трата времени и замедляет работу приложения.

Другие вопросы по тегам