« BizTalk and Single-Quoted Attributes in ... | Main | Some Recent Reading »
One topic that sometimes causes confusion when developing custom pipeline components in BizTalk Server is how, and where, should their assemblies should be deployed and how they are loaded by BizTalk. Let's talk a little bit about it.
In BizTalk Server 2004, there was only one place to deploy your custom pipeline components: The "Pipeline Components" folder on your BizTalk installation directory. Some conflicts arose because of this requirement, and made it "uncomfortable" to have components that had external dependencies on other assemblies.
In BizTalk Server 2006, this restriction was lifter, and now the recommendation is: Deploy to the Pipeline Components folder on development machines only; deploy to the GAC. The former is really only necessary so that the design time infrastructure (i.e. the pipeline designer) works.
But let's look at what actually happens when you use a custom pipeline component in a BizTalk pipeline:
In BizTalk Server 2006, the components are loaded internally by the CreateManagedInstance() method of the internal ComponentLoader class, which does the following steps:
One could think that perhaps a better option for the BizTalk design would've been to make the Pipeline Components folder part of the probing path for BizTalk and simply let the runtime do its thing. This is not the case, however. In any case, this wouldn't have worked because pipelines are not only used inside the BizTalk Application Hosts (i.e. BTSNTSvc.exe), but also in isolated hosts like IIS where having the Pipeline Components folder as part of the probing path is not an option.
BizTalk, Pipelines
Tomas Restrepo is a software developer located in Colombia, South America. His interests include .NET, Connected Systems, PowerShell and lately dynamic programming languages. More...
email: tomas@winterdom.com msn: tomasr@passport.com
Copyright © 2002-2008, Tomas Restrepo.
Powered by: newtelligence dasBlog 2.2.8279.16125