Re[12]: Расширения для бизнес-сущностей
От: Poudy Россия  
Дата: 03.11.05 07:01
Оценка:
Здравствуйте, stasukas, Вы писали:

P>>Мне кажется, что можно решить такую проблему, если делать следующие вещи:

P>>- любые расширения сущностей делаются как создание новой сущности, агрегирующей старую. это мы уже обсудили. контроль доступа и прочее делается на уровне каждой из сущностей своими службами. Рассмотрим модуль CRM. Он расширил Customer полями Debt и прочее. Вроде как теперь во всех используемых сущностях должен быть CRMCustomer. Принципиально никто не мешает нам нагенерить заново все классы БО, чтобы они работали с CRMCustomer.
P>>Иногда нужно из модуля CRM нужно работать с WMSCustomer.

S>А это не ошибка проектирования? Тогда получается, что подсистемы теряют независимость.


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

S>Из всего сказанного по теме я сделал вывод, что можно работать двумя способами в данной ситуации:

S>

    S>
  1. Работаем с бизнес-сервисами, которые оперируют своими "обрезками" от сущности, логическая склейка происходит за счет интерфейса пользователя. Преимущества этого подхода заключаются в отсутствии какого-либо пересечения между модулями системы. Минусы —
    S>

    S>
  2. Работаем с xml и агрегаторами, которые должны уметь склеивать в единую сущность все данные по расширению всех используемых сущностей, а на уровне интерфейса мы должны расклеивать для каждого модуля. Тут плюсы очевидны — есть композитная сущность, из которой каждый модуль может вытянуть необходимую ему часть, а при расширении системы мы изменяем тем или иным способом агрегаторы. Из минусов следует отметить, что мы используем упаковку/распаковку и таскаем сущности полностью, а это повышает сложность системы.
    S>
    S>
S>На мой взгляд, первый вариант предпочтительнее использовать. Ну а склейку модулей в интерфейсной части мы обсуждали.

я не вижу существенной разницы. по мне, все отличие указанных способов только в том, как данные ходят от клиента: "обрезками" или вместе.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.