domain-driven-designsoadistributedmessagingdddd

Distributed Domain Driven Design Resources


I am quite confident with developing DDD applications, but one area that is continuing to cause me problems is when two applications integrate with each other. I am struggling to find any useful books or resources on the subject. Books such as Patterns of EAI go into depth about messaging patterns and message construction but don't really explain how to architect systems that make use of these patterns.

I've searched high and low and I'm quite sure there are no sample applications that demonstrate how to integrate two systems. I understand the concept of asynchronous messaging, but again can't find good examples of how to apply it.

Resources on SOA seem to keep repeating the same concepts without demonstrating how to implement them, and more often than not seem more concerned with selling me products.

Here are the sorts of questions I am struggling to answer:

  1. Should each application have its own copy of the data? For example, should every application within an organisation have its own list of clients, which it updates upon the receipt of a message?

  2. At what point in the DDD stack are messages passed? Are they the result of domain events?

  3. Can I combine asynchronous messaging and WCF or do I have to choose? Do I use WCF for request/response and messaging for publish/subscribe?

  4. How does one DDD application consume the services of another? Should one DDD application query another system for its data via its application services, or should it already have its own local copy of the data, as mentioned in point 1?

  5. Apparently I can't have a transaction across two systems. How do I avoid this?

If I sound confused it's because I am. I'm not looking for answers to the above questions, just pointing in the direction of resources that will answer this and similar questions.


Solution

  • I've been making a similar transition. My advice: