构件化软件系统中xml标签与组件适配和扩展的方法

文档序号:6561183阅读:104来源:国知局
专利名称:构件化软件系统中xml标签与组件适配和扩展的方法
技术领域
本发明涉及计算机软件技术领域,特别涉及计算机构件化软件系统领域,具体是指一种构件化软件系统中XML标签与组件适配和扩展的方法。

背景技术
随着现代构件化计算机软件技术的进一步发展,CAR(Component Assembly Runtime)构件技术是一种面向构件编程(Component Oriented Programming,简称COP)技术,它定义了一套网络编程时代的构件编程模型和编程规范,规定了一组构件间相互调用的标准,使得二进制构件能够自描述,能够在运行时动态链接。
目前,CAR构件技术已在某些先进的嵌入式操作系统上实现,在该嵌入式操作系统的SDK(Software Development Kit,软件开发工具包)下,用户很容易编写出自己的构件。
CAR构件技术的基础思想来源于微软的COM,但它对微软的COM进行了拓展,并且二者不兼容。CAR构件技术由CAR语言(构件描述语言,描述构件的元数据信息)、CAR编译器、自动代码生成工具以及CAR构件基础库支持。CAR构件技术体现了网络编程时代的特性,编程界面简单。
同时,目前随着扩展标记语言XML的发展,已经出现了一系列的功能更加强大的标记语言技术,其中,主要包括Mozilla的XUL和Microsoft的XAML技术。
XUL(XML User-interface Language)是Mozilla组织研发的跨平台的描述应用的语言。它专注于Mozilla浏览器中应用的开发,底层依赖于Mozilla中的XPCOM技术(类似于微软的COM)。
XAML(eXtensible Application Markup Language)是Microsoft新一代操作系统Vista(原Longhorn)中开发应用的主要技术之一。它与Vista中的WinFX技术直接集成在一起,主要用来编写Vista中应用程序的用户界面。
然而,现有技术中的XUL和XAML中的标签在进行使用的时候需要预定义,而且在XML中只能使用预定义的标签,这样就大大限制了标记语言的灵活性和扩展性,降低了标记语言的执行效率,同时也给软件开发人员带来了很大的不便,制约了扩展标记语言的进一步发展。


