一种构件化软件系统中动态自动适配的编程系统及方法

文档序号:6561163阅读:214来源:国知局
专利名称:一种构件化软件系统中动态自动适配的编程系统及方法
技术领域
本发明涉及计算机技术领域中嵌入式开发里应用CAR(Component Assembly Run-Time,零部件运行单元)构件技术和MVC模式,尤其涉及一种 动态自动适配技术编程系统及实现方法。
背景技术
目前,动态自动适配技术开发思想在桌面应用上已经得到了较广的应 用,如Mozilla的XUL, Microsoft的XAML等。其中XUL(XML User-interface Language)是Mozilla组织研发的跨平台 的描述应用的语言;它专注于Mozilla浏览器中应用的开发,底层依赖于 Mozilla中的XPCOM技术(类似于微软的COM ) 。 XAML(extensible Application Markup Language)贝U是Microsoft新一代操作系统Vista中开 发应用的主要技术之一;它与Vista中的WinFX技术直接集成在一起,主要 用来编写Vista中应用程序的用户界面。发明内容本发明要解决的技术问题是提供一种动态自动适配技术编程系统及 实现方法,为嵌入式应用的开发提供了新的方式。为解决上述技术问题,本发明提供了一种动态自动适配技术编程系 统,包括最外层即Runtime系统,负责初始化和释放所述动态自动适配 技术系统应用所需资源;内部顶层,提供脚本语言及其配套设施;SCI (Script Callable Interface脚本可调用接口)层,用于调用构件类实
例的成员方法,可封装构件类实例,并将脚本参数转换为构件参数;构件 技术层,可提供服务;其中SCI层用于脚本语言与构件系统间通信。本发明还提供了一种动态自动适配技术编程系统实现方法,运用上述动态自动适配技术编程系统上,基于CAR构件技术基础上,使CAR构件系 统支持Model;脚本语言支持View,动态自动适配技术编程系统实现 Controller的构件组装;其中构件组装包括如下步骤a.脚本发起调用; b. SCI层中通过SCIModule或者SCIObjectFactory获取相应构件模块, 创建脚本所请求的构件实例,并封装成SCIObject; c. SCIObject使用 Script Adapter (脚本适配器)进行脚本弱类型参数向CAR构件系统强类型 参数的转换;d. SCIObject向实际的构件实例发起调用请求;e.构件实 例的方法运行结束并返回;f. SCIObject调用Script Adapter将返回值 进行相应的封装,提供给脚本语言;g.脚本语言通过Script Adapter 获取返回值,完成本次调用。XML-Glue,是一种构件化软件系统中的动态自动适配的编程系统,该 系统支持XML,脚本语言和构件之间进行相互操作,采用MVC模式分离应 用界面和逻辑的实现,使得应用程序开发简单快捷;由于XML和脚本皆可 由服务器动态生成,在网络环境下,则利用XML和脚本语言的动态灵活的 特点可以进行无缝计算,让应用随需应变。本发明通过使用XML/JavaScript来描述应用的UI (用户界面,User Interface),而由CAR构件来完成应用的逻辑,然后由XML-Glue来完成 二者的拼装,并形成一个完整的应用。本发明简单易用、易于维护并具有 很好的扩展能力可提高开发人员开发效率。


