我有一个我在 MVC 3 中构建的系统,该系统目前提供一个年度提交周期,其中系统通过与存储在 web.config 作为 AppSettings 的日期相关的七个步骤进行。然而,每年,为了适应最终用户,我总是不得不在之前的步骤之间来回滚动系统。我想让管理员无需联系开发人员即可控制系统状态。做这个的最好方式是什么?
我计划构建一个具有适当验证的页面,让管理员设置日期。我已经考虑了如何存储这些日期的几个选项,但它们似乎都不正确。我们的整个权限系统都使用这些日期,并且页面上的各种文本位根据我们当前所处的时期打开和关闭。
到目前为止,我提出了两个选择:
选项 1:创建数据库表——这是我的第一个想法。我已经在 global.asax 中的 MvcApplication 类上设置了属性,并将它们从数据库中提取出来。使用惰性加载器,我可以在第一次需要时设置属性。但是,当它们在数据库中更改时,我没有办法强制系统“重置”并读取日期更改。如果我在 Begin_Request() 上执行此操作,我会不断打开连接并重置 Web 浏览器在服务器上打开的每个文件的属性,无论它是否是静态内容。
每次我需要其中一个日期时,我都可以直接从数据库中获取日期,但随后我不得不重做很多功能以减少重复的数据库调用。我想缓存每个请求的日期,只在需要时才拉取它们,
选项 2:允许通过应用程序编辑配置文件– 我已经查看了如何拆分 web.config 文件,以便我可以拥有一个仅包含 appSettings 的单独文件。然后我可以从控制器操作更新新的配置文件。我认为这会很好地工作,并且不需要我重写任何现有功能,但感觉就像我会在代码中引入一个糟糕的设计模式。