Zeeshan recently wrote about performance problems using the SOAP adapter( http://zeetalks.wordpress.com/2009/04/29/biztalk-performance-problems-using-the-soap-adapter/ ). In that article one of the solutions he suggested to the problem was to use one of the WCF adapters. Here I describe performance measure measurements using the WCF-Basic HTTP adapter.
I used Thiago’s Load Gen 2007 test to measure request-response message latency that he has described previously ( http://connectedthoughts.wordpress.com/2007/11/05/loadgen-2007-and-a-simple-biztalk-wcf-test/). It is easy to measure the request-response latency if you use a dedicated isolated host for your receive adapter.
The first orchestration test contained a WCF-Basic HTTP receive adapter exposed by BizTalk as shown below. The average message latency was about 0.8-1.0 seconds.
The second orchestration test contained the same WCF-Basic HTTP receive adapter exposed by BizTalk but also sent the message on after some mapping to an external WCF web service as shown below. The average message latency was now about 10-11 seconds.
In order to identify where the bottleneck was the external web service was replace by a simple web service returning just a stubbed out response. In this case the average message latency dropped to about 1.6-1.8 seconds. This is about what I would have expected from the addition of some extra persistence points in the orchestration.
Finally the after the external web service had been tuned a message latency of about 2-2.2 seconds was achieved.
This example suggests that lower message latency can be achieved between BizTalk and web services if the WCF adapters are used instead of the traditional SOAP adapters. We expect that we can achieve even lower message latency if we tune BizTalk for low latency as suggested by Thiago in comments to Zeeshan’s article.
Receive port | Send Port | Loadgen testmessages/sec | Average Request- Response Latency (seconds) |
WCF-Basic HTTP Request-Response | File Adapter | 10 | 0.8-1.0 |
WCF-Basic HTTP Request-Response | File Adapter with outbound maps | 10 | 0.8-1.0 |
WCF-Basic HTTP Request-Response | WCF-Basic HTTP Request-Response with outbound and inbound maps to external web service | 10 | 10-11 |
WCF-Basic HTTP Request-Response | WCF-Basic HTTP Request-Response with outbound and inbound maps to external web service returning a stubbed out response | 10 | 1.6-1.8 |
MOSS WCF-Basic HTTP Request-Response | WCF-Basic HTTP Request-Response with outbound and inbound maps to tuned external web service | 10 | 2.0-2.2 |