zoukankan      html  css  js  c++  java
  • 关于配置文件权衡,.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", "1"),
                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文件,右键,属性,输出目录,选择“始终复制”。

  • 相关阅读:
    【angularJS】启动(bootstrap)机制
    【angularJS】定义模块angular.module
    【angularJS】简介
    .NET AutoMapper学习记录
    WebAPI学习
    【MongoDB】在C#中使用
    RabbitMQ介绍及windows下安装使用
    【MongoDB】初识
    php命名空间(nameSpace)的使用详解
    魔术方法
  • 原文地址:https://www.cnblogs.com/pengzhen/p/4000980.html
Copyright © 2011-2022 走看看