我有一个应用程序,它有一些特定的设置,如erroremailid,maxcapcount等。 我将这些值存储在appsetting块中。任何人都可以告诉我在以下两个选项之间哪个更好(性能明智): 1.在web.config中存储设置 2.将设置存储在普通xml文件中,然后读取它们
一些指定性能差异的文章也会很好。
由于 阿什瓦尼
答案 0 :(得分:4)
重点不在于性能,为什么你认为.NET框架在读取一个xml文件和另一个xml文件时会更快?
.NET的工作方式是从应用程序配置文件中检索某些设置(不仅仅是appSettings部分),该文件对于ASP.NET为web.config
,对于可执行应用程序为exefile.exe.config
。
在Windows窗体应用程序等可执行文件中,您也可以在运行时在配置文件中保存应用程序中的设置,但在ASP.NET中即使API相同也可以调用save方法,web.config也不会因为只是在每次更改时它都以readonly的形式更新,所以IIS会重新启动Web应用程序。
没有办法想象将其他自定义设置放在另一个单独的XML文件中会更慢或更快,与web.config的优势在于您可以随时编辑此类xml文件而无需使用Web应用程序重启,因为只要你在web.config中保存更改就会发生。
静止。 .NET将从web.config获取appSettings,这样您就可以只在其他文件中放入其他类型的设置,然后您必须自己手动读取这些设置,不确定是否可以指示ConfigurationManager从另一个文件中读取。
web.config中还有许多其他部分由应用程序的其他部分使用,如果你将它们移动到某个地方,.NET将不会自动为你提供这些部分,例如默认的SMTP服务器。
答案 1 :(得分:2)
您已经拥有几个类,可以从web.config中读取设置。如果您选择使用自己的xml文件,则必须编写代码以自行读取值(不过这一点特别困难)
性能方面,web.config值被读取一次并在内存中进行调用(同样,如果你实现自己的类来从xml中读取设置,你可以自己这样做)因此它很快。
另一个区别是asp.net会自动检测web.config文件的更改并在发生这种情况时再次加载它们。因此,您可以将应用程序指向例如运行时的其他数据库,无需回收应用程序。并且应用程序将立即接收更改,而无需手动回收应用程序。< / p>
答案 2 :(得分:0)
webconfig用于不会更改的设置(可以使用内置方法使其即时更新)。
如果您有许多正在更改的设置,那么存储为单独的XML将是一个更好的解决方案,因为您可以即时更新它们。
编辑:
在找到一些新信息后,可以使用内置方法动态使用webconfig设置。 (见伊卡洛斯的答案)