When it comes to orchestrations there are a couple of best practices this article will provide for you.
BizTalk developers sometimes easily tend to use an orchestration to solve a problem or fulfill a requirement, while a messaging only solution would be more suitable. A rule of thumb for every developer should be to minimize the use of orchestrations when it comes to increasing the overall throughput of messages and reduce latency.
You may wonder why should always use multi-part messages. Well when logical ports and Receive/Send shape are using multi-part message types, you can easily change the underlying schema if necessary without having to disconnect the port from the receive shape. This enhances productivity. See also one of best article's on BizTalk programming: 8 Tips And Tricks For Better BizTalk Programming.
With orchestrations you have to keep performance in mind when you expecting a large workload. There are some key considerations you have to bear in mind:
There are a number of patterns available that can help you create stable and robust orchestration, see Implementing Design Patterns in Orchestrations.
With BizTalk you have a couple of options when it comes to configuring a port in the orchestration designer: Specify now, Specify later, Direct and Dynamic, see Port Bindings. Direct-Bound ports are an excellent way of sending a message from BizTalk to BizTalk. These ports are self-configured, without sacrificing flexibility or performance. No configuration is necessary to bind them to physical ports, enhance re-usability and are easier to redeploy independently. There are three Direct-Bound port types: Message Box Routing, Self-Correlating, and Orchestration-to-Orchestration (also called Partner Ports). See MSDN Working with Direct Bound Ports in Orchestrations.
Handling exceptions inside orchestration is the similar of doing a “catch { }” block in C#, and it enhances the stability of the orchestration. It is recommended that you include all orchestration shapes in one or multiple scopes (non-transactional scopes whenever possible) and create at least the following exception handler blocks:
Read suggested related topics: