假设具有ServiceBehavior.ConcurrencyMode = Single的WCF服务。
服务何时开始阻止并发呼叫?
例如,假设我们有两个客户端:慢速和快速。
At time 0 Slow starts a slow service call that includes a huge chunk of data.
At time 1 Fast makes a fast service call.
At time 2 the slow data finally arrives and the service code is executed on the server.
假设在WCF中配置的缓冲区大于庞大的块,哪个调用将首先执行?
换句话说,当在服务器端收到所有呼叫数据或客户端发起呼叫时阻塞是否开始?
在数据传输期间或仅在代码执行期间,服务是否被阻止?
答案 0 :(得分:0)
除非您将InstanceContextMode
配置为Single
,否则两个呼叫将同时执行。因此,假设您InstanceContextMode
设置为Single
。
我没有测试它,但我会期待这样的行为。并发模式是服务行为,因此一旦解析了服务实例/实例上下文就会发生这种情况。在以流模式接收整个消息之后发生的缓冲模式中,它应该在接收到消息头之后发生。因此,在缓冲传输的情况下,我希望首先处理快速客户端,并且在流传输的情况下,它取决于是否已经接收到来自慢速客户端的消息头。
但正如我之前所写,这只是我的期望。