Похоже, SOA может помочь в этом случае. Я конкретно имею в виду SOA бизнес-уровня, как описано, например, Билл Пул и Уди Дахан с асинхронной реализацией pub-sub на основе событий.
Вы описали несколько бизнес-функций с отдельными владельцами: франчайзинг и продажи. Вы хотите добиться слабой связи между ними.
В SOA вы определяете сервис франчайзинга и несколько экземпляров сервисов продаж, по одному для каждого магазина. Магазины изначально очень похожи, но могут развиваться отдельно.
Затем вы определяете деловые события, представляющие взаимный интерес, которые происходят в этих службах. Сервис франчайзинга может публиковать событие NewPromotion, на которое подписываются все службы продаж. Это сообщение содержит все подробности о продвижении, и потребители выбирают то, что им нужно. В свою очередь, служба продаж публикует событие ContactDetailsChanged, которое будет использовано Franchising.
Каждая служба имеет собственную многоуровневую реализацию внутри, в комплекте с базой данных, веб-сайтом для клиентов, частными точками интеграции с другими системами и т. Д.
Каждый сервис хранит в частном порядке все данные, которые его интересуют: списки акций, контактную информацию, информацию о продвижении по службе - в форме, которую он сочтет подходящей. Обновления информации в одной службе распространяются на другие службы посредством событий.
На стороне реализации вам нужна какая-то служебная шина между службами с поддержкой надежного обмена сообщениями через ненадежный Интернет, например, NServiceBus . Нет необходимости в WebServices (tm).
Ваши сервисы слабо связаны в реализации, потому что они совместно используют только контракты (описание публикуемых ими сообщений и конечных точек) и могут независимо развивать внутренние представления. Они также слабо связаны во времени, потому что, если ни в коем случае они не отправляют друг другу синхронные запросы, время которых может превышаться через Интернет. Все сообщения обрабатываются инфраструктурой (служебная шина).
Надеюсь, это поможет:)