在哪些情况下你需要注意ASP.NET中的并发问题(并使用lock)?
我很好奇,例如单身人士(即使他们被认为是不好的做法 - 不要开始讨论),静态功能(你需要注意这里吗?),......?
答案 0 :(得分:2)
由于ASP.NET是一个Web框架,并且主要是无状态的,因此很少需要解决并发问题。
我唯一需要处理的是管理应用程序缓存,但这很容易通过包装.NET缓存机制的缓存管理类型来完成。
答案 1 :(得分:0)
引起我们很多悲痛的一个巨大问题是在我们的主Web服务中使用模块与类。这是在我们真正了解我们正在做什么并且已经修复之前。
使用模块的一个大问题是默认情况下,ASP工作进程的每个实例都可以看到任何模块级变量。我们传入多个数据集并对其进行操作,然后将它们返回给客户端。因为我们使用模块,所以持有这些数据集的变量会被一次发生的多次调用破坏。
在我们弄清楚如何正确加载测试我们的Web服务之前,这并没有在测试中被捕获并且难以重现。在我们准确地再现它之前,每秒需要10-20个请求。
最后,我们只是将所有模块更改为类,然后使用这些类而不是对模块的调用,这清除了这个并发问题,因为每个实例化的类在内存中都有自己的数据集副本。