2012-02-17 2 views
3

Является ли прикладной уровень (приложения), в который я добавляю @Stateful, @Stateless, @WebService и т. Д. В DDD? Из приведенной ниже ссылки это кажется правильным.DDD и прикладной уровень

Второй вопрос: я создал класс репозитория, должны ли все вызовы методов, связанные с репозиторием, быть обернутыми в службе приложения? Или я могу использовать классы репозитория прямо в let say backing beans в JSF? Когда и что я вставляю в прикладной уровень. Я не понимаю, где EJB принадлежат этому искусству.

Слой приложения: этот слой координирует активность приложения. Он не содержит бизнес-логики. Он не поддерживает состояние бизнес-объектов, но может поддерживать состояние выполнения задачи приложения.

http://www.infoq.com/articles/ddd-in-practice

ответ

5

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

+1

Так это домен/модели, у которых есть @ Stateful/@ Webservice и т. Д. Тогда? – LuckyLuke

+0

Да, но вы не можете сделать это легко. JavaEE затрудняет использование надлежащего DDD – Bozho

+0

Так что вы рекомендуете? Как вы структурируете свои приложения? – LuckyLuke

0

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

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

В ваших сущностях должна быть логика бизнеса только о ваших собственных сущностях. Всегда соблюдение принципа единой ответственности (http://www.developerfusion.com/article/137636/taking-the-single-responsibility-principle-seriously/).

Я надеюсь, что будет полезным

Смежные вопросы