【发布时间】:2011-04-08 00:47:35
【问题描述】:
我正在考虑通过慢速卫星连接创建数据查询 WCF 服务,我非常喜欢 WCF 数据服务。我看到的问题是 HTTP 是一种非常冗长的格式,由于我所做的一切都是内部和 .NET,是否可以使用 NetTcpBinding 来减少一些开销?
这甚至可能吗?可取吗?
【问题讨论】:
标签: wcf wcf-data-services odata nettcpbinding
我正在考虑通过慢速卫星连接创建数据查询 WCF 服务,我非常喜欢 WCF 数据服务。我看到的问题是 HTTP 是一种非常冗长的格式,由于我所做的一切都是内部和 .NET,是否可以使用 NetTcpBinding 来减少一些开销?
这甚至可能吗?可取吗?
【问题讨论】:
标签: wcf wcf-data-services odata nettcpbinding
在我自己研究这个问题时,我遇到了MSDN article on Self-Hosted WCF Data Services。本文指出,您可以使用DataServiceHost 托管服务,该服务仍需要 HTTP(它源自 WebServiceHost)。
但您也可以使用IDataServiceHost 滚动您自己的主机。以下是 MSDN 文章的摘录:
对于 WCF 主机的情况 实施太严格了,你 也可以为一个自定义主机 数据服务。任何类 实现 IDataServiceHost 接口 可以用作网络主机 数据服务。自定义主机必须 实现 IDataServiceHost 接口,并能够处理 履行基本职责 数据服务主机:
- 为数据服务提供服务根路径。
- 将请求和响应标头信息处理到适当的 IDataServiceHost 成员实现。
- 处理数据服务引发的异常。
- 验证查询字符串中的参数。
这篇文章似乎表明 MS 已将数据服务职责与网络接口职责适当分离。如果是这样,那么我应该能够编写一个 NetTcpDataServiceHost。有没有人写过 IDataServerHost?有什么建议吗?
【讨论】:
不,WCF 数据服务是建立在 REST 之上的,而 REST 本身非常紧密和完全基于 HTTP 动词,如 GET、PUT、POST 等 - 你不能通过 NetTcp 运行它们,因为它们本质上是绑定到HTTP 协议栈。
也许您还有其他选择可以减少正在传输的数据?调整你的对象 - 如果可以的话,修剪脂肪 - 同时检索一次检索的行数,以及传输的属性/数据字段的数量。这可能是您最有希望的方法。
【讨论】: