我们在C#.NET 4 ASP网站中为每个模块提供了许多应用程序参数。
参数示例:超时,公式常量,每个模块的线程限制,每次使用的费用等等。
我们所知道的以下方法中最好的是:
帮助利弊和标准。遵循的方法会有所帮助。
答案 0 :(得分:3)
我喜欢#1,将值存储在数据库中,原因如下:
修改:关于其他提议方法的其他评论: 如果该应用将位于 Web场,则所有三个非数据库选择都需要部署到所有服务器。如果涉及大量Web服务器,部署过程复杂,或者公司策略严重限制可以将更改(以及何时)更改部署到生产服务器,则这不是一件小事。
即使没有Web场,在企业生产环境中,部署更改的速度也会非常缓慢。
关于常量,我发现它们往往遍布应用程序代码。找到它们可能是一个真正的挑战。当然,如果你有集中配置常量的规则,你就不会遇到这个问题。
您的列表中还有另一种方法,即使用资源文件(.resx)。虽然这通常用于本地化,但我已经看到它用于配置值,尤其是用于存储标准消息的文本。虽然您不必重新编译应用程序以更改.resx文件,但更改它将导致应用程序重新启动。
总而言之,我更喜欢数据库方法的原因是部署速度和易用性,避免重新编译和应用程序重新启动,将数据集中在应用程序之外,以及使业务用户可以访问数据。强>
答案 1 :(得分:3)
您似乎将不同级别的设置混合在一起:
Timeout
最适合作为web.config文件的一部分,而$ charges per usage
与每用户设置更相关,应与用户一起位于数据库中。如果您决定使用web.config文件,我建议您执行以下操作以使您的web.config文件远离应用程序设置。
创建一个存储设置的文件。我通常创建一个名为应用程序的文件,如nerddinner.config
。请注意,config
扩展名用于安全原因。
在文件中添加您的设置:
<appSettings>
<add key="Test" value="Hello world"/>
</appSettings>
在web.config
文件中,创建<appSetting>
,但将其重定向到其他文件:
<configuration>
...
<appSettings configSource="nerddinner.config" />
...
</configuration>
答案 2 :(得分:2)
按优先顺序排列:
Web.config - 使用web.config的主要好处是文件更改时应用程序池会自动回收。此外,您还拥有众所周知的System.Configuration API来访问数据。当ASP.NET已经支持配置文件时,您不必使用单独的XML文件并监视它以进行更改。
常量文件 - 这与web.config具有相同的应用程序池回收利益,但是在部署新程序集时,您可能会意外地引入新错误,而不是编辑.config文件。如果你在一个不值得信任的非程序员负责配置文件的商店里工作,那么编译好的东西确实可以减少输入错误数据的机会。
数据库配置表 - 从数据库中获取配置数据比从配置文件中检索配置数据更复杂。另外,您必须小心数据锁和其他数据库的优点。但是,如果您需要在运行时编辑设置而不触发应用程序池回收(不太可能),这是您最好的选择。
XML文件 - 使用web.config更容易,但这允许您独立于web.config部署文件,因此不太可能包含潜在危险的副作用。
答案 3 :(得分:1)
好吧,选项4(web.config)比选项2(xml)更安全。无法轻松下载.config。
对于其余部分它取决于一点,没有'正确'的方式但我会使用web.config,除非有一个非常好的理由不这样做。 Web.config不只是用于“部署相关”的东西。
答案 4 :(得分:1)
1.-如果要更改参数而不必重新启动应用程序,请使用数据库配置表。更喜欢它的用法。
2.-使用 xml文件。如果您的应用程序是面向XML的。
3.-简单常量文件。这不应该有参数,常量不是参数。
4.- web.config 。使用 appSettings 项来存储不会连续更改的简单值( DBConnectionTimeout,DBCommandTimeout,PageSize等... ),使用自定义 sectionGroup 进行更复杂的操作参数。
这是一个简单的配置表定义:
CREATE TABLE ctr_group_parameters (
option varchar(50) NOT NULL,
id_group int NOT NULL,
description varchar(100) NOT NULL,
value varchar(200) NOT NULL,
PRIMARY KEY CLUSTERED (option, id_group) )
答案 5 :(得分:0)
如果这些设置不经常更新,我喜欢使用web.config。如果它们更频繁地更新,我会考虑使用数据库表。
答案 6 :(得分:0)
我将web.config用于你知道永远不会改变的东西,除非它随应用程序逻辑而改变。对于可能需要独立于代码更改的内容(如$ charge),您可能需要使用数据库。