并发使用使用同一个客户端代理

在有些情况下,我们可能会在不同线程中使用同一个WCF客户端代理,如果WCF客户端支持并发,那么我们的多个调用就不用排队,假如说我们的三个调用分别花费1秒的时间,那么在支持并发调用的情况下,三个调用都返回的时间应该是1秒多一点。如果客户端代理不支持并发,或者说对调用进行了排队,那么三个调用都完成的时间应该在3秒多一点。幸运的是,WCF客户端是支持并发调用的;但是必须在调用前显式打开Channel,否则并发调用就会被排队,只有第一个调用回来,才会继续后来的调用。其中缘由是,如果没有显式打开Channel,那么WCF就会在第一次服务调用的时候自动打开Channel,这进入这个逻辑后,就会造成后续并发调用排队的情况。这是WCF的内部实现决定的,但这个实现大部分时候都不是我们想要的行为,所以,最好在使用Channel前,显式将其打开,如下:

ISimpleContract proxy = factory.CreateChannel();

((IClientChannel)proxy).Open();

//Make a call with the proxy

proxy.Hello("Hello world!");

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值