应用程序配置和设置的方法(在ASP.NET MVC中)

时间:2010-10-29 13:25:55

标签: asp.net-mvc configuration

对于CMS产品/平台,编辑和存储设置的可维护性和清晰度是什么?

我不是在谈论技术(connstring,nh config,...)设置,而是改变产品行为的设置:

这些设置例如是

  • 在线支付设置
  • 可用部件和模块
  • 应用程序的默认行为(默认显示列表项的详细信息,某些操作后的默认登录页面)
  • ...

此时我们并没有真正的方法,因此结果是所有设置都以web.config结束。

这可能不是最好的方法,因为这只是一个无数的模糊键值对的结尾......

在这种情况下,我们也无法真正预测到类型(没有codegen),因此复选框或预定义选项的设置很难管理。

另一个选择是为每个设置(类型)创建所需的表,并将其用作核心设置系统,但这对每个客户来说将更难部署和管理。

我对这个问题有很多半答案但不是真正的自上而下的解决方案......

我的意思是自上而下:

  • 编辑设置(管理界面)
  • 在何处保留设置
  • 加载设置,没有太多麻烦,但仍以可维护的方式
  • 维护/部署客户特定设置

目前为止的选择:

  • (网络)的.config
  • .settings files
  • DB

但这些都是关键价值方法......还有其他建议吗?

2 个答案:

答案 0 :(得分:1)

您可以编写一个custom configuration section,它允许您在配置文件中存储比键/值设置更多的内容。这就是说配置文件是为只读设置而设计的。如果您需要使用管理屏幕编辑功能,那么最好使用数据库。将此信息存储在文件中也是可能的,但由于这是一个多线程应用程序,因此您需要正确地同步对这些文件的访问,这很快就会变得很麻烦。

答案 1 :(得分:0)

基本上你可以创建设置表。包括名称和值字段。你可以存储设置。

public class Setting : Entity
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Value { get; set; }
}

表格中会有很多行设置。此结构基本上是键值对使用。但!我的建议使用下面的结构。

public class Setting : Entity
{
    public int Id { get; set; }
    public string SiteName { get; set; }
    public string ProductsPerPage { get; set; }
    ...
}

因为缓存很容易。您可以获取所有设置表并只缓存它。轻松缓存,不再需要查询。