Pipeline.exe for performance Improvement

Published on : Apr 3, 2005

Category : BizTalk Server



I guess many of you guys around will be working with custom pipeline components and I suppose you create biztalk artifacts (send/Receive port) to test your pipeline components. Along with the SDK install comes this tool pipeline.exe which can be used for the following purposes: * Debug third-party pipeline components outside of the server environment. * Diagnose parsing engine error messages. * Experiment with different schemas without the burden of compiling, deploying, undeploying, and recompiling. * Explore flat file and XML assembler/disassembler behavior. * View disassembler output and discover which message context properties are promoted and their values. * Run send/receive pipelines without disassembler and assembler components (for example, you can view the output of the S/MIME decoder). * Make fine-grained performance measurements of the pipeline alone (rather than the entire messaging subsystem). The last point fine-grained performance measurements: How to do that? with pipeline.exe command line option, there is an option called “-t”, which outputs the elapsed time after executing each stage. This is really helpful to see how much time it takes after each stage. In my current project, we ended up changing lot of stuff inside an Disassembler component, this is the only way I can prove the new component is much more performant than the old version. Look at the following command line entry and the output from a test project, now you know what I’m talking about. C:Program FilesMicrosoft BizTalk Server 2004SDKUtilitiesPipelineTools>Pipeline.exe “C:My StuffSaravana.Biztalk.LearningSaravana.Biztalk.Learning.PipelinesTestReceivepipeline.btp” -d “C:My StuffSaravana.Biztalk.LearningSample Messagespipelinecomponenttest.xml” -c -t Decode Stage: before Execute Encode Pipeline Component pipeline component: before Execute Encode Pipeline Component pipeline component: after Execute, elapsed time is 00:00:00.0100144 Decode Stage: after Execute, elapsed time is 00:00:00.1001440 Disassemble Stage: before Execute Disassemble Stage: after Execute, elapsed time is 00:00:00 Disassemble Stage: before GetNextOutputMessage Disassemble Stage: after GetNextOutputMessage, elapsed time is 00:00:00 Validate Stage: before Execute Validate Stage: after Execute, elapsed time is 00:00:00 ResolveParty Stage: before Execute ResolveParty Stage: after Execute, elapsed time is 00:00:00 HTH