关于配置文件权衡,.config VS .xml
众所周知,程序的灵活性有一部分就是“配”出来了。
当然,config文件从来就没有让.NET的同学轻松过,至少,我觉得很麻烦。
1.config
.NET的配置文件方便,其实最方便的是appSettings
<appSettings>
<add key="apiKey" value = "8asdf9as9d2asd" />
</appSettings>
而自定义配置比较繁琐,要熟悉.NET的配置文件体系,才能了然于胸。
当然,奉献精神的人们提供了一个DSL杰作——ConfigurationSectionDesigner。
从某种程度上来说,我对.NET的自定义配置是矛盾的:
我喜欢它,因为严格,不可修改;
我不喜欢它,往往修改设计的时候,就比较麻烦,要该好多引用。
2.XML
XML很灵活,但我又惧怕其复杂的API,截止到使用Linq To Xml之前,我都一直抱着这种态度。
甚至多次想写一个XMLHelper,结果每次看到一堆的定义和API,就傻了。
这里,是Linq To Xml让我改变了对XML的态度。
主要API:
1)加载一个文档;
XDocument doc = XDocument .Load(path);
或
XElement doc = XElement .Load(path);
区别就是,XElement加载之后,当做一个元素;而XDocument(当做一个文档)有一个典型的属性——Root。
2)查找元素;
提供了良好的树形API,给人很清晰的感觉。
doc.Elements("yourName") ; //查找元素集合
doc.Element("yourName") ; //查找单个元素
doc.Descendants("yourName"); //查找子孙元素
当然,后面加上Linq的扩展,Where,Select等Lambda方式,是很自然的事情。
3)修改元素,增加元素,删除元素;
SetValue,Add,AddAfterSelf,AddBeforeSelf
RemoveAll
XElement root = new XElement("Categories",
new XElement("Category",
new XAttribute("CategoryID", ""),
new XElement("CategoryName", "Beverages"),
new XElement("Description", "Soft drinks, coffees, teas, beers, and ales")
)
);
root.Element("Category").Add(new XAttribute("AddDate", DateTime.Now.ToShortDateString()));
root.Save(path);
xml文件的读写是如此地方便。
3.选择
总体上来说,XML比config文件更加灵活。
在config应对各种复杂配置无力(修改代码很无奈)时,我倾向于使用XML进行配置;
在配置很固定时,很简单时,我很倾向使用config进行配置。
使用XML文件时,有个VS小提示——选中XML文件,右键,属性,输出目录,选择“始终复制”。
关于配置文件权衡,.config VS .xml的更多相关文章
- Spring配置文件详解 - applicationContext.xml文件路径
spring的配置文件applicationContext.xml的默认地址在WEB-INF下,只要在web.xml中加入代码 org.springframework.web.context.Cont ...
- Spring配置文件详解 – applicationContext.xml文件路径
Spring配置文件详解 – applicationContext.xml文件路径 Java编程 spring的配置文件applicationContext.xml的默 ...
- 配置文件App.config的使用以及Readonly与Const的对比
以前我们学习的时候都把连接数据库的连接字符串写在一个类中,因为我们的数据库都在自己电脑上.如果更换数据库地址,需要更改这个类,然后重新编译才可以连接到数据库.现在我们需要将连接字符串当道一个文件中,然 ...
- C#的配置文件App.config使用总结 - 转
http://blog.csdn.net/celte/article/details/9749389 首先,先说明,我使用的app.config 配置文件的格式如下: <?xml version ...
- IOC容器Unity的使用及独立配置文件Unity.Config
[本段摘录自:IOC容器Unity 使用http://blog.csdn.net/gdjlc/article/details/8695266] 面向接口实现有很多好处,可以提供不同灵活的子类实现,增加 ...
- winform程序读取和改写配置文件App.config元素的值
winform程序读取和改写配置文件App.config元素的值 2016-05-16 17:49 by newbirth, 2412 阅读, 0 评论, 收藏, 编辑 1 2 3 4 5 6 7 & ...
- C#的配置文件App.config使用总结
应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...
- C#读取配置文件app.config
应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是configuration. ...
- ASP.NET配置文件machine.config与性能[转]
转 http://www.cnblogs.com/chenlulouis/archive/2010/05/26/1744261.html http://www.cnblogs.com/zhangron ...
- 配置文件——App.config文件读取和修改
作为普通的xml文件读取的话,首先就要知道怎么寻找文件的路径.我们知道一般配置文件就在跟可执行exe文件在同一目录下,且仅仅在名称后面添加了一个.config 因此,可以用Application.Ex ...
随机推荐
- 小白科普之JavaScript的数组
一.与其他语言数据的比较 相同点:有序列表 不同点:js的数组的每一项可以保存任何类型的数据:数组的大小是可以动态调整的 二.数组创建的两种方法 1) var colors = new ...
- 部署细节回忆录(包括了nginx重启)
(文章是从我的个人主页上粘贴过来的,大家也可以访问我的主页 www.iwangzheng.com) $cap -T $cap deploy:setup $cap deploy (遇 ...
- [转载]WiFi有死角? 巧用旧无线路由器扩展覆盖
怎么了,家里的WiFi有死角?老旧无线路由器的无线覆盖不给力?现在大功率无线产品或双频无线产品的售价并不便宜,而且仅靠一台无线路由器并不能满足多户型家庭的无线覆盖需求.那么,是不是有什么廉价而又实用的 ...
- Python fopen,open,和popen的区别
1. fopen 打开普通文件 带缓冲区撒点粉撒点粉阿桑地方 缓冲文件系统是借助文件结构体指针来对文件进行管理,通过文件指针来对文件进行访问,既可以读写字符.字符串.格式化数据,也可以读写二 ...
- django signal 浅析
默认的signals极其参数 (django 1.6.5) 模型的(django/db/models/signal.py): from django.dispatch import Signal cl ...
- Balanced Teams (USACO Jan Bronze 2014)
既然是bronze,毫无压力的AC了. 就是个深搜,当然加个剪枝--最后一个组不用搜. 恩可以一个一个组分层次dfs,这样会跑得飞起~~也不容易错 #include <cstdio> in ...
- 【SpringMVC】SpringMVC系列14之SpringMVC国际化
14.SpringMVC国际化 14.1.概述 14.2.用户切换选择语言
- Selenium测试Ajax程序(转)
上周末参加了Qclub的百度技术沙龙,听了百度的孙景卫讲了Web自动化测试,讲的非常好,然后在小组讨论时又有幸座在了一起.我们讨论的一个内容,就是Ajax应用程序比原来的非Ajax程序更不易测试,这里 ...
- kettle转换JavaScript获取命令行参数
日常开发中由于很多参数是变化的,需要在部署时才能确定.而写在配置文件里又显得很笨重,因而可以运行时实时指定.那么kettle是怎么获取命令行中的参数的呢? kettle可以通过转换里的JavaScri ...
- Java for LeetCode 145 Binary Tree Postorder Traversal
Given a binary tree, return the postorder traversal of its nodes' values. For example: Given binary ...