如何优化nettcp绑定的流量? 一个数据对象在内存中占用300-1000字节。我需要转移近1 000 000个物体。所以我可以创建超过1 Gb的流量。字段名称的长度是否会影响序列化对象大小(即xml序列化程序在xml元素中使用名称)? 我希望默认使用二进制序列化程序? 可以在1Gb大小,总时间包+网络传输+解包时启用gzip压缩吗? 可能在这种情况下更有效地创建自定义序列化器吗?
答案 0 :(得分:0)
默认情况下,net.tcp绑定将使用Microsoft二进制XML编码,这取决于您使用的XML标记的长度,但仅列出一次。因此,如果您在一个WCF消息中传递所有1000000个对象,则所有标记只会出现一次。
但更重要的是WCF默认使用缓冲模式。这意味着你将所有对象都存储在内存中(1 Gb),然后WCF将它们序列化为某些东西 - 让我们假设这是另一个1 Gb。如果您使用可靠的会话,则在收到来自接收方的确认之前,将在存储器中再保留一份消息副本。
因此,不仅流量很重要,而且本地内存占用也很大。