首页> 中国专利> 计算机软件系统基于XML和脚本语言应用程序开发运行方法

计算机软件系统基于XML和脚本语言应用程序开发运行方法

摘要

本发明涉及一种计算机软件系统基于XML和脚本语言应用程序开发运行方法,包括系统在XML标签/脚本语言中使用所需要的组件对象并生成相应的XML文件、XML和脚本语言的应用引擎读取XML文件并对组件对象进行创建加载和初始化处理、XML和脚本语言的应用引擎执行XML文件中的脚本语言。采用该种计算机软件系统基于XML和脚本语言应用程序开发运行方法,和操作系统高度整合,从而可以达到二进制原生程序所拥有的全部能力;而且能实现丰富的交互方式;组件模块由专业的编程语言开发人员开发,拼装应用程序由擅长脚本但不熟悉编程语言的开发人员完成,从而细化专业分工,提高了软件开发的生产力,并且为现代计算机软件系统开发的进一步发展奠定了坚实的基础。

著录项

  • 公开/公告号CN101183308A

    专利类型发明专利

  • 公开/公告日2008-05-21

    原文格式PDF

  • 申请/专利权人 上海科泰世纪科技有限公司;

    申请/专利号CN200710171922.9

  • 发明设计人 陈榕;牛靖宇;胡建平;张雷;

    申请日2007-12-07

  • 分类号G06F9/44(20060101);

  • 代理机构31002 上海智信专利代理有限公司;

  • 代理人王洁

  • 地址 201203 上海市浦东新区郭守敬路498号浦东软件园17号楼2层

  • 入库时间 2023-12-17 20:06:53

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2017-01-25

    未缴年费专利权终止 IPC(主分类):G06F9/44 授权公告日:20090708 终止日期:20151207 申请日:20071207

    专利权的终止

  • 2009-07-08

    授权

    授权

  • 2008-07-16

    实质审查的生效

    实质审查的生效

  • 2008-05-21

    公开

    公开

说明书

技术领域

本发明涉及计算机软件领域,特别涉及计算机软件系统开发运行技术领域,具体是指一种计算机软件系统基于XML和脚本语言应用程序开发运行方法。

背景技术

通常的计算机软件开发使用编译型的计算机语言(比如C\C++、Delphi等)或者解释型的脚本语言(比如JavaScript、VBScript等)。编译型语言要求程序员先把用该语言书写的源代码通过该语言的编译器编译为二进制代码,然后在程序运行的时候执行这个二进制代码(比如Windows里的IE浏览器程序)。而解释型的脚本语言要求程序员直接把该语言的源代码提交给该脚本的宿主程序进行解释执行(比如一个内嵌JavaScript脚本的html文档)。

使用上述两类语言进行软件开发的效率有所不同。这里的效率不但指程序运行时的效率,还指软件开发的时间效率。

一般地说,用传统的编译型语言所开发的程序有着较高的运行时效率,解释型脚本语言程序运行速度较慢。这是因为像C\C++这样的语言所开发的程序代码是由计算机处理器直接负责解释并执行的,所以速度很快;而像JavaScript这样的语言所开发的程序,不但要求该脚本的宿主在运行时首先编译源代码为中间代码,还要求由该脚本宿主负责解释执行编译好的中间代码,所以运行速度较慢。

但是在软件开发效率上这两类语言的表现刚好相反:解释型的脚本语言程序开发效率较高,而传统的编译型程序开发效率较低。这是因为解释型的脚本语言往往有着丰富的辅助库可用,可以在一句语句中完成很高级的功能;而对于标准C语言来说,几乎没有什么高级的字符串处理函数可用,需要程序员自己来完成许多繁杂的字符处理及其他工作。

除了效率,软件开发还需要考虑学习成本的问题。如果一项技术学习起来需要很多时间,而开发人员需要使用这项以前没有接触过的新技术,那么开发软件所用的成本就要包括开发人员学习的时间。像C/C++这一类的语言,如果以前没有基础的话,学习起来需要相当多的时间;而脚本语言掌握起来就容易的多,对一些没有多少编程经验的人来说也不难学习。

