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

时间:2013-08-19 16:02:49

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

假设我有ria服务DomainDataService类:

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

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

1 个答案:

答案 0 :(得分:2)

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

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

我认为默认选项为ConcurrencyMode.Single

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

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