BizTalk assigns one thread for every orchestration; even if you are using parallel shape inside your orchestration!
When you use Call Orchestration shape vs Start Orchestration shape?
The way BizTalk handles messages internally is different when it comes to calling or starting orchestrations.
Calling an Orchestration will use the same thread to run another orchestration while using Start Orchestration will create a new thread to run the started orchestration.
A Call Orchestration returns the control back to the caller. A Start Orchestration shape starts the orchestration in a non-deterministic way.
As a conclusion, Calling an Orchestration will be a synchronous operation where the caller waits for a response, while Start Orchestration is an asynchronous operation.
Call Orchestration
- Will reduce latency as call orchestration doesn’t go via MessageBox
- Possible to pass all types of parameters
- Call shape will tightly bound orchestration
Start Orchestration
- Allows to execute orchestrations asynchronously
- Will increase latency as start orchestration call goes via MessageBox
- Possible to pass all types of parameters. No return param is supported
- Start shape will tightly bound orchestration
Short hint
If you call an orchestration from another project you have to set the Type Modifier property to public. Otherwise, the orchestration will not show up in the dialog where to choose the orchestration you call.