发明内容
本发明的目的是克服了上述现有技术中的缺点,提供一种能够使XML标签不需要预定义以及预先声明绑定的实现、能够自动识别和处理文档中的相关标签并和组件进行自动适配和扩展、使用灵活方便、增强构件的复用率、提高软件开发效率、性能稳定可靠、适用范围较为广泛的构件化软件系统中XML标签与组件适配和扩展的方法。
为了实现上述的目的,本发明的构件化软件系统中XML标签与组件适配和扩展的方法如下 该构件化软件系统中XML标签与组件适配和扩展的方法,其主要特点是,所述的方法包括以下步骤 (1)系统进行初始化操作; (2)系统针对数个组件进行打包封装处理操作,得到组件库; (3)系统将XML名域与所述的组件库之间建立关联关系; (4)系统根据对XML名域中组件的引用,进行创建和初始化该对应组件实例的操作; (5)系统将对该组件实例的操作转换为对该组件接口的调用。
该构件化软件系统中XML标签与组件适配和扩展的方法的对组件进行打包封装处理操作包括以下步骤 (1)系统将相应组件的二进制实现代码打包封装于组件库中; (2)将相应组件的元数据信息打包封装于组件库中; (3)将相应组件的元类的输出条目信息打包封装于组件库中。
该构件化软件系统中XML标签与组件适配和扩展的方法的组件的二进制实现代码为C++语言实现的组件的二进制代码。
该构件化软件系统中XML标签与组件适配和扩展的方法的组件的元数据信息包括组件实现的接口信息、组件实现的方法信息、相应方法的参数信息和相应方法的返回值信息。
该构件化软件系统中XML标签与组件适配和扩展的方法的元类中包含有能够创建对应组件实例的构造器。
该构件化软件系统中XML标签与组件适配和扩展的方法的组件库为动态链接库(DLL)。
该构件化软件系统中XML标签与组件适配和扩展的方法的XML名域与所述的组件库之间的关联关系格式为xmlns名域=组件库名称。
该构件化软件系统中XML标签与组件适配和扩展的方法的对XML名域中组件的引用格式为 名域组件名称元素属性表。
该构件化软件系统中XML标签与组件适配和扩展的方法的创建和初始化组件实例包括以下步骤 (1)系统通过引用该组件的XML名域所关联的组件库获取该组件的元类信息; (2)使用该元类信息创建所述的组件的实例; (3)通过该组件库获取所述的组件的元数据信息; (4)根据该元数据信息和所述的元素属性表对所述的组件的实例进行必要的初始化操作。
采用了该发明的构件化软件系统中XML标签与组件适配和扩展的方法,由于通过将数个组件信息打包封装操作生成组件库,并建立了XML名域与组件库之间的关联关系,根据对XML名域中组件的引用创建并初始化相应的组件实例,并将对该组件实例的操作转换为对组件接口的调用,从而有效的解决了XML中对组件的引用以及编程的问题,省去了现有技术中对XML标签的预定义环节,而由组件的元数据信息来替代完成,这样就可以很方便的使用构件化软件系统中的任何组件,大大提高了XML的适应性和扩展性,提供了强大的扩展能力;同时,该发明的方法使用灵活方便,增强了构件的复用率,提高了软件开发效率,性能稳定可靠,适用范围较为广泛,给软件开发人员带来了很大的便利,同时为扩展标记语言的进一步发展奠定了坚实的基础。



