ria服务服务器端数据结构:它在线程之间共享吗



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

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

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

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

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

我认为默认选项是ConcurrencyMode.Single

来自MSDN:"将ConcurrencyMode设置为Single指示系统将服务实例限制为一次执行一个线程,这将使您免于处理线程问题"

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

最新更新