BAM Interceptor for WCF
Many of you guys are eagerly anticipating the release of the Microsoft BizTalk Server 2006 R2… and the only definite answer to that is it will be available in Q3 of 2007. In the meantime, the Beta 2 release of it can be downloaded from this link: http://connect.microsoft.com/
In this series of blogs I will again as usual, delve on the BAM side of BizTalk offering and answer any questions from you. In R2, there are two new interceptors added, namely the BAM Interceptor for WCF (Windows Communication Foundation) and the BAM Interceptor for WF (Windows Workflow Foundation). Of the two new interceptors, I will, for the time being, concentrate on the WCF Interceptor. To find out more on WF Interceptor, please checkout my colleague, Andy Shen’s blog site: http://blogs.msdn.com/andyshen/
Before I get into the BAM Interceptor for WCF, here is a summary of some howto’s from my past entries to those who are new to Biztalk BAM:
- Introduction and means to BAM-enabled a business process.
- Writing BAM events that are transactionally consistent with BizTalk pipelines using MessagingEventStream.
- Writing BAM events that are transactionally consistent with BizTalk orchestration using OrchestrationEventStream.
- Continuation scenarios with mix of TPE-enabled and BAM EventStream API tracking.
- Programmatically retrieving data from BAMPrimaryImport database using supportable API.
- Programmatically retrieving server and database info of Biztalk MessageBox and BAM PrimaryImport database.
So what is this BAM Interceptor for WCF? In a nutshell, it extends the capability of BAM interception to any WCF application of it message without having to recompile the WCF application. (This is analogous to using BAM Tracking Profile Editor to map and enable interception on BizTalk application without having to recompile the BizTalk application.)
The integration of WCF application and BAM interception is achieved through WCF configuration file by adding a custom behavior to the WCF application endpoint node. A separate file called IC (Interceptor Configuration) is required to filter and map WCF data of interest to corresponding BAM activity.
Where in WCF application are the data intercepted? It supports the following interception points for WCF client, service and callback applications:
· Before the method call (Request)
· After the method call (Reply)
· When the fault occurs in method call (Fault)
What can be intercepted? Basically, anything you can see in the soap envelope can be tracked, but more often than not, you are interested in the data in the soap body where information of the method parameters is located.
Here are the basic steps to enable BAM interception for a WCF application:
1. Create BAM activity and deploy.
2. On a WCF application, update its config file.
3. Create a corresponding IC file and deploy.
4. Execute the application.
5. View data in Portal.
Only step 2 are 3 are new to this release and you can see details information on this in the BizTalk Server Documentation under the heading (I will update this to online link when it is available):
Business Process Management | Using Business Activity Monitoring | Implementing BAM Solutions | Using the BAM WCF and WF Interceptors
MSDN forum specific for Microsoft BAM: http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=1473&SiteID=1
To be continued…