图1为本发明的构件化软件系统中XML标签与组件适配和扩展的方法的工作原理示意图;
具体实施例方式 为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。
请参阅图1所示,该构件化软件系统中XML标签与组件适配和扩展的方法,包括以下步骤 (1)系统进行初始化操作; (2)系统针对数个组件进行打包封装处理操作,得到组件库,其中该组件库为动态链接库(DLL),该打包封装处理操作包括以下步骤 (a)系统将相应组件的二进制实现代码打包封装于组件库中,该组件的二进制实现代码为C++语言实现的组件的二进制代码; (b)将相应组件的元数据信息打包封装于组件库中,该组件的元数据信息包括组件实现的接口信息、组件实现的方法信息、相应方法的参数信息和相应方法的返回值信息; (c)将相应组件的元类的输出条目信息打包封装于组件库中,该元类中包含有能够创建对应组件实例的构造器; (3)系统将XML名域与所述的组件库之间建立关联关系,该关联关系格式为 xmlns名域=组件库名称; (4)系统根据对XML名域中组件的引用,进行创建和初始化该对应组件实例的操作,该对XML名域中组件的引用格式为 名域组件名称元素属性表; 该构件化软件系统中XML标签与组件适配和扩展的方法的创建和初始化组件实例包括以下步骤 (a)系统通过引用该组件的XML名域所关联的组件库获取该组件的元类信息; (b)使用该元类信息创建所述的组件的实例; (c)通过该组件库获取所述的组件的元数据信息; (d)根据该元数据信息和所述的元素属性表对所述的组件的实例进行必要的初始化操作; (5)系统将对该组件实例的操作转换为对该组件接口的调用。
在实际使用当中,一种实现本发明方法的编程系统是在嵌入式操作系统上的一个基于CAR构件和XML的应用开发框架,本发明的方法是在该编程系统的XML文档中,所使用的Tag不需要预定义以及预先声明绑定的实现,而是根据名域指定的CAR构件,自动的识别和处理文档中的相关的Tag,并完成和CAR构件的适配。
该编程系统中对CAR构件作自动适配是通过CAR构件平台提供的系统机制以及CAR构件的元信息来完成的。在嵌入式操作系统上,所有的组件都是采用CAR的组件形式,若干个CAR组件可以包装在一个动态链接库(DLL)中,该DLL有着固定的封装格式以及构成 (1)CAR组件的二进制实现代码——C++实现的组件的二进制代码 (2)CAR组件的元信息 包含了该DLL中所有的组件的描述信息,如组件实现了什么接口、有哪些方法、方法的参数、返回值等等信息。
(3)一个系统规定的创建该DLL中所有CAR组件的MetaClass的输出条目 通过这个条目,就可以创建该DLL中指定组件的MetaClass,MetaClass包含了对应组件的构造器,由构造器就可以创建该组件的实例。
(4)其它部分......。
其中前三个部分是CAR组件DLL的重要组成部分,也是嵌入式操作系统上CAR组件平台运行的基础。同时嵌入式操作系统还可以提供使用CAR组件的元信息的辅助API(Reflection API),通过该Reflection API,可以在运行时获取组件的元信息。这些系统能够支持该编程系统对标签进行处理。
该编程系统中可以通过XML名域(namespace)来关联一个包含CAR组件的DLL,如 <x:xglue xmlns:x=″http://www.koretide.com/xml-glue″xmlns:w=″elactrl.dll″> xmlns:w=″elactrl.dll″指示该编程系统,名域前缀“w”代表“elactrl.dll”(该DLL包含了嵌入式操作系统上所有系统UI组件),文档中所有的w名域的元素都是elactrl.dll中的组件引用。
对于组件的引用如下 <w:button caption=″Hello″left=″70″top=″60″width=″100″height=″25″> w:button说明需要创建elactrl.dll中的button组件,该编程系统通过elactrl.dll首先获取button组件的ButtonMetaClass,使用ButtonMetaClass创建button组件的实例,并获取button组件的元信息,根据元信息以及XML中w:button元素的属性表对该实例进行必要的初始化工作,这是该实例就成为一个可用的、具有元信息的、能够完成XML调用适配的该编程系统中的对象。
在XML文档中后续的对该button组件实例的存取都由该编程系统通过元信息自动的转换为对该组件的接口调用。
下面通过一个简单的代码示例来展示该编程系统中Xml文件如何使用Tag,并完成到CAR构件的适配的。示例代码如下 < xml version="1.0"encoding="utf-8" >  <x:xglue xmlns:x=”http://www.koretide.com/xml-glue”xmlns:w=″elactrl.dll″>  <script language=”javascript”>  <![CDATA[  function onButtonClick()  {  btn.text="Clicked!";  print("Hello World!!!");  }  ]]>   </script>  <w:form x:id="MainForm"left="0"top="0"width="239"height="319"<!-- SIPO <DP n="5"> --><dp n="d5"/>  style="FormStyle_Gradient,FormStyle_Client">  <w:button x:id="btn"caption="Hello World!"left="70"top="60"  width="100"height="25">  <x:event type="Click"handler="javascript:onButtonClick()"/>  </w:button>  </w:form>  </x:xglue> 其中,上述代码的第3行中XML文档根元素的名域(namespace)声明中包含了前缀为“w”的名域,名域的名字为“elactrl.dll”,该DLL是包含Elastos图形系统UI组件(如Form、Button、TextBox......)的二进制库。这个名域的声明对该编程系统而言意味着,文档中的“w”名域前缀的元素对应的组件都是从“elactrl.dll”中创建。如第15行的w:form和第17行的w:button,该编程系统就会通过elactrl.dll中的元信息以及MetaClass对象创建CForm和CButton,创建对象时根据元数据和元素的属性表对其进行必要的初始化。
其中的第9行中使用了button的属性,第19行使用了button的事件。
该编程系统中对二进制组件的使用,没有经过预定义等处理,该编程系统会自动根据元信息完成这些Tag到CAR构件的适配,包括组件的创建、属性和方法的存取、事件的处理等等。
通过这个机制,该编程系统中的标签可以灵活多样,给应用提供了无限的扩展空间。
采用了上述的构件化软件系统中XML标签与组件适配和扩展的方法,由于通过将数个组件信息打包封装操作生成组件库,并建立了XML名域与组件库之间的关联关系,根据对XML名域中组件的引用创建并初始化相应的组件实例,并将对该组件实例的操作转换为对组件接口的调用,从而有效的解决了XML中对组件的引用以及编程的问题,省去了现有技术中对XML标签的预定义环节,而由组件的元数据信息来替代完成,这样就可以很方便的使用构件化软件系统中的任何组件,大大提高了XML的适应性和扩展性,提供了强大的扩展能力;同时,该发明的方法使用灵活方便,增强了构件的复用率,提高了软件开发效率,性能稳定可靠,适用范围较为广泛,给软件开发人员带来了很大的便利,同时为扩展标记语言的进一步发展奠定了坚实的基础。
在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。
权利要求
1、一种构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的方法包括以下步骤
(1)系统进行初始化操作;
(2)系统针对数个组件进行打包封装处理操作,得到组件库;
(3)系统将XML名域与所述的组件库之间建立关联关系;
(4)系统根据对XML名域中组件的引用,进行创建和初始化该对应组件实例的操作;
(5)系统将对该组件实例的操作转换为对该组件接口的调用。
2、根据权利要求1所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的对组件进行打包封装处理操作包括以下步骤
(1)系统将相应组件的二进制实现代码打包封装于组件库中;
(2)将相应组件的元数据信息打包封装于组件库中;
(3)将相应组件的元类的输出条目信息打包封装于组件库中。
3、根据权利要求2所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的组件的二进制实现代码为C++语言实现的组件的二进制代码。
4、根据权利要求2所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的组件的元数据信息包括组件实现的接口信息、组件实现的方法信息、相应方法的参数信息和相应方法的返回值信息。
5、根据权利要求2所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的元类中包含有能够创建对应组件实例的构造器。
6、根据权利要求1至5中任一项所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的组件库为动态链接库。
7、根据权利要求1至5中任一项所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的XML名域与所述的组件库之间的关联关系格式为
xmlns名域=组件库名称。
8、根据权利要求7所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的对XML名域中组件的引用格式为
名域组件名称元素属性表。
9、根据权利要求8所述的构件化软件系统中XML标签与组件适配和扩展的方法,其特征在于,所述的创建和初始化组件实例包括以下步骤
(1)系统通过引用该组件的XML名域所关联的组件库获取该组件的元类信息;
(2)使用该元类信息创建所述的组件的实例;
(3)通过该组件库获取所述的组件的元数据信息;
(4)根据该元数据信息和所述的元素属性表对所述的组件的实例进行必要的初始化操作。
全文摘要
本发明涉及一种构件化软件系统中XML标签与组件适配和扩展的方法,包括对数个组件打包封装得到组件库、将XML名域与所述的组件库之间建立关联关系、根据对XML名域中组件的引用进行创建并初始化该对应组件实例的操作、将对该组件实例的操作转换为对该组件接口的调用。采用该种构件化软件系统中XML标签与组件适配和扩展的方法,省去了对XML标签的预定义,而由组件的元数据信息替代完成,提高了XML的适应性和扩展性,提供了强大的扩展能力;同时使用灵活方便,增强了构件的复用率,提高了软件开发效率,性能稳定可靠,适用范围较为广泛,给软件开发人员带来了很大的便利,为扩展标记语言的进一步发展奠定了坚实的基础。
文档编号G06F9/44GK1932759SQ200610117149
公开日2007年3月21日 申请日期2006年10月13日 优先权日2006年10月13日
发明者陈榕, 牛靖宇, 陈果 申请人:上海科泰世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1