.net 将值存储在代码中而不是web.config中

.net 将值存储在代码中而不是web.config中,.net,web-config,.net,Web Config,我最近开始开发一个相当大的应用程序,我注意到很多设置存储在静态类/属性中,而不是web.config中: public static class FormSettings { public const string HttpPostContentType = "application/x-www-form-urlencoded"; public const string HttpPostMethodValue = "POST"; } 我能看到这样做的唯一原因是,大量的设置会使将

我最近开始开发一个相当大的应用程序,我注意到很多设置存储在静态类/属性中,而不是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";
}

你有更多的东西需要编译,你有更多的依赖关系,如果不重建整个应用程序,你就不能改变它们


而且,它不是一个编程部分,应该分开。您还可以将控制器、视图、操作和dao放在一个文件中(在Web应用程序中),这样做是可行的,但您不能这样做:)

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

  • “变量”的使用频率
  • 改变的可能性有多大
  • 应用程序的哪个部分需要访问此变量
  • 您要存储哪些信息(设置)
有几种存储设置的方法:

  • Web.config(appsettings)-不建议使用这种方法来存储大量设置列表(尽管它只是名称值的集合)。此外,您不能在那里存储复杂类型(嗯……您可以,但我从未见过有人序列化对象并保存到web.config)。这种方法适合存储字符串值。这种方法的最大问题(至少对我来说)是每次在web.config中添加/更改某些内容时都会重新编译应用程序
  • 资源文件-这对内容非常有用-尤其是如果您想将其本地化。您也可以在那里存储设置。问题是,它是经过编译的,您无法轻松更新它
  • 自定义类-用于存储成本和枚举(不会经常更改),但如果您想存储可能更改的内容,这不是最佳方法
  • 自定义XML文件-我非常喜欢这种方法,因为它允许您在不重新编译应用程序的情况下对其进行更改-问题是您必须编写自己的解析器,并且非常小心-很容易错误格式化XML文件:)
  • 数据库-可本地化、远程、可由不同应用程序访问、易于更改
您可能还想知道是否需要版本控制、审计和类似的东西


希望能有所帮助。

为什么这些人希望存储在web.config中?坦白地说,我甚至不确定它们是否有价值,因为这通常是非常特定于场景的。。。你不需要让你的系统中的每一个值/文字都是一个应用程序设置或一个const……(不应该是代码>应用程序/X-www-Frave-UrnEngult/<代码>?)同样地,考虑这个特定值有多频繁的变化,以及可能伴随它的变化。(GET和POST有非常特殊的含义,不太可能随心所欲地在它们之间进行更改)。如果重新编译有那么大的不便,我会说:花点时间让部署过程变得更好。C#中的编译单元是一个程序集,而不是一个文件,因此编译器并不真正关心文件的数量或数量。