我们正在开发一个曾经作为单实例应用程序工作的 C# 应用程序。现在我们需要将其更改为多用户应用程序,这意味着 GUI 前端将在多个工作站上运行,同时访问单个 MS SQL Server 2008 R2 数据存储。
此应用程序管理的部分工作是基于队列的,这意味着有一个工作项池(工作项列表位于单个 SQL 表中),每个用户都可以从中“获取”下一个可用的工作项。我想要完成的是:
- 一旦工作项被用户“获取”,在第一个用户完成工作之前,其他用户不应以任何方式(包括阅读)访问它,
- 处理超时(用户在使用工作项时回家过周末)和冻结的客户端(在使用工作项时在工作站上按下重置按钮)。
我知道这是一个相当普遍的问题(更像是一项研究),所以我不期待详细的解决方案,而是有用的链接、最佳实践和/或一些关于该主题的文献。任何帮助都非常感谢,因为我完全不知道从哪里开始。