首页> 中国专利> 一种构件化软件系统中动态自动适配的编程系统及方法

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

摘要

本发明公开了一种构件化软件系统中动态自动适配的编程系统及实现方法,本发明系统,包括:最外层即Runtime系统、内部顶层、SCI层、构件系统层;其中SCI层用于脚本语言与构件系统间通信。本发明实现方法,运用上述动态自动适配编程系统上,基于构件技术基础上,使构件系统支持Model;脚本语言支持View,动态自动适配编程系统实现Controller的构件组装。本发明通过使用XML/JavaScript来描述应用的UI,而由构件来完成应用的逻辑,然后通过本系统动态自动完成二者的拼装,并形成一个完整的应用。本发明简单易用、易于维护并具有很好的扩展能力可提高开发人员开发效率。

著录项

  • 公开/公告号CN101158894A

    专利类型发明专利

  • 公开/公告日2008-04-09

    原文格式PDF

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

    申请/专利号CN200610116897.X

  • 发明设计人 陈榕;陈果;牛靖宇;

    申请日2006-10-08

  • 分类号G06F9/44(20060101);

  • 代理机构31211 上海浦一知识产权代理有限公司;

  • 代理人丁纪铁;李隽松

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

  • 入库时间 2023-12-17 19:58:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-09-24

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

    专利权的终止

  • 2011-09-07

    专利权的转移 IPC(主分类):G06F9/44 变更前: 变更后: 登记生效日:20110727 申请日:20061008

    专利申请权、专利权的转移

  • 2010-05-12

    授权

    授权

  • 2008-06-04

    实质审查的生效

    实质审查的生效

  • 2008-04-09

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域中嵌入式开发里应用CAR(ComponentAssembly Run-Time,零部件运行单元)构件技术和MVC模式,尤其涉及一种动态自动适配技术编程系统及实现方法。

背景技术

目前,动态自动适配技术开发思想在桌面应用上已经得到了较广的应用,如Mozilla的XUL,Microsoft的XAML等。

其中XUL(XML User-interface Language)是Mozilla组织研发的跨平台的描述应用的语言;它专注于Mozilla浏览器中应用的开发,底层依赖于Mozilla中的XPCOM技术(类似于微软的COM)。XAML(eXtensibleApplication Markup Language)则是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(用户界面,UserInterface),而由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,零部件运行单元)构件技术发展起来的。XML-Glue的核心思想是使用XML/JavaScript来描述应用的UI(用户界面,User Interface),而由CAR构件来完成应用的逻辑,然后由XML-Glue来完成二者的拼装,并形成一个完整的应用,如图4所示为XML-Glue中的MVC框架模型。它对外提供了XML-Glue应用的运行环境以及多种脚本语言来使开发人员更方便快捷的开发应用,对内则在脚本语言和CAR构件系统之间搭起了通信的桥梁,实现了以脚本方式完成构件组装。所谓MVC是Model-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.SCIObject使用Script Adapter进行脚本弱类型参数向构件强类型参数的转换;

d.SCIObject向实际的构件实例发起调用请求;

e.构件实例的方法运行结束并返回;

f.SCIObject调用Script Adapter将返回值进行相应的封装,提供给脚本语言;

g.脚本语言通过Script Adapter获取返回值,完成调用。

要实现这一机制关键是解决脚本与构件间的交互问题。从图1可以看出,SCI处于脚本语言与构件系统之间,是脚本语言与构件系统通信的桥梁。SCI最主要的功能是调用构件类实例的成员方法,所以其主要工作除了封装构件类实例外,就是将脚本参数转换为构件参数。这一转换过程是通过CAR构件技术对元数据的支持来实现的。元数据中存放了所有类、接口、方法和参数的数据,通过对元数据的分析计算,SCI能够找到所需的接口方法的入口点以及参数信息,使得以脚本方式操作构件成为可能。参数转换过程大致分为如下3个步骤:

1)由脚本语言引擎分析脚本从而获得原始的参数;

2)将脚本语言对应的SCIParamConvertor作为参数传递给SCIObject的Invoke方法。在Invoke过程中,SCIObject根据内部构件实例方法的元数据,调用SCIParamConvertor的Normalize方法向脚本语言提出转换请求(如果在xml中只有字符型数据<Method1 a=”50”b=”100”/>,而构件中方法的声明为HRESULT Method1(int a,int b);,则需要将“50”,“100”转换成int类型)。SCIParamConvertor就根据元数据中描述的参数类型要求将脚本参数转换成CAR构件方法中的强类型参数。称这个阶段为参数正规化;

3)将正规化后的参数转换为机器栈参数压入堆栈,调用内部构件的目标方法,完成方法调用。这一步依赖目标编译器的栈机制,对整个系统概念无影响,不做讨论。

SCI由以下几个模块组成,见表1:

模块描述SCIModule对构件模块的抽象。封装了构件模块的元数据接口和IModule接口。可以根据构件类名创建一个对具体构件实例封装的SCIObject实例,也可以根据构件类名获取对相应的类厂封装的SCIObjectFactory实例。SCIObjectFactory对构件类厂的抽象。封装了元数据接口指针和类厂指针。脚本语言获取它的实例后,对于需要创建同类构件多个实例的情况,可以提高运行效率。SCIObject对构件实例的抽象。封装了构件实例的元数据接口和IObject接口。脚本语言只能通过它来将操作请求发送给构件实例,由它来完成对构件方法的实际调用

表1 SCI模块及其描述

通过一个简单的实施例即代码示例来看一看XML-Glue是如何描述一个应用的,具体代码如下:

1<?xml version=″1.0″encoding=″utf-8″?>

2<x:xglue xmlns:x=″http://www.koretide.com/xml-glue″

3    xmlns:w=″elaever.dll″>

4<script language=″javascript″>

5<![CDATA[

6  function OnBtnClick(){

7    hello.text=″hello″;

8  }

9]]>

10</script>

    11       <w:form caption=″Hello World!″left=″10″top=″10″

width=″70″height=″50″>

    12  <w:label  x:id=″hello″  left=″0″ top=″0″width=″35″

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可完成原来很多行C/C++代码的工作。而程序开发人员则只需关注于应用业务逻辑的实现,不用再用C/C++来编写繁琐的UI了。这个事实可能最终带来用户界面开发更高的效率和更低成本。

2)易于应用维护、定制。

手机厂商可以为不同型号的手机应用维护一份核心的代码,因为基于XML-Glue的应用UI和逻辑是分离的,如果开发两款不同的手机,可能需要两种不同的UI,但是逻辑是一致的,那么只需将UI部分重新设计就可以了,复杂的逻辑代码(C/C++)则无需任何更改、编译等工作。而传统的应用中,UI和逻辑都用C/C++来实现,而且混杂在一起,一点点界面的更改都需要修改C/C++代码,并且重新编译等工作。可见XML-Glue也为应用的移植降低了很大的成本。

3)继承了CAR构件技术的优秀特性,应用具有很好的扩展能力。

因为XML-Glue基于CAR构件技术,所以,只要符合CAR构件技术标准的构件,都可以在XML-Glue中使用。例如,用户可以编写特定的UI控件,就可以象一种嵌入式图形操作系统内置的UI控件一样使用;另外,如果需要,甚至可以在XML-Glue中使用脚本来操作Socket,进行通讯。总之,只要通过CAR构件技术能够完成的工作,XML-Glue都可以很好的完成。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号