Распределенные домены, управляемые ресурсами дизайна

Я вполне уверен в разработке приложений DDD, но одна область, которая продолжает вызывать у меня проблемы, это когда два приложения интегрируются друг с другом. Я изо всех сил пытаюсь найти любые полезные книги или ресурсы по этой теме. В таких книгах, как Patterns of EAI, подробно рассматриваются шаблоны обмена сообщениями и конструирование сообщений, но в действительности не объясняется, как создавать системы, использующие эти шаблоны.

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

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

Вот такие вопросы, на которые я пытаюсь ответить:

  1. Должно ли каждое приложение иметь свою собственную копию данных? Например, должно ли каждое приложение в организации иметь свой собственный список клиентов, который он обновляет после получения сообщения?

  2. В какой момент в стеке DDD передаются сообщения? Являются ли они результатом доменных событий?

  3. Могу ли я объединить асинхронные сообщения и WCF или мне нужно выбрать? Использую ли я WCF для запроса / ответа и обмена сообщениями для публикации / подписки?

  4. Как одно приложение DDD использует услуги другого? Должно ли одно приложение DDD запрашивать данные у другой системы через свои сервисы приложений, или у него уже должна быть собственная локальная копия данных, как указано в пункте 1?

  5. Очевидно, у меня не может быть транзакции в двух системах. Как мне избежать этого?

Если я в замешательстве, это потому, что я есть. Я не ищу ответы на вышеупомянутые вопросы, просто указываю в направлении ресурсов, которые ответят на этот вопрос и схожих вопросов.

2 ответа

Решение

Я делаю похожий переход. Мой совет:

  • Начните с http://cqrsinfo.com/.
  • Послушайте распределенный подкаст.
  • Поймай любой из разговоров Грега Янга. Например, здесь Эрик Эванс берет интервью у Грега. У него есть дневные сессии, которые также записываются.
  • Читайте / слушайте что-нибудь из Udi Dahan (посты, лекции, статьи и т. Д.). У него есть кое-что хорошее в InfoQ.
  • Жди книги Грега.
  • Прочитайте все, что вы можете найти на EDA (Event Driven Architecture).

В дополнение к тому, что сказал Эрик Фарр, возможно, стоит обратить внимание на часть 4 книги DDD (Стратегический дизайн). Он не подходит к проблеме с точки зрения "распределенного", но содержит много информации о том, как интегрировать приложения ( ограниченный контекст). Такие шаблоны, как Anticorruption Layer, могут быть очень полезны при проектировании на границе приложения.

Другие вопросы по тегам