【问题标题】:Approaches for Application Configuration and Settings (in ASP.NET MVC)应用程序配置和设置的方法(在 ASP.NET MVC 中)
【发布时间】:2010-10-29 13:25:55
【问题描述】:

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

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

这些设置例如

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

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

这可能不是最好的方法,因为这只是以无穷无尽的模糊键值对列表结束...

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

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

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

我的意思是自上而下:

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

到目前为止的选择:

  • (web).config
  • .settings 文件
  • 数据库

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

【问题讨论】:

  • 收到一些意见后,我还想看看有些人如何在他们的 MVC 应用程序中实现和访问这些设置。静态设置类?设置存储库连接到缓存?其他选择?
  • 我在 P&P (apparchguide.codeplex.com) 中找到了有关该主题的一些非常高级的指导,但那里列出了相同的问题,而不是实际的实施指南。虽然我不是在寻找灵丹妙药,但必须有一些行之有效的方法?

标签: asp.net-mvc configuration


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。您对 DB 选项有更多指导吗?或者节-键-值组合就足够了吗?
  • 正如我所说,如果您需要经常从应用程序中更新这些值,那么 DB 会更合适。
  • 是的,我看到了,所以数据库肯定是一个更可行的选择。但是您会将这些值保存在什么数据库结构中:section-key-value。或者是否有经过验证的数据库结构可以满足此要求?
  • key/value 可以是一个有两列的表,其中键是表的主键,第二列包含值。
  • 好吧,我不是在问如何创建一个键值表,我是在问这是否是一个好方法......例如,有一个复选框和2 个选项取决于该复选框。您是将其存储在数据库结构中还是仅将该逻辑保留在代码中?
【解决方案2】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2017-01-24
    • 2015-06-12
    • 2011-04-22
    • 1970-01-01
    相关资源
    最近更新 更多