Можем ли мы использовать DAO непосредственно в контроллере вместо объектов бизнес-уровня?
Я не просто получаю одну вещь... Я работаю над каким-то внутренним проектом.. (Java/ Spring/ Hibernate). Я использую слой дао, слой представления. Нужно ли использовать бизнес-уровень в моем приложении?
Причина, которую я спросил, потому что, какие бы методы ни были в dao, те же методы существуют и на бизнес-уровне... так что я могу напрямую использовать DAO в моем контроллере вместо объектов бизнес-уровня...
Пожалуйста, исправьте меня, если я ошибаюсь.. Я не очень опытный в написании кода для больших приложений.. поэтому, пожалуйста, посоветуйте мне (если возможно, любой пример, пожалуйста)
а что скажете сервисный слой? Как вы думаете, мне нужно это для небольшого приложения, как мое? (Я полагаю, мы используем сервисный слой только тогда, когда мы используем веб-сервисы, верно?)
Жду ваших ответов
1 ответ
У вас должен быть бизнес-уровень во всех приложениях, кроме самых простых. Я бы сказал, что отделение представления от бизнес-логики важнее, чем отделение бизнес-логики от доступа к данным (хотя на самом деле вы должны иметь и то, и другое).
Часто кажется, что бизнес-уровень не нужен, когда приложение делает чуть больше, чем CRUD. Это падает, однако, когда:
- Вам нужно изменить структуру пользовательского интерфейса для вашего приложения... и технология пользовательского интерфейса развивается быстро
- Вы должны предоставить свою бизнес-логику другому клиентскому коду в виде библиотеки или удалить клиентов через веб-сервисы.
- Ваше приложение растет... и приобретает более серьезные бизнес-правила
- Вы хотите начать модульное тестирование своей бизнес-логики
Если вы поместите бизнес-логику в уровень / контроллеры презентации, то ваша бизнес-логика навсегда будет привязана к уровню презентации. Вы в основном устанавливаете искусственный срок действия над кодом, который вы пишете, и одновременно ограничиваете его повторное использование. Когда вам нужно изменить технологию пользовательского интерфейса, вам нужно будет снова написать свою бизнес-логику.
По этой причине многие приложения VB6 пришлось оставить и переписать: они должны были написать свою бизнес-логику в C++ COM-объектах... их можно вызывать из.NET. Те же самые программисты VB6 перешли на VB.NET Winforms и снова совершили ту же ошибку.
РЕДАКТИРОВАТЬ: Что касается услуг: напишите уровень обслуживания, когда это необходимо. Сервисный уровень обычно представляет собой тонкий слой, который находится перед бизнес-уровнем. Это на самом деле клиент вашей бизнес-логики. Часто у него будут одинаковые интерфейсы. Вам это не нужно, если вам не нужно выставлять свою логику по сети. Я работал над командами, которые настаивали на написании слоев WCF перед их бизнес-логикой... только для того, чтобы потом запустить весь код на той же машине в любом случае. Трата времени и замедляет работу приложения.