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.另外帮你多了一个项目模板。你要做了的只是点击向导。然后加上自己的实现就行了。他自动生成的框架代码,都有详细的注释。告诉你该做什么。
![](http://www.cicoria.com/downloads/images/WCFLOBASDK_AddProject.jpg)
简单实现一个outputhandler
namespace
Contoso.CustomAdapter
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
public class ContosoCustomAdapterOutboundHandler : ContosoCustomAdapterHandlerBase, IOutboundHandler
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// Initializes a new instance of the ContosoCustomAdapterOutboundHandler class
/// </summary>
public ContosoCustomAdapterOutboundHandler(ContosoCustomAdapterConnection connection
, MetadataLookup metadataLookup)
: base(connection, metadataLookup)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
}
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
IOutboundHandler Members#region IOutboundHandler Members
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
/**//// <summary>
/// Executes the request message on the target system and returns a response message.
/// If there isn抰 a response, this method should return null
/// </summary>
public Message Execute(Message message, TimeSpan timeout)
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
//
//TODO: Implement Execute
//
Console.WriteLine("Incoming Message {0}", message.GetReaderAtBodyContents().ReadInnerXml());
Message rm=Message.CreateMessage(MessageVersion.None,"","A message From WCF Adapter");
return rm;
}
![](/Images/OutliningIndicators/InBlock.gif)
#endregion IOutboundHandler Members
}
}
这个Adapter的下载地址:
http://www.microsoft.com/downloads/details.aspx?FamilyID=56278FDE-B708-469C-987E-DED9C6C5E580&displaylang=en