none
WsHttpBinding 启用可靠会话之后,网络传输数据量变大。 RRS feed

  • 问题

  • 最近在做批量数据查询测试,50000条基础数据查询,在不启用可靠会话的时候,使用监控软件监测到的下载量 大概在41MB左右,启用之后直接编程了205MB.不知道为什么变化这么大,大家有碰到过吗?
    附:服务器增加配置 <reliableSession enabled="true" inactivityTimeout="00:00:20"/>
         客户端编程方式配置://wSHttp.ReliableSession.Enabled = true;
                    //wSHttp.ReliableSession.Ordered = true;
                    //wSHttp.ReliableSession.InactivityTimeout = TimeSpan.FromSeconds(20);

         安全模式采用的是:SecurityMode.Message

    2020年1月6日 2:19

全部回复

  • Hi,
    据我所知,WCF的可靠性会话通过一些额外的窗口机制使得消息的接收顺序和发送顺序相同,即使因为网络丢包原因未能成功发送,也可以重新发送数据包以确保整个会话中数据包不会丢失。在这个过程中会额外发送一些数据包。并且会设置缓存区来进行流控制。至于为什么这么大,可能是网络质量不好,导致丢包,使得通讯会话中维护可靠会话成本变高。
    Abraham

    2020年1月6日 7:17
  • 谢谢你的回答,给了我一些思路,但我这边是在局域网测试的,丢包率应该没有这么高,主要是增加的量太大了,性能上无法接受。
    2020年1月7日 1:00
  • 试试Nettcpbinding。这个在局域网传输速度可以,并且支持可靠会话。
    另外,大部分情况下没有必要开启传输会话,这通常适用于会话模式。

    如果您对Visual Studio 或Microsoft Azure相关产品感兴趣,请点击此链接,或扫描以下二维码注册获取相关信息。

    https://i.stack.imgur.com/b3pWC.jpg

    Abraham

    2020年1月7日 8:49