none
关于服务操作并发调用的问题 RRS feed

  • 问题

  •  

    我的一个WCF服务标记了如下的服务行为:

        [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
                         ConcurrencyMode = ConcurrencyMode.Multiple,
                         Namespace = "FullTextSearch.WcfService",
                         Name = "SearchService")]

     

    ,应该是可以并发调用服务中的方法的,但我在测试中发现,当多人同时调用此服务中的某个耗时的方法时,其它人需等待上一个人调用完成才能执行,那我设置了ConcurrencyMode = ConcurrencyMode.Multiple不是没用吗?\

     

     

    请大家指教,应该怎么做才能使调用操作不会在并发时相互等待,谢谢!

    2008年11月26日 0:35

答案

  •  

    你可以把 InstanceContextMode = InstanceContextMode.PerCall 设置成 InstanceContextMode = InstanceContextMode.Single 试试!
    2008年11月29日 15:23
  • percall实例模式代表每次调用都会产生新的实例,这样就不存在并发问题

    只有当是每个会话一个实例或singleton方式的话并发模式设置为multiple才有意义啊

    2008年12月30日 8:49

全部回复

  •  

    我的一个WCF服务标记了如下的服务行为:

        [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall,
                         ConcurrencyMode = ConcurrencyMode.Multiple,
                         Namespace = "FullTextSearch.WcfService",
                         Name = "SearchService")]

     

    ,应该是可以并发调用服务中的方法的,但我在测试中发现,当多人同时调用此服务中的某个耗时的方法时,其它人需等待上一个人调用完成才能执行,那我设置了ConcurrencyMode = ConcurrencyMode.Multiple不是没用吗?\

     

     

    请大家指教,应该怎么做才能使调用操作不会在并发时相互等待,谢谢!

    2008年11月27日 7:03
  •  

    你可以把 InstanceContextMode = InstanceContextMode.PerCall 设置成 InstanceContextMode = InstanceContextMode.Single 试试!
    2008年11月29日 15:23
  • percall实例模式代表每次调用都会产生新的实例,这样就不存在并发问题

    只有当是每个会话一个实例或singleton方式的话并发模式设置为multiple才有意义啊

    2008年12月30日 8:49