gpt4 book ai didi

c# - 工作单元模式的 .net 引用实现是什么?

转载 作者:行者123 更新时间:2023-11-30 22:49:48 24 4
gpt4 key购买 nike

Unit of Work模式是一种在上下文中跟踪您域中的所有操作并在您的(可能是)复杂逻辑完成时立即应用它们的方法。

当与 ORM(例如 NHibernate)一起使用时,使用用于底层数据库的每个操作的共享 ISession(或 Linq 2 Sql 中的 DataContext)来实现工作单元被认为是一种很好的做法。

正确实现可能很棘手,尤其是在处理服务器应用程序时,主要是 ASP.Net MVC 或 ASP.Net Webforms。

我已经涉足了 Rhino.Commons(面向 NHibernate)的实现,并且我知道其他几个,但没有很好地了解它们的优点和缺点。

最常用的是什么,以及如何将它们无缝集成到 ASP.Net MVC(或 WebForms,但我对 MVC 最感兴趣)?

最佳答案

Update: I saw this (unit-of-work-pattern-in-net) after responding.

也许 System.Transactions.Transaction 就是您所追求的。

工作单元 是多年前最初用于基于大型机的应用程序的术语。这些应用程序将执行一系列步骤。如果任何一个步骤失败,数据库将回滚到之前的“同步点”。该应用程序将在成功完成一个工作单元中的所有步骤后记录一个新的同步点。这些步骤就像一个单元。

隐喻已经发展到在 .NET 中,我们有一个 Transaction 结构。在事务范围内对可恢复数据存储执行的工作作为一个单元执行,具有 ACID 属性。这些数据存储的示例可能是:任何现代 RDBMS、像 MSMQ 这样的队列系统,或者在 Windows 上,文件系统或注册表(通过 KTM)。当事务解决时,它会提交或回滚所有事务存储上的所有操作。

我不知道 nHibernate 或 ISession 结构。但是,如果您使用的是传统意义上的“工作单元”一词,那么我认为您想要的是事务。

至于将事务集成到 ASP.NET MVC 中——不确定那是什么意思。 Transaction 不关心 UI 模型是什么,或者您是如何设计 UI 流控制的。如果您更新数据库(我想是“模型”),那么您可以选择将该更新包含在事务中。仅当您有多个更新作为单个事务的一部分时才真正有意义。另一方面,您不想让事务长时间保持打开状态。对数据库的锁定将导致争用和随之而来的吞吐量下降。

关于c# - 工作单元模式的 .net 引用实现是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/945864/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com