ASP.NET WebAPI-并发控制

时间:2018-08-07 07:58:42

标签: concurrency asp.net-web-api2

我正在制作一个对SQL服务器数据库执行以下操作的WebApi。 该表具有三列,即UserID(Pk),Data和TimeStamp。 在API中,我正在使用storedProc来查找最大的UserID,并使用另一个storedProc在下一个UserID中插入新数据。我的要求是解决并发性(如果2个请求同时到达并执行)。

我遇到了几种解决并发的锁定机制,但是我不确定哪种处理时间更好。我希望每天有将近10万个请求。

  1. 使用静态对象锁定
    例如

    private static readonly object lk = new object();        
    
    public void StoreData()               
    {                    
        lock (lk)                  
        {                                  
            //Calls Stored procedures                  
        }                     
    }  
    
  2. 使用交易范围

    Using(DbTransaction trans = conn.BeginTransaction(System.Data.IsolationLevel.Serializable))                                   
    {                                  
        // Calls stored procedure  
    }                   
    

请提出建议,让我知道是否还有更好的方法。

0 个答案:

没有答案