管理Azure云服务上的用户操作同步

时间:2013-12-30 08:19:44

标签: c# entity-framework azure synchronization

我的.net4.5 WebRole项目在本地IIS(开发目的)和Azure Cloud service上运行。

此项目正在处理来自用户的请求。对一个用户的请求可以来自许多客户类型,例如WWW(托管在IISAzure上的另一个项目),android appwindows application。有一个层将每个请求类型转换为一些以User为参数的一般请求。 User是一个实体。

与数据库(MS SQL EXPRESSAzureSQL)进行通信我正在使用EntityFramework

问题在于同步。我想对每个用户进行同步请求处理。可能有成千上万的用户,有些用户不活跃,有些用户几乎没有活动,有些用户一直活跃。我想避免一些互斥引起的减速。

这段代码可能有效,但速度极慢:

private Object allUsersMutex = new Object();
private Dictionary<long, Object> perUserMutex = new Dictionary<long, Object>();

private Object getUserMutex (User user) {
    synchronized (allUsersMutex) {
        if (!perUserMutex.containsKey(user.ID)) {
            perUserMutex[user.ID] = new Object();
        }
        return perUserMutex[user.ID];
    }
}

然后,在所有方法中,我可以通过此方法获取互斥并在其上进行同步。

有没有任何机制帮助这样的事情?

0 个答案:

没有答案