【问题标题】:How to write a socket based Custom Transport for WCF如何为 WCF 编写基于套接字的自定义传输
【发布时间】:2008-12-20 04:58:50
【问题描述】:

我有一个移动平台,我正在尝试在上面编写一些通信代码。

平台提供基于标准套接字功能的专有通信机制。基本上,平台的套接字 API 看起来与标准的 Windows 套接字 API 完全相同,只是每个函数都有一个前缀。

我想使用 WCF 将 Sockets API 的复杂性从我的消费应用程序中抽象出来,但我很难找到能够充分描述所有需要编码的部分的资源。

任何人都可以推荐一个好的起点,或者描述为 WCF 编写基于套接字的自定义传输所需的内容吗?理想情况下,我希望能够通过这种传输机制使用 HttpBinding。

谢谢!

【问题讨论】:

    标签: wcf sockets


    【解决方案1】:

    我整理了一些resources 的列表,用于编写可能有用的 WCF 传输通道。不幸的是,并非所有链接都仍然有效,但大多数链接仍然有效,并且其中有一些有用的东西。

    我还添加了short introduction 来说明某些部分如何组合在一起,这可能会有所帮助。

    我不太明白你的问题:你提到你想在你的传输之上运行 HttpBinding。您的意思是要在自定义的类套接字 API 之上使用 WCF http 传输通道,而不是使用常规的 Windows 套接字 API?

    如果是这样,那么不,由于各种原因,这将不起作用。其中之一是绑定和通道并没有真正直接绑定在一起,而是绑定定义(即其中包含哪些绑定元素)控制如何在运行时为您的服务/客户端创建通道堆栈。

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

    换句话说,如果您想使用 HTTP,则需要将 HTTP 内容烘焙到您的自定义通道实现中。但是,只要您公开正确的通道形状,没有什么可以阻止您在自己的通道之上使用其余的默认基本/ws http 绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-17
      • 2019-01-17
      • 1970-01-01
      • 2012-04-29
      • 2017-10-18
      • 2018-12-18
      • 1970-01-01
      • 2013-03-19
      相关资源
      最近更新 更多