BizTalk, Custom Pipelines, Bobby Knight, and Visual Basic.NET
I've spent the better part of the day writing and testing a BizTalk Server 2006 custom pipeline written in Visual Basic.NET. This will be published as an SDK sample in the BizTalk Server Developer Center. It wasn't so much that it was a difficult topic -- I modeled it on an existing SDK sample so it was hardly arcane -- but tedious. You see, I don't "do" Visual Basic.NET.
It isn't personal. Call it a personal preference, kinda like my aversion to licorice or my proclivity to avoid Lubbock. Again, not personal and if you like licorice, live in or love Lubbock, or have sworn eternal allegiance to Visual Basic.NET and all things VB, then I salute you and mean no offense. That is your thing. My thing is not Visual Basic.NET. Taken a step further, my thing is the set of languages that is not Visual Basic.NET.
It isn't personal. I used Visual Basic 5/6 for years both as a consultant and at software development firms. I even fought for Visual Basic 5.0 at one of those engineering firms, arguing that UI's were easier to roll in VB than Visual C++. Prima donna or not, I lost that one. But I did get to write some COM objects using C++ (ugh).
Again, it isn't personal. What happened is this: .NET and C# came out. Visual Basic.NET was released at the same time, but I liked the syntax of C# and found it easy to fall into it and start developing solutions. The Visual Studio experience was subjectively better, from XML doc to the way accessors are declared. I dug it pretty quickly and just happened to work on projects where the compiler language wasn't an issue...or I could swing it to C#. Again, a personal thing.
So why write a sample in Visual Basic.NET? Two reasons:
- There are BizTalkers out there using Visual Basic.NET
- I wanted to experience first hand how difficult it is to convert C# to Visual Basic.NET.
I wanted to give a "shout out" to the VB.NET developers out there in BizTalk land. I also wanted to experience the pain of converting C# to VB.NET first hand as someone who has strayed from the Visual Basic flock and has little VB.NET experience. Kinda like trying lima beans again as an adult after gagging on them as a kid.
It took a while because I was rusty on VB.NET syntax. But in the end, I got the custm pipeline to work. I'd include a snippet of code...well, I will include a snippet:
<ComponentCategory(CategoryTypes.CATID_PipelineComponent)> _
<ComponentCategory(CategoryTypes.CATID_Encoder)> _
<ComponentCategory(CategoryTypes.CATID_Decoder)> _
<Microsoft.VisualBasic.ComClass("B5B020E4-5120-4e56-8D9E-C3431D5BFF6F")> _
Public Class RemoveNullElements
Implements Microsoft.BizTalk.Component.Interop.IBaseComponent
Implements Microsoft.BizTalk.Component.Interop.IComponent
Implements Microsoft.BizTalk.Component.Interop.IPersistPropertyBag
Implements Microsoft.BizTalk.Component.Interop.IComponentUI
Private _excludeList As String
Property ExcludeList() As String
Get
Return _excludeList
End Get
Set(ByVal value As String)
_excludeList = value
End Set
End Property
#Region "IBaseComponent"
ReadOnly Property Name() As String Implements IBaseComponent.Name
Get
Return "RemoveNullElements component"
End Get
End Property
ReadOnly Property Version() As String Implements IBaseComponent.Version
Get
Return "1.0"
End Get
End Property
ReadOnly Property Description() As String Implements IBaseComponent.Description
Get
Return "Removes empty elements in source XML message"
End Get
End Property
#End Region
Mmmm, Visual Basic-y.
Look for it by the end of November out on the dev center. Maybe someone will convert it to Iron Python?
As always, feedback is welcome. And, uh, GO RED RAIDERS!