I spent some time last week writing a disassembler pipeline component for Biztalk. We evaluated the other ways of getting a “message” in and this seemed like the best way. I found the documentation for writing pipeline components a little thin on the ground, but there are some great resources on the web so here goes.
This post from Gilles weblog was probably the best, giving an in-depth example of the important Disassemble() and GetNext() methods for the Disassembler to implement. The other parts of this posting together constitute a complete disassembler. http://blogs.msdn.com/gzunino/archive/2004/06/14/155772.aspx
There is also a pipeline component wizard (which I didn’t end up using, but which comes highly reccomended) http://www.gotdotnet.com/workspaces/workspace.aspx?id=1d4f7d6b-7d27-4f05-a8ee-48cfcd5abf4a
Some more info from Gilles on debugging pipeline components (not just disassemblers) http://blogs.msdn.com/gzunino/archive/2004/07/01/171281.aspx
This article from Developer.com also had some good tit-bits http://www.developer.com/net/net/article.php/11087_3482346_1
Pipeline components seem quite different to other components in Biztalk - they don’t have to be strongly named or placed in the GAC (and Biztalk won’t load them from the GAC even if they are there), and they are “deployed“ by just copying them into the “Pipeline Components“ directory (under the Biztalk install directory).
Update: Don’t forget this important step when writing your own disassembler, or risk spending a day or so troubleshooting the problem like I did.