none
wcf不能并发访问 RRS feed

全部回复

  • 你好!

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)]
    public class Service : IService
    

    当我们设置ServiceBehavior 的InstanceContextMode=InstanceContextMode.PerSession 和

    ConcurrencyMode= ConcurrencyMode.Multiple。WCF服务端会并发处理相同用户发来的请求。

    对于你所说的“客户端调用只两条线程,不知道为什么?” 如果你是指客户端运行的只有两条线程, 这和服务端

    并行处理是没有关系的。建议你在WCF服务端检测一下是否对同一客户端多线程并行处理。

    谢谢!

    2014年4月25日 5:59
    版主
  • 在你的代码中加入一行即可:

     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方法,其实是无法并发运行的。

    2014年4月25日 9:55
  • 直接把问题贴进来 这样方便大家讨论  谢谢

    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    微软WCF技术群:166599314

    2014年4月26日 10:51
    版主
  • 你好!

    [ServiceBehavior(InstanceContextMode=InstanceContextMode.PerSession,ConcurrencyMode=ConcurrencyMode.Multiple)]
    public class Service : IService

    当我们设置ServiceBehavior 的InstanceContextMode=InstanceContextMode.PerSession 和

    ConcurrencyMode= ConcurrencyMode.Multiple。WCF服务端会并发处理相同用户发来的请求。

    对于你所说的“客户端调用只两条线程,不知道为什么?” 如果你是指客户端运行的只有两条线程, 这和服务端

    并行处理是没有关系的。建议你在WCF服务端检测一下是否对同一客户端多线程并行处理。

    谢谢!

    服务端 还有 最大链接 最大并发会话  消息个数的限制。默认的我记得是10个。。。这个也和你的WCF版本有关系。

    Frank Xu Lei--谦卑若愚,好学若饥
    [老徐的网站]:http://www.frankxulei.com/

    [老徐的博客]:http://54peixun.com/Author/frankxulei
    微软WCF中文技术论坛
    微软WCF英文技术论坛

    微软WCF技术群:166599314

    2014年4月26日 10:53
    版主