asp.net-mvc - 使用 IOC 预填充 MVC 模型 - 缓存的替代方案?

标签 asp.net-mvc model ioc-container sane

我正在考虑为 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/

相关文章:

c# - MVC Model.IsValid 用于枚举

model-view-controller - Zend 框架 : translatable content inside a model

java - Swing:自定义 JSpinner 模型导致 StackOverflowError

c# - 使用 Simple Injector 的方法级属性拦截

jquery - 在页面加载时保持树状菜单打开

c# - 基于当前 URL 创建规范 URL 有什么好处?

c# - MVC 使用 CSHTML href

scala - Play 2.0 模型最佳实践

c# - 服务定位器比依赖注入(inject)更容易使用?

caSTLe-windsor - 远程通用组件的异常 "an item with the same key has already been added"