【问题标题】:ria services server side data structure: is it shared between threadsria services 服务器端数据结构:是否在线程之间共享
【发布时间】:2013-08-19 16:02:48
【问题描述】:

所以假设我有 ria 服务 DomainDataService 类:

public partial class SomeService : LinqToEntitiesDomainService<SomeEntities>
{
    List<string> list = new List<string>();
    public IQueryable<SomeEntity> GetSomeEntity()
    {
       list.Add("test");
       ...
    }
}

有一个全局变量listGetSomeEntity 方法显然可以同时调用。问题:list 是否在并行 GetSomeEntity 调用之间共享,即我必须用锁保护它吗? 我想这同样适用于所有 asp.net 服务器端风格,例如 Web 服务(或不是?)。

【问题讨论】:

    标签: c# asp.net silverlight wcf-ria-services ria


    【解决方案1】:

    它应该取决于服务的上下文模式。你可以通过一个属性来控制它:

    [EnableClientAccess()]
    [ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
    public partial class SomeService : LinqToEntitiesDomainService<SomeEntities>
    {
    

    我相信默认选项是ConcurrencyMode.Single

    来自MSDN:“将 ConcurrencyMode 设置为 Single 指示系统将服务实例一次限制为一个执行线程,这样您就无需处理线程问题”

    因此,为了回答您的问题,全局 list 不会在对您的服务的调用之间共享(除非您调用的是静态的)。

    【讨论】:

      猜你喜欢
      • 2010-12-13
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 1970-01-01
      • 2018-07-30
      • 2020-01-26
      • 1970-01-01
      • 2013-01-05
      相关资源
      最近更新 更多