可扩展体系结构的研究(四)--使用xml来定义插件体系结构

  介绍

    Xml是一种描述层次的很好的方式,而且xml定义通常是可被扩展的。

这就是我们定制xml文件的一个很重要的因素,可以被其他项目使用,可以用来扩展原来的xml格式。

定义xml的很重要目标就是所有的插件和核心组件可以共享相同的格式。但是与目标相反,插件应该能够应它们的需求而扩展格式;插件可能会需要在它们的xml文件中扩展接口。这种对接口的扩展必须在该插件的文档中有所描述。

一个xml文件的例子

我们从一个小的xml文件开始。我们可以从这样的小例子开始设计结构。

<AddIn  name            = "NCvs Core"

author               = "Author"

copyright    = "GPL"

url                    = "http://www.icsharpcode.net"

description   = "NCvs core codon"

version              = "1.0.0">

<Requires>

<codon path="/NCvs/Workspace"/>

</Requires>

<Runtime>

<Import assembly="NCvs.RepositoryView.dll"/>

</Runtime>

<Extension path = "/NCvs/Workspace/MainMenu">

<MenuItem id = "File" label = "&amp;File">

<MenuItem id = "Separator1" label = "-"/>

<MenuItem     id         = "Exit"

label = "E&amp;xit"

class = "NCvs.Gui.Commands.ExitCommand"/>

</MenuItem>

</Extension>

</AddIn>

       现在开始考察给的这个xml,我们发现这个每个不同的块表达了一组概念。

       第一块是根节点,它有一些属性可以被插件管理器使用(比如安装,移除,或者更新插件)。

    “Requires”节点被用作一个特别的目的,它告诉插件加载器其子节点标明的路径必须是在树上存在的,从而可以确保这个codon(被插入树节点的元素,它不仅可以是扩展的程序,也可以是嵌入的资源文件,如图像、文本文件)被正确地加载。树可以用路径来遍历,它有一个根节点(对应‘/’),之后的目录构成树枝。不同于文件系统的路径,这里的codons(对应着文件系统中的file)还可以包含子目录。一个树节点不必包含一个(codon),它可以为空而仅仅是个目录。

    下一个xml节点是Runtime。它存在的原因是可执行的代码需要存在在某个位置。Xml文件不应该实际包含可执行的程序,它只需定位到这个二进制的文件。尽可能多需要的程序集会被加载,通过列出超过一个的倒入节点。

    下一个xml节点非常特别。它定义了树上的一个入口点而它的子项是在程序中使用的实际的codons。这些codons是特别的程序,组成了xml定义的核心。

posted on 2005-08-27 14:37  栖息的熊  阅读(614)  评论(0编辑  收藏  举报

导航