0

我最近开始研究一个相当大的应用程序,我注意到很多设置都存储在静态类/属性中,而不是 web.config 中:

public static class FormSettings
{
    public const string HttpPostContentType = "application/x-www-form-urlencoded";
    public const string HttpPostMethodValue = "POST";
}

我可以看到这样做的唯一原因是由于大量设置会使将它们存储在单个文件中变得笨拙。

除了在不重新编译代码的情况下无法更改这些设置之外,这种方法还有其他缺点吗?

编辑:

好的,上面的例子不是最好的:

public static class ThirdPartyApiSettings
{
    public const string EmployeeXmlNodeName = "Employee";
    public const string FirstNameXmlNodeName = "FirstName";
}
4

2 回答 2

2

存储设置实际上取决于应用程序和场景。使用您的方法,最大的问题是所有内容都是硬编码的。正如上面提到的那样,您必须考虑:

  • “变量”的使用频率
  • 改变的可能性有多大
  • 应用程序的哪一部分需要访问这个变量
  • 你要存储什么信息(设置)

有几种存储设置的方法:

  • Web.config (appsettings) - 不推荐使用这种方法来存储大量设置(尽管它只是名称-值的集合)。你也不能真正在那里存储复杂的类型(嗯......你可以,但我从未见过有人序列化对象并保存到 web.config 中)。这种方式有利于存储字符串值。这种方法的最大问题(至少对我而言)是每次在 web.config 中添加/更改某些内容时都重新编译应用程序。
  • 资源文件——这对于内容来说非常有用——尤其是如果你想本地化它。您也可以在那里存储设置。问题在于 - 它已编译,您无法轻松更新它。
  • 自定义类 - 适合存储成本和枚举(不会经常更改),但如果您想存储可能会更改的内容,这不是最好的方法。
  • 自定义 XML 文件 - 我真的很喜欢这种方法,因为它允许您在不重新编译应用程序的情况下更改它 - 问题是您必须编写自己的解析器并且非常小心 - 很容易错过 xml 文件的格式 :)
  • 数据库 - 可本地化、远程、可被不同应用程序访问、易于更改

您可能还想考虑是否需要版本控制、审计和类似的东西。

希望能帮助到你。

于 2012-04-13T10:11:00.957 回答
0

你有更多的东西要编译,你有更多的依赖,你不能在不重建整个应用程序的情况下改变它们。

此外,它不是编程部分,应该分开。您也可以将您的控制器、视图、操作和 dao 放在一个文件中(在 web 应用程序中),它会起作用,但您只是不这样做:)

于 2012-04-13T08:42:17.717 回答