我读了一些关于 SqlCacheDependency 的文章。我认为这是更新缓存的一种非常酷的方式,但如果我的应用程序是 n 层架构,我不确定如何处理这项技术。
如果我的程序是一个小型 web 应用程序,这是否有用,或者还有一种方法可以用于大型 n 层架构?
我读了一些关于 SqlCacheDependency 的文章。我认为这是更新缓存的一种非常酷的方式,但如果我的应用程序是 n 层架构,我不确定如何处理这项技术。
如果我的程序是一个小型 web 应用程序,这是否有用,或者还有一种方法可以用于大型 n 层架构?
您可以创建自己的 ICacheDependency 接口并使用工厂类为您提供适当的对象。这样,您的 DAL 或 BL 都不需要引用 System.Web 命名空间。您可以将这个工厂类放在一个公共层中,并在 UI 层中引用它。
MS Petshop 4 使用了类似的东西,你可能想要遵循它。
在这种情况下,您需要让 DAL 返回一个派生自 CacheDependency 抽象类的对象,该对象与 SqlCacheDependency 执行相同的操作,但针对您的 DAL 进行了优化。
这当然是关注点分离的失败,但如果你需要依赖,这是最好的方法。