WCF 内置了很多Binding,而很多Binding其实主要是TransportElement 和 EncodingElement以及一些额外特性(比如安全,可靠消息传递等)的组合。
对于扩展而言,有时候我们需要去自定义实现一个Binding。这时候你可以去修改binding的一些参数。或者自己去组合一个binding使用Custom binding。比如选择使用Http作为Transport,而 Encoding选择BinaryMessageENcoding。而有时候我们希望自己去实现一个TransportElement。这时候你会发现有很多代码要你实现。如果你用reflector看一下所有关于NetMsmqBinding的代码就会发现不止是实现一两个接口那么简单。
你要去实现InputChannel,OutputChannel, MetaData import,Export 等。
现在的话,你可以用WCF LOB Adapter SDK 很快的实现一个自己的Binding。
WCF LOB Adapter SDK 安装好之后,他在WCF 模型的基础之上作了一个Framework.另外帮你多了一个项目模板。你要做了的只是点击向导。然后加上自己的实现就行了。他自动生成的框架代码,都有详细的注释。告诉你该做什么。
简单实现一个outputhandler
{
public class ContosoCustomAdapterOutboundHandler : ContosoCustomAdapterHandlerBase, IOutboundHandler
{
/// <summary>
/// Initializes a new instance of the ContosoCustomAdapterOutboundHandler class
/// </summary>
public ContosoCustomAdapterOutboundHandler(ContosoCustomAdapterConnection connection
, MetadataLookup metadataLookup)
: base(connection, metadataLookup)
{
}
IOutboundHandler Members IOutboundHandler Members
}
}
这个Adapter的下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=56278FDE-B708-469C-987E-DED9C6C5E580&displaylang=en