Здравствуйте, stasukas, Вы писали:
P>>Мне кажется, что можно решить такую проблему, если делать следующие вещи:
P>>- любые расширения сущностей делаются как создание новой сущности, агрегирующей старую. это мы уже обсудили. контроль доступа и прочее делается на уровне каждой из сущностей своими службами. Рассмотрим модуль CRM. Он расширил Customer полями Debt и прочее. Вроде как теперь во всех используемых сущностях должен быть CRMCustomer. Принципиально никто не мешает нам нагенерить заново все классы БО, чтобы они работали с CRMCustomer.
P>>Иногда нужно из модуля CRM нужно работать с WMSCustomer.
S>А это не ошибка проектирования? Тогда получается, что подсистемы теряют независимость.
нет, это требования функциональности. у пользователя может и не быть модуля WMS. но если бизнес-логика системы такая, что модули могут и должны использовать друг друга? т.е. я имел в виду именно случай, если поставив оба модуля мы получим дополнительную функциональность в каждом. если нам так захотелось. если так захотелось клиентам.
S>Из всего сказанного по теме я сделал вывод, что можно работать двумя способами в данной ситуации:
S>
S>Работаем с бизнес-сервисами, которые оперируют своими "обрезками" от сущности, логическая склейка происходит за счет интерфейса пользователя. Преимущества этого подхода заключаются в отсутствии какого-либо пересечения между модулями системы. Минусы —
S>
S>Работаем с xml и агрегаторами, которые должны уметь склеивать в единую сущность все данные по расширению всех используемых сущностей, а на уровне интерфейса мы должны расклеивать для каждого модуля. Тут плюсы очевидны — есть композитная сущность, из которой каждый модуль может вытянуть необходимую ему часть, а при расширении системы мы изменяем тем или иным способом агрегаторы. Из минусов следует отметить, что мы используем упаковку/распаковку и таскаем сущности полностью, а это повышает сложность системы.
S>
S>
S>На мой взгляд, первый вариант предпочтительнее использовать. Ну а склейку модулей в интерфейсной части мы обсуждали.
я не вижу существенной разницы. по мне, все отличие указанных способов только в том, как данные ходят от клиента: "обрезками" или вместе.