Доменные объекты / сервисы и уровень бизнес-логики - PullRequest
39 голосов
/ 08 апреля 2011

Что такое доменные объекты и доменные сервисы в архитектуре программного обеспечения?Я не знаком с ними или чем они отличаются от уровня бизнес-логики?

Ответы [ 4 ]

80 голосов
/ 08 апреля 2011

Разные люди используют эти термины несколько по-разному, но вот мое мнение:

1) «Бизнес» и «домен» - это примерно синонимы. «Домен» является более общим в том смысле, что он не предполагает, что вы пишете бизнес-приложение. Поэтому, если бы мы писали научное приложение или игру, мы могли бы предпочесть ссылаться на соответствующую часть кода как «домен», а не как «бизнес» код. Поэтому в оставшейся части этого объяснения я буду использовать «домен», поскольку он более общий.

2) «Доменная логика» охватывает как «доменные объекты», так и «доменные сервисы». По разным причинам (техническим и другим) во многих архитектурах используется проект, в котором логика домена делится на объекты для хранения данных («объекты домена») и объекты, которые ими манипулируют («доменные службы»). Мартин Фаулер и другие отметили, что это не очень ОО , поскольку большая часть концепции ОО состоит в том, чтобы объединить функциональность с данными, и это правильно, но это так и есть. Доменные объекты - это данные, а доменные сервисы - это часть дел с данными.

3) В дизайне, управляемом доменом, идея состоит в том, чтобы вернуться к истинному дизайну ОО, и поэтому различные методы обслуживания возвращаются к объектам домена, так что у вас есть объекты в смысле ОО, а не то, что иногда называется "анемичные" объекты. В DDD сами доменные объекты более устойчивы, и поэтому они образуют доменную логику. В действительности могут существовать и некоторые доменные службы, но они обычно меньше в DDD, чем в более традиционной модели доменных объектов и служб.

3 голосов
/ 08 апреля 2011

Уровень бизнес-логики также называется уровнем домена.Это уровень / уровень, который обрабатывает всю бизнес-логику.

Доменные объекты и доменные службы - это классы, которые вы используете для создания вашего доменного уровня.

1 голос
/ 06 ноября 2014

Нам необходимо понять обязанности прикладного уровня и уровня домена (бизнеса), чтобы понять разницу.Уровень домена представляет бизнес-объекты, в основном бизнес-объекты, возможно, в некоторой степени абстрагированные, и доменные сервисы.Слой домена изменяется только тогда, когда меняется бизнес или контекст домена меняется внутри бизнеса.Прикладной уровень «живет» поверх уровня домена и часто (предпочтительно) отделен от уровня домена, как в случае веб-приложения MVC asp.net, где часть контроллера - это уровень приложения, а часть HTML - это уровень представления.Уровень приложения изменяется в соответствии с назначением конкретного приложения (или службы, API, приложения и т. Д.)

0 голосов
/ 27 августа 2015

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

Предположим, у меня есть продукт COTS, который является чистым механизмом управления делами, скажем, реализация OMG CMMN. Целая куча бизнес-логики на бизнес-уровне, которая работает с кучей сущностей из уровня данных.

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

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

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

Чем «проще» приложение, тем больше похожи модель предметной области и модель данных, а также бизнес-логика и логика предметной области. Но когда вы увеличиваете «полезность» компонента, расходятся, в конце концов, проблемы разделяются.

...