1) Business Layer
и Service Layer
на самом деле являются синонимами.«Официальный» термин DDD - Application Layer
.
Роль Application Layer
заключается в координации работы между Domain Services
и Domain Model
.Это может означать, например, что функция Application сначала загружает объект через Repository
, а затем вызывает метод для объекта, который будет выполнять фактическую работу.
2) Иногда, когда ваше приложение в основном управляется даннымиСоздание полноценного Domain Model
может показаться излишним.Однако, на мой взгляд, когда вы привыкаете к Domain Model
, это единственный путь, по которому вы хотите идти.
В случае Post
и Feedback
вам нужен метод AddFeedback(Feedback)
изНачиная с того, что это приводит к меньшей связности (вам не нужно знать, хранятся ли элементы FeedBack
в, например, List
или в Hashtable
), и это даст вам хорошую точку расширения.Что, если вы когда-нибудь захотите добавить проверку, что разрешено не более 10 Feedback
элементов?Если у вас есть метод AddFeedback
, вы можете легко добавить проверку в одну точку.
3) Шаблон UnitOfWork
и Repository
являются фундаментальной частью DDD.Я не эксперт NHibernate, но всегда полезно скрывать детали интерфейса за интерфейсом.Это уменьшит сцепление и улучшит тестируемость.