我在审查一个.NET项目,并且我发现一些相当繁重的.ini文件用于配置。我更愿意使用app.config文件,但是在我开始讨论这个问题之前,我想知道是否有任何有效的理由可以通过app.config来支持.ini文件?App.config与.ini文件
回答
那么,平均而言,.INI文件可能更加紧凑,并且对人类而言更具可读性。 XML阅读起来有点痛苦,而且它非常冗长。
但是,app.config当然是在.NET中支持的标准.NET配置机制,并且有很多挂钩和方法来执行操作。如果你使用.INI文件,你基本上是“一路碾压你自己”。经典案例“重塑车轮”。
然后再说一遍:这是一个在.NET之前开始其生活的项目吗?还是现有的.NET应用程序的端口,其中.INI文件是要走的路?我认为.INI文件没有任何内在的错误 - 它们只是不再在.NET中真正支持,而且你自己扩展它们,处理它们等等。而且它肯定是一个“stumper”如果你需要在板上提供外部帮助 - 几乎没有任何.NET开发人员会接触到.INI文件,而.NET配置系统已经广为人知和理解。
该项目相对较新,但.ini文件似乎是过去项目中的某些开发人员遗留下来的不良习惯。是的,这是车轮改造的经典案例。 :) 我不确定我是否同意.ini更具人性化可读性。使用.config文件,VS和智能感知编辑轻而易举。我希望团队创建一个很好的模式来支持配置设置。 感谢您的回答。 – 2010-03-19 08:53:52
好吧,如果这只是一个坏习惯,我会尝试改变:-)尝试确定为什么app.config优越 - 在.NET中支持更好,可以编写XML模式强制节组等等,以及希望能成为某些开发者需要最终放弃超过10年历史的技术,并开始尝试新事物的开始! – 2010-03-19 09:45:42
个人而言,我从来没有用户的.ini/XML配置文件,任何超过所有的值装载到一个单什么的,然后用它们运行时是这样的...
话虽这么说,我坚信,你应该看看数据的种类和数据的使用情况。如果数据位于应用程序的设置和配置方面,那么我相信app.config文件是保存这些设置的正确位置。
如果另一方面数据是关心加载与应用程序内容有关的项目,图像或其他资源,那么我相信.ini(没有人使用.ini文件了吗?我在考虑一个.xml文件用于存储这些信息)。简而言之:根据域和上下文来划分要存储的数据的内容。
Ini文件在我的书中相当不错。问题是GetPrivateProfileString()和堂兄弟。 Appcompat已经将它变成了一个API函数的一个丑陋的噱头。检索单个ini值需要大约50毫秒,这是现代PC上的一段时间。
但是最大的问题是你无法控制INI文件的编码。 Windows将始终使用系统代码页来解释字符串。只要你的程序没有远离你的办公桌,这只是个好办法。如果确实如此,当您不将INI文件中使用的字符集限制为ASCII时,会产生乱码的严重风险。
XML没有这个问题,它很好的支持.NET框架。无论是通过使用设置还是自己管理配置。
- 1. C#Windows服务 - 从ini或App.config文件读取
- 2. C#App.config与设置文件
- 3. Ini文件opengin
- 4. PHP与i'.ini'文件错误报告
- 5. 如何解析ini文件与升压
- 6. 保存ini文件与评论
- 7. 在app.config文件
- 8. C#App.Config文件
- 9. .NET app.config文件
- 10. 加密.ini文件
- 11. 读/写“INI”文件
- 12. 修改INI文件
- 13. 解析.ini文件
- 14. 创建ini文件
- 15. strpos:在.ini文件
- 16. ini文件正确
- 17. mysql vs ini文件?
- 18. INI文件在PHP
- 19. 的System.Web与ClientAuthenticationMembershipProvider app.config文件默认
- 20. 读INI文件时INI文件不存在
- 21. 加密app.config文件
- 22. 缺少app.config文件?
- 23. 多个App.Config文件
- 24. 多个app.config文件
- 25. 批处理文件加载ini文件与评论
- 26. 使用app.config与Interop控件
- 27. PHP INI文件不加载
- 28. ini文件部分到stringgrid
- 29. 获取从INI文件
- 30. PHP,库MySQLi和ini文件
Raymond Chen有一篇有趣的文章,介绍ini和xml配置之间的区别,以及为什么ini最初弃用于注册表。见 - http://blogs.msdn.com/oldnewthing/archive/2007/11/26/6523907.aspx – 2010-03-19 08:47:44
感谢您的链接,这是有趣的阅读。而上述项目也使用注册表获取许可信息!配置到处都是。 :) – 2010-03-19 08:56:01
没有人在重新安装过程中/为不同的用户等提及设置的持久性。应该指出,app.config文件与应用程序绑定,除非您在重新安装/安装/更新等,你可能会失去你所有的设置!Ini/xml文件可以保持不受影响 – Simon 2013-03-09 02:40:07