App.config与.ini文件

11

我正在审查一个.NET项目,发现它在配置方面使用了相当多的.ini文件。我更喜欢使用app.config文件进行配置,但在我向开发人员提出这个问题之前,我想知道是否有任何有效的理由支持.ini文件而不是app.config文件?

我正在审查一个.NET项目,其中使用了许多.ini文件来进行配置。虽然我更喜欢使用app.config文件进行配置,但在我向开发人员提出这个问题之前,我想知道是否有任何有效的理由支持使用.ini文件而不是app.config文件。请注意保留原文中的HTML标签格式。

2
Raymond Chen在他的博客中写了一篇有趣的文章,讲述了ini和xml配置文件之间的区别,以及为什么ini最初被弃用,转而使用注册表。详情请见:http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx - Simon P Stevens
1
谢谢提供链接,很有趣的阅读。而且上述项目还使用注册表来存储许可信息!配置到处都是。 :) - Jakob Gade
没有人提到在重新安装/不同用户等情况下设置的持久性。应该指出,app.config文件与应用程序绑定,除非在重新安装/更新等操作时专门处理此问题,否则可能会丢失所有设置!Ini/xml文件可以保持不受影响。 - Simon
4个回答

6
平均而言,.INI文件可能更加紧凑且对人类更易读。XML阅读起来有些困难,而且冗长。
然而,app.config当然是标准的.NET配置机制,在.NET中得到支持,并具有许多挂钩和方法来完成任务。如果您选择使用.INI文件,则基本上要“自己动手”。这是“重新发明轮子”的典型案例。
另一方面:这是在.NET之前启动的项目吗?还是现有的预-.NET Windows应用程序的移植,其中.INI文件是正确的选择?
我认为.INI文件并没有本质上的问题-它们在.NET中不再得到支持,您需要自己扩展、处理等。如果您需要外部帮助,这肯定是一个“难题”-几乎没有.NET开发人员接触过.INI文件,而.NET配置系统则已经被广泛了解和理解。

1
这个项目相对较新,但是一些开发人员从以前的项目中带来了不好的习惯,比如使用 .ini 文件。是的,这是一个经典的重复造轮子的案例。 :)
我不确定我同意 .ini 文件更易于人类阅读的说法。使用 .config 文件,VS 和智能感知编辑都非常容易。我希望团队创建一个漂亮的模式来支持配置设置。
谢谢你的回答。
- Jakob Gade
好的,如果这只是一个坏习惯,我会尝试改变它 :-) 尝试确定为什么 app.config 更优秀 - 在 .NET 中有更好的支持,能够编写强制执行 XML 模式的部分组等等 - 这将帮助某些开发人员最终放弃超过 10 年的旧技术,并转向一些更新的东西! - marc_s

3
Ini文件在我的观点中还可以接受。问题在于GetPrivateProfileString()及其类似函数。Appcompat已将其转变为一个丑陋的API函数。获取单个ini值需要约50毫秒,这在现代PC上是一座大山。
但最大的问题是您无法控制INI文件的编码。Windows将始终使用系统代码页来解释字符串。只要您的程序不远离您的桌子,这还可以。如果它确实这样做了,当您未将INI文件中使用的字符集限制为ASCII时,它就有严重的产生乱码的风险。
XML没有这个问题,它在.NET框架中得到很好的支持。可以通过使用设置或自行管理配置来实现。

1

个人而言,我从不使用 .ini /xml 配置文件来做更多的事情,只是将所有值加载到单例中,然后像这样在运行时使用它们...

话虽如此,我坚信您应该考虑数据的类型和使用方式。如果数据是关于应用程序设置和配置的上下文,则认为 app.config 文件是保存这些设置的正确位置。

另一方面,如果数据涉及加载项目、图像或其他与应用程序内容相关的资源,则我认为 .ini 文件(还有人使用 .ini 文件吗?我想使用 .xml 文件来存储这些信息)。简而言之:根据域和上下文对存储的数据内容进行分段。


0

INI文件适用于多平台应用程序(例如Linux和Windows),其中客户可能会直接编辑配置参数,并且您希望使用更加用户友好/可识别的文件名而不需要额外的努力。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接