Carolina Code Camp

Recently I gave a presentation on BizTalk Server 2009 at the Carolina Code Camp. The presentation covered the basics of BizTalk as well as the new features of BizTalk Server 2009.

I showed a short demonstration of a sample Purchase Order process. The components used were the Schema Designer, the Mapper, the Orchestration Designer, and the Consume WCF Service Wizard.

PowerPoint slides and demo code are available upon request.

REST Services in BizTalk

After many hours of research and blog reading, I came to the conclusion that there is no out-of-the-box or additional download (from an Adapter Pack or similar) support for REST services in BizTalk 2009. My recommendation is to have a C# helper class make the call for you. This is not what I was hoping to discover, although it does make sense.

REST services do not employ formal contracts, while BizTalk relies heavily on strong-typing of messages, these two philosophies contradict.

The other issue is that BizTalk needs two pieces of data for message delivery, destination URI and the Message. REST embeds the message as part of the URI. Again, this is a contradiction in philosophies.

We can create a Dynamic Send port with the correct URI (message embedding included), however BizTalk must send a message along with the URI and REST services reject this additional payload. Also, Dynamic Send ports do not support two-way communication so there is no way to correlate the response message, even if we were to actually be able to get one from the REST Service.

Until Microsoft adds support for REST in BizTalk, the workaround is to use a .NET Helper Method to make the REST call for us.