图1是本发明XML-Glue编程系统架构图;图2是本发明XML-Glue编程系统中构件组装实现机制图;图3本发明运行效果图;图4是XML-Glue中的MVC框架模型。
具体实施方式
下面结合附图及具体实施例对本发明作进一步详细的说明。 实施例首先讲述本发明的原理本发明中的动态自动适配技术编程技术,体 现为XML-Glue编程技术,是嵌入式操作系统上一个Rich Client应用的 MVC (Model-View-Controller,模型-视图-控制器)开发框架,其核心的 技术是基于CAR (Component Assembly Run-Time,零部j牛运行单元)构件 技术发展起来的。XML-Glue的核心思想是使用XML/JavaScript来描述应 用的UI (用户界面,User Interface),而由CAR构件来完成应用的逻辑, 然后由XML-Glue来完成二者的拼装,并形成一个完整的应用,如图4所 示为XML-Glue中的MVC框架模型。它对外提供了 XML-Glue应用的运行环 境以及多种脚本语言来使开发人员更方便快捷的开发应用,对内则在脚本 语言和CAR构件系统之间搭起了通信的桥梁,实现了以脚本方式完成构件 组装。所谓MVC是Mode1-View-Controller的縮写,是国外用得比较多的 一种设计模式为了获得更好的系统结构而推出的一种宏观的设计模式,模 式(Model)代表系统的模型层,视图(View)是模型的展现层,控制器 (Controller)负责业务的流转,使用MVC可以使得系统的层次清晰,降低
各个部分的耦合。MVC包括三类对象Model是应用对象是数据与业务逻 辑元件,封装的是数据源和所有基于对这些数据的操作;View是表示元 件,也称为用户接口元件,封装的是对数据源Model的一种显示, 一个模 式可以用于多个视图,View是它在屏幕上的表示;Controller定义用户 界面对用户输入的响应方式,是响应用户输入的元件,封装的是外界作用 于模型的操作,控制器将用户接口转化为模式的变化,并定义用户接口对 这些事件的响应方法。用户接口可包括处理多种协议的操作,如HTTP、 WAP等。完整的XML-Glue系统架构可以表示为图1,其中1) 最外层是XML-Glue运行环境(Runtime),负责初始化和释放 XML-Glue应用所需资源。2) 内部顶层提供脚本语言及其配套设施,比如脚本与CAR构件方法调 用之间参数类型的互相转换机制,XML与其它脚本语言之间的数据共享; 这一层相当于提供了对MVC中View的支持。它又包括如下几部分XML/JavaScript/Other Scripts提供了多种描述XML-Glue应用的形 式,让开发人员能够灵活利用各种脚本语言的优势;Script Adapter是各个脚本语言中实现了 ISCIParameterNormalizer 接口的构件(称为SCIParamConvertor)的总称,这些构件负责将其对应 脚本代码中弱类型的方法参数转换为CAR构件方法中的强类型的参数,而 在构件方法返回的时候将返回值封装成脚本可识别的数据类型;Error Interpreter (错误翻译器)是每种脚本语言中负责翻译调用 构件方法的出错信息的翻译器的总称,它将CAR构件中的方法调用发生错
误后返回的HRESULT值翻译成文本,并以脚本语言特定的错误机制(如 JavaScript中的异常)通知给开发和使用人员。3) SCI (Script Callable Interface)是脚本语言与CAR构件系统通 信的桥梁。这一层相当于提供了对MVC中Controller的支持,在组装机 制实现一节会详细叙述。4) CAR构件系统。是服务的提供者。这一层相当于提供了对MVC中 Model的支持。在利用上述XML-Glue系统进行开发时,Model由CAR构件系统支持, View由脚本语言支持,作为Controller的构件组装则是XML-Glue的核 心工作。XML-Glue利用脚本语言的众多优点,实现了一种新的适合于嵌 入式系统的构件组装机制,使得应用开发方便快捷。图2所示过程描述了 XML-Glue中的构件组装机制的实现过程a. 脚本发起调用;b. SCI通过SCIModule或者SCIObjectFactory获取相应的构件模 块,并创建脚本所请求的构件实例,封装成SCIObject;c. SCI0bject使用Script Adapter进行脚本弱类型参数向构件强 类型参数的转换;d. SCI0bject向实际的构件实例发起调用请求;e. 构件实例的方法运行结束并返回;f. SCI0bject调用Script Adapter将返回值进行相应的封装,提 供给脚本语言;g. 脚本语言通过Script Adapter获取返回值,完成调用。
要实现这一机制关键是解决脚本与构件间的交互问题。从图1可以看 出,SCI处于脚本语言与构件系统之间,是脚本语言与构件系统通信的桥梁。SCI最主要的功能是调用构件类实例的成员方法,所以其主要工作除了封装构件类实例外,就是将脚本参数转换为构件参数。这一转换过程是通过CAR构件技术对元数据的支持来实现的。元数据中存放了所有类、接 口、方法和参数的数据,通过对元数据的分析计算,SCI能够找到所需的 接口方法的入口点以及参数信息,使得以脚本方式操作构件成为可能。参 数转换过程大致分为如下3个步骤1) 由脚本语言引擎分析脚本从而获得原始的参数;2) 将脚本语言对应的SCIParamConvertor作为参数传递给SCIObject 的Invoke方法。在Invoke过程中,SCI0bject根据内部构件实例方法的 元数据,调用SCIParamConvertor的Normalize方法向脚本语言提出转换 请求(如果在xml中只有字符型数据〈Methodl a二" 50" b=,, 100" />, 而构件中方法的声明为HRESULT Methodl (int a, int b);,则需要将"50","100"转换成int类型)。SCIParamConvertor就根据元数据中描述的参 数类型要求将脚本参数转换成CAR构件方法中的强类型参数。称这个阶段 为参数正规化;3) 将正规化后的参数转换为机器栈参数压入堆栈,调用内部构件的 目标方法,完成方法调用。这一步依赖目标编译器的栈机制,对整个系统 概念无影响,不做讨论。SCI由以下几个模块组成,见表l:
<formula>formula see original document page 11</formula>11 <w:form caption=〃Hello World!〃 left二"10" top="10" width=〃70" height="50〃〉12 〈w:label x:id二〃hel1。〃 left=〃0〃 top-〃0〃 width=〃3S〃 height:〃20〃 />13 <w:button x:id=〃btnl" caption="Click Me" left="37" top=〃0〃 width=〃70〃 height二〃20〃〉14 <x:event type=〃Event—Click" handler javascript :OnBtnClick() "/>15 </w:button〉16 </w:form>17 </x:xglue〉程序中2-3行通过名字空间(xmlns)指定了所使用的CAR构件;4-10 行嵌入了 JavaScript脚本来添加一个事件处理函数,丰富应用的表现能 力;11-17行用XML描述了构件实例之间的关系。其运行效果可参见图3。左边是程序运行后的初始状态,当用户鼠标 点击按钮Click后,程序界面变为右图所示样子,按钮左边打印出hello 字样。可见,XML-Glue描述应用的能力是十分强大且简洁的,大大简化了 应用的开发难度、提高了应用开发的效率。与XUL和XAML相比,XML-Glue技术在基于CAR构件技术的基础上, 充分发挥了 CAR构件技术的模块化、高效率等特点以及脚本语言的动态、 灵活的特点,本发明XML-Glue在嵌入式系统中也提供了相应的框架,为 嵌入式应用的开发提供了新的选择。综上所述,本发明能够动态拼装构件,构件只是专注于它自己的业务 逻辑,而构件之间的联系则通过脚本语言来完成。本发明在给应用开发具 有如下优点1) 开发人员分工明确,提高开发效率。简单是XML-Glue的一个主要优点。基于XML-Glue的应用UI和逻辑 是分离的,而UI又是XML描述,与传统的界面编程相比,用XML来描述 更易于使用。UI设计人员可以像设计HTML—样方便的设计应用程序界面, 几行XML可完成原来很多行〔/0++代码的工作。而程序开发人员则只需关 注于应用业务逻辑的实现,不用再用0/^++来编写繁琐的UI 了。这个事 实可能最终带来用户界面开发更高的效率和更低成本。2) 易于应用维护、定制。手机厂商可以为不同型号的手机应用维护一份核心的代码,因为基于 XML-Glue的应用UI和逻辑是分离的,如果开发两款不同的手机,可能需 要两种不同的UI,但是逻辑是一致的,那么只需将UI部分重新设计就可 以了,复杂的逻辑代码(C/C++)则无需任何更改、编译等工作。而传统 的应用中,UI和逻辑都用0/0++来实现,而且混杂在一起, 一点点界面的 更改都需要修改〔/0++代码,并且重新编译等工作。可见XML-Glue也为 应用的移植降低了很大的成本。3) 继承了CAR构件技术的优秀特性,应用具有很好的扩展能力。 因为XML-Ghie基于CAR构件技术,所以,只要符合CAR构件技术标准的构件,都可以在XML-Glue中使用。例如,用户可以编写特定的UI
控件,就可以象-种嵌入式图形操作系统内置的UI控件一样使用;另夕卜,如果需要,甚至可以在XML-Glue中使用脚本来操作Socket,进行通讯。 总之,只要通过CAR构件技术能够完成的工作,XML-Glue都可以很好的 完成。
权利要求
1、一种实现构件的动态自动适配技术编程系统,其特征在于,包括最外层即Runtime系统,负责初始化和释放所述动态自动适配系统应用所需资源;内部顶层,提供脚本语言及其配套设施;SCI层,用于调用构件类实例的成员方法,可封装构件类实例,并通过内部顶层提供的参数类型转换机制将脚本参数转换为构件参数进行方法调用,将构件方法的返回值转换为相应的脚本数据类型;构件层,实现业务逻辑并提供服务;其中SCI层用于所述脚本语言与构件系统间通信。
2、 根据权利要求l的动态自动适配技术编程系统,其特征在于,所 述内部顶层包括XML、 JavaScript、 Other Scripts提供各种脚本语言 且描述了动态自动适配技术应用的多种形式;Script Adapter,为所述各 种脚本语言中实现接口的构件,负责将其对应脚本代码中弱类型的方法参 数转换为所述一种构件技术中强类型的参数,并在构件方法返回的时候将 返回值封装为对应脚本可识别的数据类型;Error Interpreter为每种脚 本语言翻译器,负责翻译调用构件方法的出错信息,将该构件技术中的方 法调用发生错误后返回的值翻译成文本,并以脚本语言特定的错误机制反 馈用户。
3、 根据权利要求1或2的动态自动适配技术编程系统,其特征在于, 所述SCI层包括SCIModule模块,负责对构件模块的抽象,封装了构件 模块的元数据接口和IModule接口; SCIObjectFactory模块,负责对构 件类厂的抽象,封装了元数据接口指针和类厂指针;SCI0bject模块,负 责对构件实例的抽象,封装了构件实例的元数据接口和IObject接口。
4、 一种动态自动适配技术编程系统实现方法,用于根据权利要求1或2或3的动态自动适配技术编程系统上,其特征在于,所述构件系统支 持Model;所述脚本语言支持View,所述动态自动适配技术编程系统实现 Controller的构件组装;其中构件组装包括如下步骤a. 脚本发起调用;b. 所述SCI层中通过SCIModule或者SCI0bjectFactory获取相应构 件模块,创建脚本所请求的构件实例,并封装成SCIObject;c. 所述SCI0bject使用所述Script Adapter进行脚本弱类型参数向 CAR构件系统强类型参数的转换;d. 所述SCIObject向实际的构件实例发起调用请求;e. 所述构件实例的方法运行结束并返回;f. 所述SCI0bject调用所述Script Adapter将返回值进行相应的封 装,提供给脚本语言;g. 脚本语言通过Script Adapter获取返回值,完成本次调用。
5、 根据权利要求4的动态自动适配技术编程系统实现方法,其特征 在于,所述步骤c参数的转换过程包括如下步骤1) 由脚本语言引擎分析脚本以获得原始参数;2) SCIParamConvertor根据元数据中描述的参数类型要求将脚本参 数转换成构件系统中的强类型参数,完成参数正规化;3) 将正规化后的参数转换为机器栈参数压入堆栈,调用内部构件的 目标方法,完成方法调用。
6、 根据权利要求4的动态自动适配技术编程系统实现方法,其特征在于,所述步骤2)参数正规化指将脚本语言对应的SCIParamConvertor作 为参数传递给SCIObject的Invoke方法;在Invoke过程中,SCI0bject根据 内部构件实例方法的元数据,调用SCIParamConvertor的Normalize方法向 脚本语言提出转换请求。
全文摘要
本发明公开了一种构件化软件系统中动态自动适配的编程系统及实现方法,本发明系统,包括最外层即Runtime系统、内部顶层、SCI层、构件系统层;其中SCI层用于脚本语言与构件系统间通信。本发明实现方法,运用上述动态自动适配编程系统上,基于构件技术基础上,使构件系统支持Model;脚本语言支持View,动态自动适配编程系统实现Controller的构件组装。本发明通过使用XML/JavaScript来描述应用的UI,而由构件来完成应用的逻辑,然后通过本系统动态自动完成二者的拼装,并形成一个完整的应用。本发明简单易用、易于维护并具有很好的扩展能力可提高开发人员开发效率。
文档编号G06F9/44GK101158894SQ20061011689
公开日2008年4月9日 申请日期2006年10月8日 优先权日2006年10月8日
发明者牛靖宇, 果 陈, 榕 陈 申请人:上海科泰世纪科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1