我正在考虑为 ASP.NET MVC 站点实现简单的 CMS 实现策略。简单的部分是,我抽象了各种部分 View 中使用的值,所有这些都是共享相同 CSS 布局的用户控件。因此,我将自定义值填充到数据库中的相同部分 View 中,我可以偶尔使用 CRUD 修改它们。
不那么简单的部分是对标准 UI 元素作为 SQL 表行的相当高效和逻辑的抽象。但先把这个放在一边......
我知道我将使用一些 super 模型将部分 View 的预配置模型传递给每个页面。但如果它们是预先配置和预先加载的,那么在调用之前将它们放在哪里?
让我觉得我这样做有点疯狂的是本质上静态数据的加载时间。但话又说回来,SharePoint!
那么(我认为)为什么不将其全部加载到 application_start 中呢?为什么不?我回答!然后我开始使用 IoC 来做一些事情,即使是一个聪明的人也认为这可能是一个明智的想法,谷歌不会返回任何一个指向良好信息的链接。
那么除了在构造函数中放置存储库调用之外,是否有人有更好的想法使用 IoC 容器从数据库填充模型?
然后,有人认为将这些静态数据模型放入 Controller 可访问的 IoC 容器中是一个愚蠢的想法吗?
谢谢
S。机械诺
最佳答案
遵循几条坚实的原则,让你的工作尽可能专一。对于半静态数据,首先创建一个加载此数据的存储库。这将为每个请求加载数据。它可以工作,但可能性能不太好,但现在您已经有了所需的实现。
接下来您可以做的就是用缓存存储库装饰第一个存储库。此 CachingRepository 只会从装饰后的 Repository 中读取一次,然后将数据保留在内存中。
因此,您尊重关注点分离。
如果将 CachingRepository 实例的范围设置为 Singleton,它将一直存在,直到应用程序被回收为止,从而有效地将缓存的数据保留在内存中。
关于asp.net-mvc - 使用 IOC 预填充 MVC 模型 - 缓存的替代方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1859444/