一般地,对商业软件的开发来说,考虑到程序的运行效率、开发效率以及程序员的学习成本,选择开发语言就面临着一个取舍:如果想要开发运行效率高的软件,就要使用C/C++这样的开发效率较低的语言,因此带来较高的开发成本;如果想降低成本使用脚本语言,开发出来的软件运行效率又不高。另外,使用脚本语言还有把源代码暴露给最终用户的问题,这样不利于保护技术秘密和相应的知识产权。

总之,在当前软件开发的复杂度和规模逐渐扩大的情况下,特别需要一种更有效率的开发运行模式,不但能让软件开发起来更容易,而且要让开发出来的软件有比较理想的运行时表现,从而能够适应现代软件业发展的需要。

发明内容

本发明的目的是克服了上述现有技术中的缺点,提供一种能够有效解决软件运行效率和开发效率之间的矛盾、实现过程方便快捷、稳定安全可靠、适用范围较为广泛的计算机软件系统基于XML和脚本语言应用程序开发运行方法。

为了实现上述的目的,本发明的计算机软件系统基于XML和脚本语言应用程序开发运行方法如下:

该计算机软件系统基于XML和脚本语言应用程序开发运行方法,所述的计算机软件系统中内置有XML和脚本语言的应用引擎和预置的组件模块,其主要特点是,所述的方法包括以下步骤:

(1)系统根据用户操作,在XML标签/脚本语言中使用所需要的组件对象,并生成相应的XML文件;

(2)系统中内置的XML和脚本语言的应用引擎读取所述的XML文件,并对其中所使用的组件对象进行创建加载和初始化处理操作;

(3)所述的XML和脚本语言的应用引擎执行所述的XML文件中的脚本语言。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的在XML标签中使用所需要的组件对象,包括以下步骤:

(11)在XML标签中直接引用该组件对象的名字;

(12)在XML标签中指明该组件对象的各个属性的设定值。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的在XML标签中指明组件对象的各个属性的设定值,包括以下步骤:

(121)将组件对象的构造函数中所含的形式参数设置为可写属性,且属性名称为对应的形式参数的名称;

(122)将组件对象中的配置接口Set的方法中所含的输入参数设置为可写属性,且属性名称为对应的方法的名称;

(123)将组件对象中获取接口Get的方法中所含的输出参数设置为可读属性,且属性名称为对应的方法的名称。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的在XML标签中指明组件对象的各个属性的设定值,还包括以下步骤:

(124)将组件对象实例的名称设置为可写属性,且指明该属性的设置值。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的在脚本语言中使用所需要的组件对象,具体为:

在脚本语言中引用包含于该脚本语言的名字空间中的组件对象的名字。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的对组件对象进行创建加载和初始化处理操作,包括以下步骤:

(21)所述的XML和脚本语言的应用引擎在所述的组件模块中搜索可用的组件对象,并创建生成组件对象实例;

(22)根据组件对象实例的名称属性的设定值对上述的组件对象实例命名;

(23)根据组件对象的其它各个属性的设定值对该组件对象实例中的相应属性进行设置;

(24)将该组件对象实例的名字加入到脚本语言的名字空间中。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的执行所述的XML文件中的脚本语言,包括以下步骤:

(31)所述的XML和脚本语言的应用引擎根据脚本语言中所引用的组件对象的名字在该脚本语言的名字空间中进行搜索;

(32)如果搜索到相应的组件对象,则使用该组件对象执行相应的脚本语言;

(33)如果未搜索到相应的组件对象,则系统报错。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的步骤(1)之前还包括以下步骤:

(A)系统根据用户的编写操作,生成自定义的组件模块;

(B)将所述的自定义的组件模块装载于所述的计算机软件系统中。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的系统生成自定义的组件模块,包括以下步骤:

(A1)系统根据用户的编写操作,产生自定义的程序源代码文件;

