你可以在NetTcpBinding中使用WCF数据服务(ne OData,ne Astoria,ne ADO.NET Data Service)吗?

时间:2010-09-03 19:43:48

标签: wcf wcf-data-services odata nettcpbinding

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

这甚至可能吗?可取?

2 个答案:

答案 0 :(得分:4)

在我自己研究这个问题时,我遇到了MSDN article on Self-Hosted WCF Data Services。本文指出您可以使用DataServiceHost来托管服务,该服务仍然需要HTTP(它来自WebServiceHost)。

但您也可以使用IDataServiceHost滚动自己的主机。以下是MSDN文章的摘录:

  

对于WCF主机的情况   实施过于严格,你   还可以为a定义自定义主机   数据服务。任何课程   实现IDataServiceHost接口   可以用作网络主机   数据服务。自定义主机必须   实现IDataServiceHost   界面,并能够处理   履行基本职责   数据服务主持人:

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

这篇文章似乎表明MS已经从网络接口职责中正确地分割了数据服务职责。如果是这样,那么我应该能够写一个NetTcpDataServiceHost。有没有人写过IDataServerHost?有什么建议吗?

答案 1 :(得分:3)

不,WCF数据服务是建立在REST之上的,而且REST本身非常密切且完全基于HTTP动词,如GET,PUT,POST等。 - 你不能通过NetTcp运行它们,因为它们本质上与HTTP协议栈。

也许还有其他选项可以减少传输的数据?调整你的对象 - 如果可以的话,修剪脂肪 - 同时检查一次检索的行数,以及传输的属性/数据字段的数量。这可能是你最有前途的方法。