`
love~ruby+rails
  • 浏览: 852754 次
  • 性别: Icon_minigender_1
  • 来自: lanzhou
社区版块
存档分类
最新评论

脚本语言的配置文件

阅读更多

关于配置文件,在 PHP 的 Zend Framework 中我做过一些简单的关于性能的测试:http://www.mikespook.com/index.php/archives/36。将 ninnypro 的配置文件从 ini 修改为 xml ,并且声称能提高传说中的性能。

最近被调到另外一个在用 python 的组帮忙,阅读了他们的实现服务器端的 python 代码之,配置文件近二十余个,全是 xml 文件。为了使用着些配置文件,从 XMLFile 继承,实现了二十余个 Config 类。

这看起来似乎没什么问题。

是的,一点问题也没有。

  1. XML是高度结构化的描述方式。
  2. XML有大量丰富的包、库支持。
  3. XML的跨语言能力也是相当优异。你可以轻松的用市面上常见的所有语言轻松的掌控 XML。

这些都决定了 XML 作为配置文件,肯定是比 ini 或者自定义结构的配置文件更加优异的结构。同时,大量的实践也证明 XML 的优异性。例如 j2ee 的实践、SOA的实现、Jabber 的应用都说明 XML: is the lord of the configuration。

但是真得一点问题都没有么?

首先,来看一下 Zend Framework 的 Zend_Config。由于 PHP 自身的数据结构特点,Zend_Config_Xml 和 Zend_Config_Ini 两个类都会加载相应的配置文件,解析后作为数组传递到 Zend_Config 类中。也就是说,最终殊途同归,所有的配置都变成了 PHP 的数组。

然后,再来看一下那个项目中的配置文件。结构化的 XML 被 XMLFile 读取,然后转化为 XMLFile 对象。再统一放入 ConfigManagement 中,经过转换,将部分结构转为 dict 使用。

使用配置文件的原因,我猜测是因为以前,编译语言开发的程序经过编译后,不具有动态改变参数的能力。虽然可以从命令行通过传参来在每次运行时修改配置,但是无论是谁需要通过命令行传递成百上千的参数,都会疯掉。而且,命令行传参,不具有结构化的特征。在一些场景下,需要快速修改部分配置,就变得极为困难。

于是聪明的程序员发明了对人友好的、结构化的配置文件,通过读取配置文件来改变程序内部参数的使用。

这一习惯一直沿用至今。伴随 XML 的问世,配置文件的地位再次上升。更有甚者,在开发中不做编码,只写配置。

看出问题了么?

如果还是没有想法的话,那就再来看看脚本语言:

  1. 脚本语言具有动态性。
  2. 脚本语言自身就是结构化的。
  3. 脚本语言可以增强编译语言的动态能力。

在各个脚本语言应用 XML 作为配置文件的实践中,不论是 PHP 的 array,还是 Python 的 dict,无一例外的将配置文件转换为了脚本语言内部的一种数据结构。在多数情况下,这也是 XML 作为脚本语言配置文件唯一的解决方案。

再来看一个问题:在项目中使用 XML 作为配置文件的时候,是否有使用 DTD 作为 XML 的效验工具?

如果答案是否定的,那么 XML作为脚本语言就没有任何优势。没有应用 DTD 的 XML 就如同 PHP 的 array,Python 的 dict 一样。

那又何必要苦苦的追随 XML,不用脚本语言的数据结构来直接编写配置文件呢?

本来,早就像对这个话题写点什么。星期六(2009-09-19)的时候参加了广州技术沙龙,听了朱童鞋的 nginx 代码剖析后,突然有所顿悟:

成功在于细节,性能在于细节。

分享到:
评论

相关推荐

    ksh修改配置文件脚本

    在IT行业中,脚本语言是自动化任务和管理系统配置的关键工具之一。`ksh`(Korn Shell)是一种广泛使用的Unix/Linux shell,它扩展了Bash shell的功能,特别适合编写复杂和交互式的脚本。本话题将围绕如何使用ksh编写...

    交换机配置批量备份脚本

    各类交换机配置文件批量备份脚本,在脚本同目录下建立switch.txt交换机资料,并修改相关参数,即可在SecureCRT中运行脚本

    基于Delphi的CryScript脚本语言设计源码,融合Lua语言特性

    本项目是一款基于Delphi语言开发,融合Lua语言特性的CryScript脚本语言设计源码,包含28个文件,包括13个Pas源文件、3个配置文件、2个数据对象文件、2个程序文件、2个Lua脚本文件、2个Cry脚本文件、1个Git忽略文件、...

    Emacs 配置文件和脚本

    在这个主题中,我们将深入探讨"Emacs配置文件和脚本",以及与之相关的Gccsense工具。 首先,我们来看`.emacs`文件,这是Emacs的主配置文件,位于用户的家目录下。这个文件包含了Emacs启动时执行的Lisp代码,用于...

    编写脚本语言测试程序

    在名为"ScriptEditor"的压缩包文件中,可能包含了实现这样一个脚本编辑环境的源代码、库文件、配置文件以及可能的文档资源。这些文件可能涵盖了编辑器界面的设计、脚本解释器的实现、与IDispatch交互的代码以及测试...

    TCL+TCL脚本语言编程+TCL语言教程

    TCL(Tool Command Language,工具命令语言)是一种强大的解释型脚本语言,广泛应用于系统管理、设备控制、软件开发和测试等领域。以下是对TCL脚本语言编程和TCL语言教程的一些关键知识点的详细说明: 1. **基本...

    TCL脚本实例: 检查IP的脚本

    1. TCL语言:TCL(Tool Command Language)是一种脚本语言,广泛应用于自动化测试、网络管理和系统管理等领域。TCL语言具有灵活、可扩展、易于学习等特点,适合用于各种自动化任务。 2. TCL脚本实例:检查IP的脚本...

    plymouth脚本语言简介

    这个压缩包包含的资源是关于如何使用Plymouth脚本语言来定制自己的启动和关机主题的教程。 首先,我们要了解Plymouth的基本工作原理。Plymouth在系统启动时接管了屏幕输出,提供了一个空白的画布,然后在此基础上...

    xilinx TCL脚本语言文档ug984

    Tcl(Tool Command Language)是一种脚本语言,广泛应用于自动化测试、配置和设计环境。以下是 Tcl 脚本语言文档 ug984 的知识点总结: 一、TclScripting in Vivado * Tcl 是一种脚本语言,用于自动化设计流程 * ...

    使用脚本实现cisco路由器配置文件自动备份

    使用脚本实现cisco路由器配置文件自动备份,很不错的脚本,使用Linux Perl语言写的。

    Emacs配置文件

    这个"Emacs配置文件"就是对Emacs进行个性化调整的脚本,通常以`.emacs`或`init.el`为名。 配置文件的主要作用: 1. **快捷键定制**:Emacs提供了丰富的快捷键,用户可以通过配置文件自定义这些快捷键,使其更符合...

    基于Lua脚本语言的嵌入式UART通信的实现

    "基于Lua脚本语言的嵌入式UART通信的实现" 本文提出了一种基于Lua脚本语言的解决方案,旨在提高IED装置对各种类型串口数据报文帧格式的适应性。该方案将具体串口报文规约的组建和解析交给Lua脚本进行处理,使设计者...

    配置文件和部分脚本,解压后放置和模型同一目录下

    在IT行业中,配置文件和脚本是软件或系统运行中不可或缺的部分。它们分别扮演着不同的角色,但共同确保了程序的正确运行和个性化定制。在这个特定的场景中,标题和描述提示我们,这个压缩包包含的是一些配置文件和...

    一键执行脚本即可把用户名和密码更新到指定路径下相应的配置文件(支持迭代)

    这个脚本可能适用于系统管理或者自动化部署场景,允许用户通过简单运行一次脚本,而无需手动修改多个配置文件。"支持迭代"意味着脚本可以处理多个文件或目录,遍历其中的所有配置文件,进行批量更新。 描述中提到的...

    IIS fix 修复无效的默认脚本语言

    1. **配置文件错误**:可能是在IIS的配置文件(如applicationHost.config或web.config)中,对默认脚本语言的设置不正确或缺失。这可能涉及到默认语言的注册或者ISAPI筛选器的配置。 2. **组件未安装或损坏**:ASP...

    基于XML脚本配置文件的自动化测试控制软件研究.rar

    基于XML脚本配置文件的自动化测试控制软件是这种趋势下的产物,它利用XML的结构化特性来管理和执行测试脚本。本文将深入探讨这一主题,介绍相关知识点,并详细阐述其原理和应用。 XML(eXtensible Markup Language...

    基于Shell、Python、Go语言的脚本诊断工具设计源码

    该项目是一款集成Shell、Python和Go语言编写的脚本诊断工具设计源码,总共有44个文件,其中包括23个Shell脚本文件、7个Python脚本文件、2个Markdown文件、1个许可证文件、1个awk脚本文件、1个toprc配置文件、1个Vim...

    交换机路由器批量脚本生成工具

    这个压缩包可能包含了脚本文件、示例Excel配置文件以及可能的使用说明。深入研究这些文件,你可以更全面地了解如何定制和使用这个工具。 总的来说,交换机路由器批量脚本生成工具是一个强大的自动化解决方案,可以...

    innosetup脚本范例

    InnoSetup是一款强大的安装制作工具,它使用脚本语言来编写安装程序,具有灵活的定制性和易用性。本文将详细解析"innosetup脚本范例"中的知识点,帮助你理解如何利用InnoSetup创建自定义安装包。 1. **InnoSetup...

Global site tag (gtag.js) - Google Analytics