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

Asp.net mvc 应用程序配置和设置的方法(在ASP.NET MVC中),asp.net-mvc,configuration,Asp.net Mvc,Configuration,对于CMS产品/平台,编辑和存储设置的可维护且清晰的方法是什么 我说的不是技术(connstring、nh config等)设置,而是改变产品行为的设置: 例如,这些设置是 在线支付设置 可用零件和模块 应用程序的默认行为(默认情况下显示列表项的详细信息,某些操作后显示默认登录页) 在这一点上,我们并没有一个真正的方法,所以结果是所有的设置最终都在web.config中 这可能不是最好的方法,因为这只是在一个无休止的模糊键值对列表中结束 在这种情况下,我们也无法真正预测类型(没有codeg

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

我说的不是技术(connstring、nh config等)设置,而是改变产品行为的设置:

例如,这些设置是

  • 在线支付设置
  • 可用零件和模块
  • 应用程序的默认行为(默认情况下显示列表项的详细信息,某些操作后显示默认登录页)
在这一点上,我们并没有一个真正的方法,所以结果是所有的设置最终都在web.config中

这可能不是最好的方法,因为这只是在一个无休止的模糊键值对列表中结束

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

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

我对这个问题有很多半途而废的答案,但不是一个自上而下的解决方案

我所说的自上而下:

  • 编辑设置(管理屏幕)
  • 保存设置的位置
  • 加载设置,没有太多麻烦,但仍以可维护的方式进行
  • 维护/部署特定于客户的设置
到目前为止:

  • (web.config)
  • .设置文件
  • 分贝

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

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

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

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; }
    ...
}

因为,缓存很容易。您可以获取所有设置表并将其缓存。轻松缓存,无需更多查询。

一旦有人提出意见,我也想看看一些人是如何在MVC应用程序中实现和访问这些设置的。静态设置类?连接到缓存的设置存储库?其他选择?我在P&P()中找到了一些关于该主题的高层次指导,但这里列出了相同的关注点,而不是实际的实施指南。虽然我不是在寻找银弹,但必须有一些行之有效的方法?谢谢你的回答。对于DB选项,您还有其他指导方针吗?或者分区键值组合就足够了吗?正如我所说的,如果您需要从应用程序中频繁更新这些值,DB将更合适。是的,我看到了,所以DB肯定是一个更可行的选择。但您会将这些值保存在什么样的数据库结构中:section key value。或者对于这个要求是否有经过验证的DB结构?键/值可以是一个包含两列的表,其中键是表的主键,第二列包含值。好的,我不是问如何创建键-值表,我是问这是否是一个好方法。。。例如,有一个复选框,两个选项依赖于该复选框。您是将其存储在DB结构中,还是将其逻辑保存在代码中?