从netTcpBinding WCF服务返回的消息大于从ASMX Web服务返回的消息

时间:2014-11-26 21:23:55

标签: c# web-services wcf soap nettcpbinding

基本上,我使用一种方法创建了一个netTcpBinding WCF服务,该方法返回一组500到50000个对象的简单对象。这些对象包含一些string,int和DateTime属性。我在调用这个方法后试图测试内存消耗。我注意到当我使用经典的ASMX Web服务执行相同的测试时,在这种情况下内存消耗较少。我的理解是netTcpBinding WCF服务中的消息是二进制编码的,而它们在ASMX Web服务中是XML格式的,因此在前一种情况下消息应该更小。但是,从netTcpBinding服务返回的消息几乎是ASMX消息的2倍。知道为什么会这样吗?

1 个答案:

答案 0 :(得分:-1)

我的理解是ASMX仅基于HTTP使用SOAP协议传输数据,而WCF具有多个绑定和传输选项。

TCP / IP作为WebService和使用WebService的对象之间的流连接运行。 TCP / IP将重新传输任何丢失的数据包(所有连接将丢失一些数据包),这反过来可能导致整体传输的数据更大。

请参阅:http://msdn.microsoft.com/en-us/library/ms733769(v=vs.110).aspx

问题实际上在于你如何计算记忆丧失。您使用的是GC类还是测量请求标题的总大小?