The ESB Toolkit 2.0 install is still a painful process and I have often asked if there was an easier way to do it to get more out of it. Use of the ESB pipeline components is particularly helpful in some situations but it is a little annoying to go through all of the ESB Toolkit setup steps just to use the pipeline components. So I think I have found a usable workaround. On a recent project I was using one of the ESB Toolkit 2.0 pipeline components for removing a namespace from an Xml file, but I decided to try an limited deployment of the ESB Toolkit 2.0.
I found that it is possible to do an limited deployment of assemblies for the pipelines as long as all of the dependent assemblies can be found. I recognize this is not an ideal or officially supported configuration but I found it to be a much quicker deployment. Obviously you cannot take full advantage of the ESB Toolkit’s features if you do not install everything but if you happen to just need to use one of the pipeline components then this post should enable you to be successful quickly.
Here are the basic steps of what I describe as a limited ESB deployment:
- Build all BizTalk projects with custom pipelines using the ESB Toolkit components
- Copy all compiled BizTalk assemblies and referenced ESB assemblies to the BizTalk pipeline components folder (usually C:Program FilesMicrosoft BizTalk Server 2009Pipeline Components)
- GAC all compiled BizTalk assemblies and referenced ESB assemblies
- Add BizTalk assemblies and ESB pipeline component assemblies to relevant BizTalk application
To determine all of the dependent assemblies for an assembly, I open it in Reflector and then expand the references item. This shows the immediate references and lets you drill deeper from there into references of references. This is a handy way to get a quick list of dependent assemblies. To save you the time of doing this again for the ESB Toolkit, here are the referenced assemblies for the ESB Toolkit 2.0 pipeline components. You can just copy and paste these to rapidly deploy the ESB pipeline components with your BizTalk assemblies:
Pipeline Component assembly: Microsoft.Practices.ESB.Namespace.PipelineComponents
Referenced Assemblies:
Microsoft.Practices.ESB.Utilities
Microsoft.Practices.ESB.GlobalPropertyContext
Microsoft.Practices.ESB.Itinerary.Schemas
Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults
Microsoft.Practices.ESB.Exception.Management
Microsoft.Practices.ESB.Utilities
Microsoft.Practices.ESB.GlobalPropertyContext
Microsoft.Practices.ESB.Itinerary.Schemas
Microsoft.Practices.ESB.ExceptionHandling.Schemas.Faults
Microsoft.Practices.ESB.Exception.Management
By just deploying a small number of the ESB Toolkit 2.0 assemblies I was able to take advantage of the really handy functionality provided with the Toolkit without spending a considerable amount of time getting the toolkit installed and configured.
Thanks,
This does assume you have the ESB toolkit installed somewhere so you can get the assemblies to copy and paste. The limited deployment option would work where you have a dev environment with the toolkit installed but only wanted to copy the assemblies to the server rather than install the whole toolkit on the server.
THe Next Atlanta BT Meeting is how to implement ESB error handling in "plain old BizTalk" meant to be a speech on how to move error handling in preparation for ESB. I will point this post out since it goes along with the Migration to ESB train of thought. Thank you again for great insite!
Thanks Mark! Hope the meeting goes well.
One other limitation I have found with this is that if there is an error that occurs in the configuration of an ESB pipeline component in a custom pipeline, the actual error will not be logged to the Event Logs because the event log source will not have been deployed.