WCF ConcurrencyMode.Multiple

时间:2012-04-27 13:43:53

标签: c# wcf

我不知道如何判断我是对还是错,所以你的帮助会很棒。

A。根据我的理解,IsOneWay = true =客户端不想等待方法结束。所以服务会在他想要的时候执行这个方法。但是,在某些情况下,服务是否会使用多线程来执行该方法?

B 当我使用ConcurrencyMode.Multiple时,使用IsOneWay = true& IsOneWay =假。

2 个答案:

答案 0 :(得分:3)

ConcurrencyMode和Messaging Pattern没有直接关系。

IsOneWay 会影响客户端和服务器的交互方式。

ConcurrencyMode 是服务器端问题,客户端不知道此设置。

答案 1 :(得分:1)

来自:http://msdn.microsoft.com/en-us/library/ms751496.aspx

  

根据定义,HTTP是请求/响应协议;当请求是   制作,回复。即使对于单向服务也是如此   通过HTTP公开的操作。当调用该操作时,   service在服务之前返回HTTP状态代码202   操作已执行。此状态代码表示请求具有   已被接受处理,但处理尚未进行   完成。调用操作的客户端阻塞它   从服务接收202响应。这可能会导致一些   使用a发送多个单向消息时的意外行为   配置为使用会话的绑定。 wsHttpBinding绑定   此示例中使用的配置为默认使用会话   建立安全背景。默认情况下,会话中的消息是   保证按照发送顺序到达。因为   这样,当发送会话中的第二条消息时,它不会发送   处理直到第一条消息被处理完毕。的结果   这是客户端没有收到202的响应   消息,直到处理上一条消息为止   完成。因此,客户似乎在每个后续阻止   操作电话。为避免此行为,此示例配置   运行时将消息并发地分派给不同的实例   处理。该示例将InstanceContextMode设置为PerCall,以便   每条消息都可以由不同的实例处理。 ConcurrencyMode   设置为“多个”以允许多个线程分派消息   一次。