(A2)系统对所述的程序源代码文件进行编译,得到相应的自定义的组件模块。

该计算机软件系统基于XML和脚本语言应用程序开发运行方法中的系统预置的组件模块包括图形系统组件模块。

采用了该发明的计算机软件系统基于XML和脚本语言应用程序开发运行方法,由于XML和脚本语言(XML+Script)的应用结构简单,易于学习掌握,不但能保证应用有较高的运行效率,也能有效保护公司的技术秘密;同时其可以在支持XML+Script技术的操作系统上直接运行,并和操作系统高度整合,从而可以达到二进制原生程序所拥有的全部能力;而且由于XML是一个开放的体系,XML标签可以通过构件来无限扩展,从而给开发提供了无限的可能,既可以扩展用户界面(UI)的展示方式,也可以扩展相应的业务组件,这些均可以无缝的协同工作;不仅如此,本发明的方法可以充分利用宿主操作系统上的图形系统,因此能实现丰富的交互方式;另一方面,组件模块可以由专业的C++程序员来开发,而用XML+Script来拼装应用可以由擅长脚本但不熟悉C++语言的程序员来完成,进行这样的细化专业分工,可以提高软件开发的生产力,从而为现代计算机软件系统开发的进一步发展奠定了坚实的基础。

附图说明

图1为本发明的计算机软件系统基于XML和脚本语言应用程序开发运行方法的整体流程示意图。

图2为本发明的XML和脚本语言应用程序、XML和脚本语言的应用引擎以及宿主操作系统之间的层次关系示意图。

图3为在手机上实际使用本发明的计算机软件系统基于XML和脚本语言应用程序开发运行方法的应用示意图。

具体实施方式

为了能够更清楚地理解本发明的技术内容,特举以下实施例详细说明。

请参阅图1所示,该计算机软件系统基于XML和脚本语言应用程序开发运行方法,所述的计算机软件系统中内置有XML和脚本语言的应用引擎和预置的组件模块,该系统预置的组件模块中可以包括图形系统组件模块,其中,所述的方法包括以下步骤:

(1)系统根据用户操作,在XML标签/脚本语言中使用所需要的组件对象,并生成相应的XML文件;该在XML标签中使用所需要的组件对象,包括以下步骤:

(a)在XML标签中直接引用该组件对象的名字;

(b)在XML标签中指明该组件对象的各个属性的设定值,包括以下步骤:

(i)将组件对象的构造函数中所含的形式参数设置为可写属性,且属性名称为对应的形式参数的名称;

(ii)将组件对象中的配置接口Set的方法中所含的输入参数设置为可写属性,且属性名称为对应的方法的名称;

(iii)将组件对象中获取接口Get的方法中所含的输出参数设置为可读属性,且属性名称为对应的方法的名称;

(iv)将组件对象实例的名称设置为可写属性,且指明该属性的设置值;

该在脚本语言中使用所需要的组件对象,具体为:

在脚本语言中引用包含于该脚本语言的名字空间中的组件对象的名字;

(2)系统中内置的XML和脚本语言的应用引擎读取所述的XML文件,并对其中所使用的组件对象进行创建加载和初始化处理操作,包括以下步骤:

(a)所述的XML和脚本语言的应用引擎在所述的组件模块中搜索可用的组件对象,并创建生成组件对象实例;

(b)根据组件对象实例的名称属性的设定值对上述的组件对象实例命名;

(c)根据组件对象的其它各个属性的设定值对该组件对象实例中的相应属性进行设置;

(d)将该组件对象实例的名字加入到脚本语言的名字空间中;

(3)所述的XML和脚本语言的应用引擎执行所述的XML文件中的脚本语言,包括以下步骤:

(a)所述的XML和脚本语言的应用引擎根据脚本语言中所引用的组件对象的名字在该脚本语言的名字空间中进行搜索;

(b)如果搜索到相应的组件对象,则使用该组件对象执行相应的脚本语言;

