-3

几天前我开始想我可以编写一个简单的工具包来锁定(限制访问)和解锁我们应用程序中的资源。因此,例如通过打开一个项目,它会以某种方式被该用户锁定,然后当下一个人来打开它时,他们将无法修改它。或者一个操作需要写入某些文件并从某些文件中读取,因此在执行操作之前它会锁定它们(在数据库中的某些元数据记录中)。

现在我已经完成了相当多的设计,很明显实际上有很多小问题:我现在处于描述我需要的功能的情况下我定义了 5 种不同类型的锁(所有者, write, read-only, delete, no-delete) 并且需要在应用于同一对象和父子层次结构的上下文中指定它们之间的关系。

这将转化为大量代码来维护和测试,鉴于此,我想知道是否有任何可用的免费 .NET 库可以开箱即用地执行此类操作(我下周圣诞节假期休息,我认为其他开发人员之一插入库而不是完成我的takelit并将其插入应用程序会更容易)。

我们正在使用 C# .NET 和 SQL Server 2008 R2。

更新:资源是指数据库中元数据引用的文件。

4

2 回答 2

0

很有可能你过度设计了。数据库意味着可以同时访问,并使用事务进行关键相互依赖的操作。您应该重新考虑您的数据流并允许多个用户一起工作。例如,如果用户下载了他们正在处理的项目的各个部分,然后一次全部提交。当然可能需要一些合并。根据您的任务,您还可以使用版本控制系统 (SharpSVN) 代替 DB 或与 DB 一起使用

于 2012-12-13T15:24:32.487 回答
0

您正在描述一种悲观的锁定策略;这最好通过将您的代码加入数据库事务(也称为分布式事务)来处理,这样您的代码就可以提交/回滚事务,从而释放任何锁。这可以使用 COM+ 事务来实现。但是,使用乐观锁定策略可能会更好。有关更详细的答案,请参见此处。

于 2012-12-13T15:36:37.807 回答