After I studied Microsoft Biztalk’s architecture, I found that relying on a messaging architecture works very well for building software. As a result, I no longer rely on orchestration in which a Director / Builder is required to direct a process and also have knowledge of all of the dependencies in order to execute that process.
I now build software where a client simply places a message on a messagebus for decoupled subscribers of that message to process and when that message is processed, a response from a subscriber is placed on the same messagebus for the initial client to observe and respond to. After all, why should my client even know about the server in order to make a request? The less my client knows about its dependencies, the easier it is for me to extend testable software. Hence, clients should not have to describe how to carry out an operation. Instead, clients should only spin-up requests for servers to respond to autonomously.
NOTE:
Scott Nimrod is fascinated with Software Craftsmanship.
He loves responding to feedback and encourages people to share his articles.
He can be reached at scott.nimrod @ bizmonger.net