(c)如果未搜索到相应的组件对象,则系统报错;

同时,在上述的步骤(1)之前还可以包括以下步骤:

(A)系统根据用户的编写操作,生成自定义的组件模块,包括以下步骤:

(a)系统根据用户的编写操作,产生自定义的程序源代码文件;

(b)系统对所述的程序源代码文件进行编译,得到相应的自定义的组件模块;

(B)将所述的自定义的组件模块装载于所述的计算机软件系统中。

在实际使用当中,对于图1中的各个步骤而言:

步骤一:在已经预先设置有XML+Script应用引擎和预置组件模块的操作系统上,此步骤可省略。

步骤二:如果根据开发需求的具体情况,用户不需要自定义组件模块,则此步骤可省略。

用户也可以自己编写组件以满足应用自身的需求。这些组件也可以被别的XML+Script的应用所利用。通常,用户需要编写代码(比如C++代码),并利用一个给定的SDK来生成自定义的组件模块。

步骤三:在具体实现的过程中,可以使用一般的文本编辑工具来编写XML文件,当然,为了使得开发效率进一步提高,也可以使用一些专用于处理XML文件的编辑工具。

同时,用户可以使用的功能模块是以组件模块的形式存在。所谓组件模块,是一个二进制模块,它可以在本地系统上直接运行,其可以存放在本地操作系统上,也可以存放在远程计算机上,XML+Script的应用引擎在运行时根据需要自动下载到本地;一个组件模块中通常含有若干个组件对象,每个组件对象通过一组接口来展现自身所提供的服务(这一点与Windows平台下的COM组件很相似)。

用户可以在XML标签里直接引用组件对象的名字,并指明组件对象的属性,XML+Script的应用引擎将在装载的组件模块中搜索可用的组件,并生成组件对象,同时应用用户指定的属性到组件对象上;而且,XML+Script的应用引擎还把生成的组件对象的名字(可以用一个“id”属性给组件对象的实例命名)加入到脚本语言(Script)的名字空间里去,使用户可以在Script里使用在XML标签中指定的组件对象。

一般地,XML+Script的应用引擎自带一套预置的组件库,包括一个图形系统组件,可以使用户轻松的创建自己的图形化应用程序或者访问一些操作系统的服务。

步骤四:XML+Script的应用引擎可以是一个基于控制台的可执行文件,直接把XML文件名作为参数传递给引擎进行处理;也可以以其它形式(比如API)出现。

请参阅图2所示,本发明的XML+Script应用引擎主要由XML分析器及Script引擎两部分构成。XML+Script应用引擎调用XML分析器分析输入的XML文件,并负责解释XML文件中的标签及其属性,并在合适的时候调用Script引擎来执行该Script。

XML+Script应用引擎在解释XML文件中的标签及其属性时,能够根据需要创建图形对象,比如按钮、菜单、文字输入框等以及其他一些复杂的控件。

同时,在宿主操作系统和XML+Script应用引擎之间还可以设置一个适配层。设置这个适配层的主要目的是给XML+Script应用引擎提供统一的操作系统服务(比如图形系统的各种控件)接口,使之在不同的操作系统上都能解释、执行相同的XML+Script应用。

在本发明的具体实施方式中,可以使用XML(扩展可标记语言)来描述应用程序,用脚本语言(Script)来描述应用逻辑,用CAR(嵌入式操作系统上的Component Assembly Runtime技术)来扩展脚本。

这里称一个可以解释、执行这样一个XML+Script应用的程序为XmlGlue引擎。引擎接受一个XML文本作为输入。它分析文本的内容并根据标签(Markup)创建对象(一般是一个图形对象,比如按钮、窗体等等)。当它遇到一个脚本(script)标签时,就执行脚本的正文。脚本可以创建CAR构件库中定义的构件,并可以使用构件的方法。

这种应用的说明性示例如下:

<?xml version=″1.0″encoding=″UTF-8″?>

