It goes without saying that I am a big fan of BizTalk, but working with it day in and day out for years I do still see areas for improvement. Most often these have to do with the tooling more than the core product and quite often these are addressed within the community by MVPs, Microsoft, and other enthusiasts. In the past I created a BizTalk MSI Viewer to help ease the task of promoting BizTalk applications. This quite crude tool that really only took a few hours to create was useful none the less and is used by several of my clients for deployment package verification.
Lately I have been readdressing an issue I have halfheartedly tried to avoid or solve for several years. It is the management of BizTalk bindings files. The bindings in BizTalk are truly one of its most powerful and flexible elements. I have created entire production systems with nothing more than bindings. In fact the first half day of my original content course, Effective BizTalk Server, is nothing but ports and filters (ok, and one or two schemas and maps just to keep things moving). On a side note I would argue that the bindings aspect of BizTalk is perhaps the most adopted portion of the platform with regards to other Microsoft technologies, namely WCF.
All this said, BizTalk bindings files are large. Very large. Although they are not overly complicated their sheer size (and inclusion of escaped XML sub elements) can make propagating and managing changes cumbersome.
More often than not enterprises have several BizTalk environments and create bindings for each. These account for the different endpoints between say an Integration, UAT, and Production environment. Normally changes must be handled manually to these files, or created once and win diffed over. At first I attempted to do this with XSLT, but I found it to be cumbersome as well. Lately I have turned to an abstraction technique – namely a GUI to create and manage bindings between environments. The resulting BizTalk Bindings Manager is still very much a work in progress, but I will show some screenshots and designs here over the next few posts (please note, I am NOT a UI designer).
Check back later in the week to see some more of how this tool will work.