如何编写基于Socket的自定义传输协议用于WCF

9
我有一个移动平台,正试图编写一些通信代码。
该平台提供了一种基于标准socket函数的专有通信机制。基本上,平台的socket API看起来与标准的Windows Socket API完全相同,只是每个函数前面都有一个前缀。
我想使用WCF来抽象掉套接字API的复杂性,但是很难找到足够描述需要编码的所有部分的资源。
有人能推荐一个好的起点,或者提供编写基于Socket的自定义传输协议所需的说明吗?理想情况下,我希望能在这种传输机制上使用HttpBinding。
谢谢!
1个回答

10

我整理了一些编写WCF传输通道的资源, 可能会有用。不幸的是,并非所有链接都还活跃,但大多数链接都还有效,并且其中有一些有用的内容。

我还简短介绍了一下如何将某些部分组合起来,这可能会有所帮助。

在你的问题中,有一些我不太明白的地方:你提到想要在你的传输上运行HttpBinding。你是否意味着想要在自定义类似套接字API的传输之上使用WCF http 传输通道,而不是常规的Windows套接字API?

如果是这样,那么由于各种原因,这是行不通的。其中一个原因是绑定和通道并没有直接联系,相反,绑定定义(即包含哪些绑定元素)控制了服务/客户端的通道堆栈在运行时如何创建。

因此,当编写自定义传输通道时,您将创建自己的自定义TransportBindingElement派生类,该类可用于自定义绑定,以使用您自己的传输通道而不是默认通道之一(例如HttpTransport)。但是,请注意,传输通道无论如何都是通道堆栈的底部(即在它下面没有任何东西),因此您无法在自定义传输之上添加HttpTransport(即使没有API限制也不行)。

换句话说,如果你想使用HTTP进行通信,你需要将HTTP内容嵌入到你的自定义通道实现中。但是,只要你暴露出正确的通道形状,就可以在你自己的通道上使用默认的基本/ws http绑定的其他部分。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接