代码之家  ›  专栏  ›  技术社区  ›  Simon Gillbee

您可以将wcf数据服务(ne odata、ne astoria、ne ado.net数据服务)与nettcpbinding一起使用吗?

  •  5
  • Simon Gillbee  · 技术社区  · 14 年前

    我正在考虑通过慢速卫星连接创建数据查询WCF服务,我非常喜欢WCF数据服务。我看到的问题是,HTTP是一种非常冗长的格式,由于我所做的一切都是内部的和.NET的,是否可以使用nettcpbinding来减少一些开销?

    这是可能的吗?明智之举?

    2 回复  |  直到 14 年前
        1
  •  3
  •   marc_s    14 年前

    不,WCF数据服务是建立在REST之上的,REST本身非常紧密和完全基于HTTP动词,如get、put、post等。—您不能通过nettcp运行这些,因为它们本质上与HTTP协议栈相关联。

    也许您还有其他的选择来减少正在传输的数据?调整对象——如果可以的话,修剪FAT——既包括一次检索的行数,也包括传输的属性/数据字段数。这可能是你最有希望的方法。

        2
  •  4
  •   Simon Gillbee    14 年前

    当我自己研究这个的时候,我遇到了 MSDN article on Self-Hosted WCF Data Services . 本文注意到,您可以使用 DataServiceHost 它仍然需要HTTP(它是从WebServiceHost派生的)。

    但您也可以使用 IDataServiceHost . 这是一篇来自msdn文章的摘录:

    对于WCF主机 实施太严格了,你 还可以为 数据服务。任何类 实现IDataServiceHost接口 可以用作 数据服务。自定义主机必须 实现IDataServiceHost 接口,能够处理 遵循的基本职责 数据服务主机:

    • 为数据服务提供服务根路径。
    • 将请求和响应头信息处理到适当的 IDataServiceHost成员实现。
    • 处理数据服务引发的异常。
    • 验证查询字符串中的参数。

    这篇文章似乎建议微软将数据服务职责与网络接口职责适当地分开。如果是这样,那么我应该能够编写nettcpdataservicehost。有人写过爱达荷州的服务器吗?有什么建议吗?