Dav*_*vid 2 lifecycle castle-windsor unit-of-work repository-pattern
当我开始使用温莎时,我认为DI很简单.现在它让我越来越困惑.
作为具有单例生命周期的类,存储库让我感到震惊.在应用程序的生命周期中,我应该有一个FooRepository实例来加载和保存Foos到数据库.
但是,每个存储库都包含对UnitOfWork的引用,它执行脏检查,与数据库等一起工作.UnitOfWork具有PerWebRequest的生命周期 - 对于UnitOfWork来说单独存在没有任何意义,因为单例实例可以(例如)同时刷新多个用户会话所做的更改.
那么我有一个单例FooRepository,它持有对UnitOfWork的引用,在会话结束时会被处理掉!我甚至不确定会对存储库的行为产生什么影响,但听起来不太好.
任何人都可以用简单的英语(好吧,可能有一些代码)来解释在Web应用程序中管理Repository和UnitOfWork类的生命周期的适当方法吗?
经验法则是 - 组件不应该依赖于比它更长的其他组件.
换句话说,瞬态依赖于单例或每个Web请求组件是可以的,但不是相反.
我接近Repository的方式 - UoW场景是我的UoW是每个Web请求,但是存储库是无状态和瞬态的.
| 归档时间: |
|
| 查看次数: |
1290 次 |
| 最近记录: |