<elastos xmlns=″http://www.elastos.com/XmlGlue/Widgets″

         xmlns:x=″http://www.elastos.com/XmlGlue/2.1″

         xmlns:my=”MyControls.dll”>

    <window x:id=″mainWindow″left=″0″top=″28″width=″100″height=″108″>

      <picture left=″0″top=″0″width=″100″height=″108″image=″sample.png″/>

      <my:clock x:id=″clock″left=″0″top=″0″width=″100″height=″108″/>

    </window>

    <x:script language=″lua″>

      <![CDATA[

         module=Elastos.Using(“FooBar.dll”);

         foobar=module.FooBar.CreateObject();

         frmMain.OnKeyDown=function()foobar:Foo();end;

      ]]>

    </x:script>

<elastos>

在上面的示例中:

●根节点elastos表示一个应用。window表示一个“Window”组件对象(一个图形窗口构件),该构件定义在elastos的图形系统中(elacontrols.dll),为了使得所使用的XML的文法和表达方式更加简洁,在这里,相应的组件模块(构件库)自动通过别名“http://www.elastos.com/XmlGlue/Widgets”导入到默认的名域中。

●x:id属性指明该组件对象的名字,这样在脚本部分(x:script标签所包含的部分)就可以通过这个名字来引用该组件对象。

●“left”、“top”、“width”、“height”等都是组件对象的属性,指明该组件对象在屏幕上的位置。

●picture表示一个图片对象类似于window,也是elastos图形系统提供的构件。

●my:clock是一个用户编写的构件,通过xmlns:my=”MyControls.dll”的定义导入到my名域下,my:clock就是使用了MyControls.dll构件库中提供的Clock构件。

●x:script标签表示该节点是一个脚本节点,language属性指明所用脚本的类型。

在以上脚本中,Elastos是一个脚本内置对象,通过它的“Using”方法可以引入一个CAR构件库(“FooBar.dll”),如果该构件库内有一个名为FooBar的构件,则通过:

foobar=module.FooBar.CreateObject();

这样的方式就可以创建一个该构件的实例。然后就可以引用该构件的方法,例如:

foobar:Foo();

将调用构件的Foo方法。

下面具体说明一下XmlGlue引擎执行这样一个XML所描述的应用的过程:

XmlGlue引擎在分析时看到一个类似window这样的标签时就尝试从默认名域所表示的CAR构件库即Elastos图形系统中搜索window构件。如果找到,就创建该构件的一个实例,并且把该节点所指明的的属性(比如left、top等)应用于新创建的对象。XmlGlue引擎对CAR构件库中定义的构件属性定义如下:

(1)构件的constructor所含的形式参数都是可写属性,属性名称为形式参数的名称。

(2)构件的接口的方法,凡以“Set”开头的并且只有一个输入参数的,都定义了一个可写属性,属性名称为该方法的名称去掉开头的“Set”所剩的部分。

(3)构件的接口的方法,凡以“Get”开头的并且只有一个输出参数的,都定义了一个可读属性,属性名称为该方法的名称去掉开头的“Get”所剩的部分。

XmlGlue引擎在分析一个应用的过程中保存所有通过标签创建出来的对象,并且把对象和他们的名字(通过x:id属性说明)关联起来。这样,在脚本执行的时候,程序员在脚本里就可以通过名字来使用对象。XmlGlue引擎负责在对象的名字被引用的时候查找并返回正确的对象。或者报告一个错误指明没有对象有程序员所引用的名字。

最后,XmlGlue引擎执行完脚本,一般会进入一个消息循环,等待接受用户的输入。而响应用户的输入就是应用开发人员的工作了。

CAR构件库一般由C++语言书写、编译而成。利用相应的嵌入式操作系统的SDK编写一个CAR构件库是非常方便的。程序员只需书写一个符合规范的CAR定义文件,并且利用该SDK提供的工具来处理这个定义文件,则这个CAR构件库的框架代码就会自动生成。程序员在这个框架的基础上自己添加自己的实现代码,然后编译,就得到了一个CAR构件库。

