BizTalk Server 2013 - New Features Blog Series – WCF-BasicHttpRelay Adapter

BizTalk Server 2013 introduces few new adapters that enable out-of-the-box connectivity with endpoints on Azure. One such adapter is WCF-BasicHttpRelay adapter, which can be used to send and receive messages from a Service Bus relay endpoint. This adapter is similar to the existing WCF-BasicHttp adapter in BizTalk. While the WCF-BasicHttp adapter used the BasicHttpBinding, WCF-BasicHttpRelay adapter uses the BasicHttpRelay binding.

This adapter enables a lot of integration scenarios between Azure and BizTalk but the most common and widely used scenario should be where a client sends a message to a relay endpoint hosted in Azure. With this new WCF-BasicHttpRelay adapter ‘listening’ to that relay endpoint, any message that gets sent there is pulled into the on-premise BizTalk Server, and then the usual orchestration or any other business process defined within BizTalk Server can kick in to process that message.

Let’s look at what’s required for configuring a WCF-BasicHttpRelay adapter.

The Binding and Messages tab for the adapter configuration are the usual. The key configuration values would need to be specified in the General and Security tabs.

General Tab

image

In the General tab, you specify the URI for the relay endpoint. The URI could be in HTTP or HTTPS scheme based on the kind of security you want to implement. In the screen capture above, btssalesforce is my Service Bus namespace and /notifications/opportunity is the relay endpoint. In this case, when we finish configuring the receive location and enable it, the /notifications/opportunity relay endpoint will be created under your namespace. You do not need to create it before configuring the receive location.

Security Tab

Drawing1

 

In the Security tab, from the Security mode you can specify the kind of transfer security you want to use. The options available are very clearly described at https://msdn.microsoft.com/en-us/library/ff648863.aspx. If you use None, the URI schema will be HTTP. If you use either Transport or TransportWIthMessageCredential, the URI scheme will be HTTPS.

You can specify the client-side security from the Relay client authentication type property. If you set this to None, the relay endpoint will be accessible to any client that knows the endpoint address. If this is set to RelayAccessToken, only those clients with the key and the endpoint address can access it.

You can also control whether the service behavior is published to the Service Registry (https://msdn.microsoft.com/en-us/library/windowsazure/dd582704.aspx) by selecting the Enable service discovery check box. If you select that option, you will also have to specify the name with which the service behavior is published in the registry and the mode of discovery.

Finally, you must specify the ACS credentials to authenticate with the Service Bus namespace. You can get these details from the Azure management portal.

 

image

I’ll be adding a demo description to this blog soon to demonstrate how BizTalk Server can consume messages sent to a relay endpoint hosted in Azure.