询问者
wcf不能并发访问

问题
全部回复
-
你好!
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)] public class Service : IService
当我们设置ServiceBehavior 的InstanceContextMode=InstanceContextMode.PerSession 和
ConcurrencyMode= ConcurrencyMode.Multiple。WCF服务端会并发处理相同用户发来的请求。
对于你所说的“客户端调用只两条线程,不知道为什么?” 如果你是指客户端运行的只有两条线程, 这和服务端
并行处理是没有关系的。建议你在WCF服务端检测一下是否对同一客户端多线程并行处理。
谢谢!
-
在你的代码中加入一行即可:
static void Main(string[] args) { client.Open(); sw.Start(); ThreadPool.SetMinThreads(25, 25); for (int i = 0; i < 20; i++) { AAA a = new AAA(i); System.Threading.ThreadPool.QueueUserWorkItem(DoWork,a); } Console.ReadKey(); }
当client没有调用Open方法时,WCF会用其内部的机制来执行对client的调用,这个机制就是把每次对client的调用请求放到一个队列中,以串行的方式执行。所以,如果一个client没有显式地调用Open方法,其实是无法并发运行的。
-
直接把问题贴进来 这样方便大家讨论 谢谢
Frank Xu Lei--谦卑若愚,好学若饥
[老徐的网站]:http://www.frankxulei.com/[老徐的博客]:http://54peixun.com/Author/frankxulei
微软WCF中文技术论坛
微软WCF英文技术论坛
微软WCF技术群:166599314 -
你好!
[ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)] public class Service : IService
当我们设置ServiceBehavior 的InstanceContextMode=InstanceContextMode.PerSession 和
ConcurrencyMode= ConcurrencyMode.Multiple。WCF服务端会并发处理相同用户发来的请求。
对于你所说的“客户端调用只两条线程,不知道为什么?” 如果你是指客户端运行的只有两条线程, 这和服务端
并行处理是没有关系的。建议你在WCF服务端检测一下是否对同一客户端多线程并行处理。
谢谢!
Frank Xu Lei--谦卑若愚,好学若饥
[老徐的网站]:http://www.frankxulei.com/[老徐的博客]:http://54peixun.com/Author/frankxulei
微软WCF中文技术论坛
微软WCF英文技术论坛
微软WCF技术群:166599314