CAR定义文件的一个说明性示例如下:

   module{

   interface IFooBar{

        Foo();

        Bar()

   }

   class CFooBar{

      interface IFooBar;

    }

    }

以上CAR定义文件经过相应的SDK提供的工具(类似于make命令)处理后将得到一系列框架文件,开发人员遵循该框架提供接口功能实现。

一旦程序员生成了CAR构件库,就可以在脚本里使用。该嵌入式操作系统的XmlGlue引擎负责解释并执行XML所描述的应用。

再请参阅图3所示,其中,首先建立一个XML文件,其内容如图中所示。如果不需要引入其他CAR构件库,则该文件可以提交给和欣操作系统的XMLGlue引擎宿主直接执行。如果需要引入其他CAR构件库,则使用图中代码中所示的语法来引入。该CAR构件库的编写方法按照上面提到的步骤,均遵循相应嵌入式操作系统的CAR构件库编写的一般规则。

本发明的方法与普通的网页开发的相比,虽然一个Web页面也可以由HTML(可以看成是一种特定的XML)与Script来编写。但是它与我们的XML+Script技术存在本质不同:

(1)Web页面是由浏览器来解释执行的,而离开了浏览器,Web页面就不可以单独运行,其功能也就受到浏览器的制约,因而其应用领域也就大大的受到限制;而由本发明的XML+Script方法所开发的应用程序可以在支持XML+Script技术的任何操作系统上直接运行,而且和操作系统高度整合,能够达到二进制原生程序所拥有的全部能力。

(2)Web页面的设计是针对Browser/Server结构进行设计的,所以HTML是以用户界面(UI)描述为重点,并不承载业务处理等工作,这些工作一般是由Web Server来完成的;而本发明的方法中,其设计原则是使用XML+Script来编写完成的独立的应用,这样既可以像HTML一样仅仅用来编写UI,业务处理交由服务器来完成(类似于RIA);也可以使用XML+Script+构件的方式来实现完成的独立应用,非常灵活实用。

(3)一个Web页面可以由HTML来描述,但是HTML的标签是一个有限的集合,HTML也仅仅能够在这个集合的功能框架内来实现UI的描述,其功能和交互能力有限;而在本发明的方法中,XML是一个开放的体系,XML标签可以通过构件来无限扩展,从而给开发提供无限的可能,开发人员可以扩展UI展示方式,也可以扩展相应的业务组件,这些可以无缝的协同工作。

(4)含有Script的Web页面可以与用户进行一些简单交互操作,但受到浏览器的约束,Web应用的人机交互能力是有限的;而由本发明的XML+Script方法所开发的应用程序,由于可以充分利用宿主操作系统上的图形系统,因此能实现丰富的交互方式。

采用了上述的计算机软件系统基于XML和脚本语言应用程序开发运行方法,由于XML和脚本语言(XML+Script)的应用结构简单,易于学习掌握,不但能保证应用有较高的运行效率,也能有效保护公司的技术秘密;同时其可以在支持XML+Script技术的操作系统上直接运行,并和操作系统高度整合,从而可以达到二进制原生程序所拥有的全部能力;而且由于XML是一个开放的体系,XML标签可以通过构件来无限扩展,从而给开发提供了无限的可能,既可以扩展用户界面(UI)的展示方式,也可以扩展相应的业务组件,这些均可以无缝的协同工作;不仅如此,本发明的方法可以充分利用宿主操作系统上的图形系统,因此能实现丰富的交互方式;另一方面,组件模块可以由专业的C++程序员来开发,而用XML+Script来拼装应用可以由擅长脚本但不熟悉C++语言的程序员来完成,进行这样的细化专业分工,可以提高软件开发的生产力,从而为现代计算机软件系统开发的进一步发展奠定了坚实的基础。

在此说明书中,本发明已参照其特定的实施例作了描述。但是,很显然仍可以作出各种修改和变换而不背离本发明的精神和范围。因此,说明书和附图应被认为是说明性的而非限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号