WCF Adapter Content Forthcoming!
Thanks to my co-worker and good friend PM Sonu Arora, I will begin posting content on the WCF LOB Adapter SDK on this site. For more information on this SDK and very useful programming information, add a link to her blog at http://blogs.msdn.com/sonuarora/
The Windows Communication Foundation (WCF) Line-of-Business (LOB) Adapter SDK is a collection of runtime engine and tools to help Adapter Developers in creating service-oriented interfaces to existing LOB applications using WCF. The goal of the WCF LOB Adapter SDK is to facilitate uniform development of reusable metadata-oriented WCF-based adapters that enable enterprise applications, databases and messaging platforms to integrate with each other. The Adapter SDK is based on WCF and it surfaces an adapter to a LOB application as a WCF Binding .
Relationship with BizTalk Server
BizTalk Server ships with BizTalk Adapter Framework which promotes creating custom adapters for use within BizTalk Server. BizTalk adapters use the BizTalk Server Administration Console for adapter management, BizTalk Explorer for adapter configuration, and the Adapter Framework for design-time APIs. WCF LOB Adapter SDK is the evolution of BizTalk Adapter Framework. Since WCF LOB Adapter SDK is based on new architecture, the adapters built to Adapter SDK will continue to co-exist side-by-side with the adapter written using BizTalk Adapter Framework. Microsoft and Microsoft’s Technology Partners have built adapters using BizTalk Adapter Framework. The future direction recommended by Microsoft is to start using WCF LOB Adapter SDK for building new adapters.
Relationship with WCF
The Adapter SDK is based on WCF. It is exposed as a WCF Binding and implements WCF System.ServiceModel.Channels.TransportBindingElement for handling communication between a client and a service. It extends WCF with metadata browse, search and resolve interfaces for Adapter Consumer to selectively compose the Service Description contract. The Adapter SDK enables Adapter Developers to easily create WCF binding(s) and channel(s) for layering existing applications with service-oriented interfaces.
Adapters differ from regular WCF transports due to these main characteristics:
• Adapters are metadata-centric
o Require metadata at run-time
o Require metadata cache management
o To provide rich metadata at design-time they require search/browse/resolve protocol
• Adapters are always connection-oriented
o Connection is very central concept for the adapter
o Require connection pooling and connection life-cycle management
• Adapters are effectively “in-proc WCF Services”
Consuming an adapter is no different than consuming a WCF Service from the perspective of a WCF client and the adapter consumer is not required to learn a new programming model. The client can use either the WCF Service Programming Model or WCF Channel Architecture to communicate with an adapter.
A typical WCF service programming lifecycle begins by a Service Provider defining a static service contract, implementing this contract and hosting the service. Each service is defined entirely by a fixed monolithic contract. This contract needs to be updated by the service provider in order to reflect any changes in the existing application. The Adapter built using WCF LOB Adapter SDK, on the other hand, surfaces the contracts on-demand by consumer. The consumer browses through the available metadata in the adapter using the standard interfaces and then selects the operations and types for inclusion in a dynamic contract. The metadata can be updated when the existing application change providing up-to-date interfaces for the new clients. Adapters are more appropriate in scenarios where a non-WCF based system is being exposed for integration.
For an Adapter Consumer, the adapter can be accessed like a typical WCF Service and the consumer doesn’t have to learn a new programming model. The same adapter developed using the Adapter SDK can be reused in multiple .NET applications including Custom WCF Client Applications, BizTalk Server, SharePoint Server and SQL Server Integration Services. In addition, Adapter SDK provides a common facility for Adapter Developers to expose rich LOB metadata to the Adapter Consumers, who can selectively compose and create dynamic WCF contracts from this available metadata in the adapter.
Here are three main goals of the WCF LOB Adapter SDK
- No unified adapter development framework for .NET
- Every “integration technology” implements its own adapter framework
- Provides an abstraction layer between service oriented world and proprietary application interfaces
- Adapters written using BizTalk adapter framework specific to BizTalk
- Duplication of effort – e.g. at least 5 SAP adapters in Microsoft
- Surfaces adapter as a WCF binding, widening reach
3. Consumer-Driven Dynamic Contracts
- Provides interfaces for browsing, searching and resolving metadata
- Provides a service-tier that reflects changes in the existing application type model
- Extends WCF to provide an ability to generate dynamic contracts (service description) from available metadata