At its core, orchestration is an executable business process that acts upon messages passing through the service bus. In the BizTalk world, orchestration has both a design-time and runtime aspect. At design time, a developer uses a predefined palette of activities, which are linked together to form a business process. The runtime orchestration engine is a server service that coordinates all aspects of orchestration execution, ranging from starting up and terminating orchestrations to load balancing and monitoring the orchestration processing health.
In many cases, a purely messaging-oriented solution is exactly what our situation calls for. However, we often need the flexibility to introduce a long-running, stateful interception of messages which may contain business logic, control flow, data processing, aggregation, exception handling, and transactions. This is the value of orchestration. What is the value of orchestration in a service-oriented architecture? Let's look...