基于“和欣”的构件化Car Faces技术

来源 :计算机时代 | 被引量 : 0次 | 上传用户:liaqin18
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:在以Car构件为基础的嵌入式研究领域中,构建面向Web服务的Car构件运行容器一直是研究的热点。文章阐述了面向Web服务的Car构件运行容器的特点,介绍了构件技术以及“和欣”操作系统,讨论了构件化的Web Container的分层设计理念,阐述了在“和欣”操作系统上实现的基于构件的Car Faces系统。该系统充分发挥了构件技术的优势,并具有简单、高效可配置等特点,很好地满足了以Car构件为基础的Web应用程序的需求。
  关键词:嵌入式系统;Web容器;构件技术;和欣
  
  0 引言
  
  基于构件的软件工程是实现高生产率、低维护费用和高可靠软件产品的关键技术,在这种工程模式下,按照一定的架构把构件组装起来成为软件开发的核心工作。目前绝大多数传统的嵌入式应用仍然是采用强类型的系统编程语言(比如c和Java等)来完成对构件的组装。对于一个应用程序仅需改变应用的表现层,而不必大量修改构件功能的情况,传统开发模式所要经过的修改一编译一运行的过程就显得效率低下,开发周期长和不能随需求灵活变化的弱点就暴露了出来;另外,采用强类型语言来实现功能构件并将这些构件组装成应用程序,将造成构件之间的强耦合关系,会使得开发维护的难度加大。
  为了实现构件问的松散耦合,提高开发维护的效率和适应需求变化的能力,有必要在应用的开发中引入新的开发模式,采用新的构件组装技术来适应新形势的发展。考虑到脚本语言的语法简单、功能强大、易学易用的特点,本文基于CAR构件技术,提出了新的XML+CAR+其他脚本语言(Javascript、Ruby等)的Car Faces编程范式,实现了更为灵活的构件组装机制,为在“和欣”上的应用开发提供了更加快速、灵活的编程范式。另外,手机上网已成为一种潮流,采用原始的模型势必导致服务器高负载运转,所以也需要一种新的架构模式,用来解决手机上网所带来的新问题。
  
  1 构件技术及“和欣”操作系统
  
  构件技术是在面向对象技术的基础上发展起来的。面向对象技术通过类的封装和继承成功实现了代码级的复用。类的封装性,实现数据抽象和信息隐蔽;而类的继承,提高了代码复用性。但是面向对象的复用脱离不了代码复用的本质,对象之间的关系在编译时被固定,模块之间的关系是静态的,无法解决软件动态升级和软件模块动态替换。
  构件技术通过二进制的封装以及动态链接技术解决软件的动态升级和软件的动态替换问题。面向构件技术对一组类的组合进行封装,它代表完成一个或多个功能的特定服务,同时为用户提供多个接口。整个构件隐藏了具体的实现,只用接口提供服务。这样,在不同层次上,构件均可以将底层多个逻辑组合成高层次上的粒度更大的新构件。构件之间通过约定的接口进行数据交换和信息传递,构件的位置是相互透明的,可以在同一个用户进程空间,也可以在不同的用户进程空间,甚至在不同的机器上;而且不同的构件可以用不同的语言编写,只要它们符合事先约定的构件规范。
  “和欣”操作系统是科泰世纪公司开发的具有自主知识产权、基于微内核和构件技术,支持构件化应用的嵌入式操作系统。“和欣”操作系统对CAR构件技术提供了内置的支持。
  CAR构件技术是面向构件编程的编程模型。它规定了一组构件间相互调用的标准,使得二进制构件能够自描述,能够在运行时动态链接,进行系统升级的时候也只需要升级相关的构件即可,具有可靠性、容错性、安全性,代表了软件工厂化生产的方向。
  
  2 构件化Car Faces的设计
  
  为了能满足新的需求,如图1所示,整个系统的服务器端分为四层:呈现层、导行层、验证层和业务处理层。另外,底层采用Car构件支撑各个环节的运行和交互。
  


  图1 Car Faces业务逻辑架构
  其中,呈现层实现视图的相互转换:(1)将页面提交的html代码还原成Car Faces树,并以xml树形格式呈现。同时这一层负责将树上的各节点值或组件与后台支撑的Car构件动态绑定。(2)将页面导行系统提交的Car Faces树转换成html代码表示,整个系统通过这一层实现服务器和客户的直接交互。
  当呈现层从客户端接收完数据并转化成Car Faces代码后,就将转换结果递交到验证层。验证层从树的根结点遍历整棵树并调用绑定到各结点的相应的验证程序。如果一旦遇到错误信息,验证程序将把所得到的错误信息排队。验证结束后根据决策代码决定是否向下层提交或者直接调用Response.finish()将错误信息呈现给客户端。验证过程中,我们可以调用默认程序EzValidate,也可以调用用户自定义为结点绑定的验证程序。验证程序的实现,也是通过调用各后台支撑Car构件来完成的。
  如果验证程序验证结束,将进入业务处理模块。在这一模块中我们定义了许多业务Car构件,通过调用业务Car构件的应用程序,可以完成对用户数据的处理。业务处理模块根据客户端产生的事件调用相应的业务处理程序,最终得到处理结果。处理完成后将处理结果提交业务导行模块。
  导行层次是为客户呈现具体页面而设计的。在这一层里,我们通过业务层的运行结果或者错误信息选择适当的页面信息返回给客户。用户根据返回信息可以知道操作的结果。
  所以在整个架构的设计过程中,构件容器占据着至关重要的作用。
  
  3 Car Faces生命周期
  
  图2为我们展示了car Faces请求响应的生命周期。
  


  图2 Car Faces生命周期
  接到客户端的请求后,首先将请求视图转换为Car Faces树状视图。在转换过程中可能会出现转换异常现象。当发生了异常后,应用程序捕获异常,根据错误类型作相应的处理。
  呈现结束后,根据转换的结果树的值动态绑定到相应的构件上,并在此作一些初步处理。
  上面两步完成后,生命周期将进入下一个阶段:验证处理阶段。在验证处理阶段将对Car Faces视图的每个结点实行验证处理。一旦出现错误,处理程序立即捕获错误,并根据错误类型实施相应的处理。
  以上各阶段工作完成后,将进行的就是核心工作:业务处理。业务处理调用业务处理程序对转换后的数据进行相应的处理,进而达到为客户服务的目的。在这一阶段也可能会有意想不到的异常发生。一旦发生异常,将有异常处理程序做相应的处理。
  业务处理完毕后,处理结果树被递交给页面导行。页面导行根据业务处理结果做出抉择,最终确定要向用户返回哪个页面。
  上面所有处理完成后,Car Faces生命周期也进入了最后的阶段:页面呈现。在这一阶段,将根据页面导行程序所递交的结果对结果树实施页面呈现。同时,服务器端各种组件给用户呈现可识别代码,最终以html代码的形式返回给客户。   
  4 Car Faces在“和欣”上的实现
  
  完整的Car Faces架构可以表示为图3
  


  图3 Car Faces系统架构
  (1)最外层是Car Faces运行环境(Runtime),负责初始化和释放Car Faces应用所需资源。
  (2)内部顶层是脚本语言及其配套设施。这一层相当于提供了对MVC中View的支持。
  XML/JavaScriptt/Other Scripts提供了多种描述Car Faces应用的形式,让开发人员能够灵活利用各种脚本语言的优势。
  (3)SCI(script Callable Interface)是脚本语言与CAR构件系统通信的桥梁。这一层相当于提供了对MVC中Controller的支持。
  (4)CFSTL(Car Faces Standard Tag Library)是Car Faces提供的标准标签库,其中Car Faces提供了标准的自定义组件。CTL(Custom Tag Library)是用户自定义标签库。页面设计人员能够使用这两个标签库所提供的标签。
  (5)CAR构件系统。它是服务的提供者。这一层相当于提供了对MVC中Model的支持。在这一层,实现了各种Car构件。这些构件支持着上层的业务逻辑能够顺畅运行。
  本Car Faces架构集成了XML-GIue特点。
  通过以上论述,可以看出使用Car Faces具有诸多优点:(1)Car构件直接运行在本地机器上,某些操作甚至可以直接控制硬件,所以其速度相对较快。(2)Car Faces实现了清晰的分层概念,不像AJXA只局限于技术的实现。(3)组件的可扩展性好。在本系统中,提供了许多标准组件,但同时也给用户提供了组件定义接口,使用户开发出自己的组件。(4)采用本体系容易实现瘦客户端。一些简单的逻辑判别可在客户端直接完成,比如采用Script语言提供验证机制。这些特点为在手机上实现快速网络浏览器提供了捷径。
  
  5 结束语
  
  本文采用科泰公司的CAR构件技术在和欣操作系统上实现了一代新的网络开发架构。该体系中的一些简单业务逻辑可以以Script的形式直接嵌套在客户端代码中。另外本架构采用了清晰的分层概念,使得开发和调试更加快捷方便。借助CAR构件的元数据和自描述信息,在“和欣”操作系统上使用JavaScript、Ruby等脚本语言和XML文件动态地编写图形界面成为可能。使用构件化的方法开发图形系统也可以推广到其他支持构件的操作系统上。
  下一步的工作是完善系统的构件粒度划分,同时优化各步算法,以提高Car Faces系统的效率。
  注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
其他文献
摘 要:交又查询是结构化查询的一种,它将数据表通过字段的内容进行归类,形成行、列,重新组成新的表。MicrosonAccess作为一个小型关系型数据库管理工具,采用了特定的语法实现了快速、易用的交叉查询,针对这一语法,文章以实例的方式简要叙述了多种情况下交又查询的实现过程、讨论了使用Access进行交叉查询需要掌握的技巧,并对实际应用过程中容易碰到的问题作了分析,提出了相应解决办法。  关键词:
期刊
摘 要:基于Windows平台下.Net Framework中GDI+二维图形类库,以路径(GraphicsPath)表示图元形状,用仿射变换矩阵的乘法进行图元的连续变换,推导出图元不失真连续变换的条件,并应用图元变换的矩形区域归整化,解决了文本图元变换时字体放缩的难题。  关键词:Net;GDI+;图元变换;路径;矩阵;不失真;文本变换
期刊
摘 要:叙述了如何利用虚拟现实建模语言X3D语法,采用变通的方式来模拟面向对象编程的方法:借助X3D中的原型(PROTO)节点和Script节点,实现了面向对象编程中的如数据封装、继承等功能特性,并给出了相应的实例。  关键词:X3D;面向对象;原型;节点
期刊
摘要:利用Eclipse插件的可扩展机制开发了JTang-Eclipse插件。JTang-Eclipse插件是一个将JTang服务器集成到Eclipse上的工具,遵循Eclipse插件开发平台提供的框架,支持服务器生命周期管理,可以在JTang上部署J2EE archive包,并提供打包、部署描述符自动生成和JSP编译等辅助J2EE开发的功能。  关键词:Eclipse;插件;J2EE;PDE;A
期刊
摘要:对于一些大型的复杂网络系统,利用传统的集中式系统监控模型进行监控和故障诊断是困难的。文章给出了一种将移动Agent技术用于系统监控的分布式系统监控模型。利用这种系统监控模型可以减少网络数据流量,缩短系统监控与故障诊断时间。  关键词:分布式;移动Agent;系统监控;监控模型    0 引言    在现有的集中式系统监控体系中,客户端与服务器之间传递着大量的数据,网络流量很大,增加了网络拥塞
期刊
摘要:阐述了在共享式以太网中用Visual c++6.0实现的基于原始套接字技术的改进网络嗅探器实现。在设计上,除了捕获数据包以外,还进一步解析出应用层协议,运用模式匹配的KMP算法截获相关的数据信息,并保存到本机文件中。  关键词:共享式以太网;Visual C++6.0;原始套接字;网络嗅探器;KMP算法    0 引言    随着计算机和网络的普及,单独工作、不需要与其他用户交互的应用程序越
期刊
摘要:阐述了ARP欺骗技术的基本原理,对ARP欺骗造成局域网无法正常通讯的实例进行分析,提出了针对ARP欺骗的多种防范办法。实际应用效果较好。  关键词:ARP;局域网;MAC地址;IP地址;TCP/IP    0 引言    在大型局域网的维护工作中,最近常常发现网络时断时续的现象,而且断网的计算机也不固定。经过多方面的监控和测试,最终确定是时下比较流行的ARP欺骗病毒导致断网。由于这个病毒相当
期刊
摘 要:在课件的开发过程中,如何对学习内容进行导航,是一个必不可少的设计环节。Budmenu.u32函数是基于Windows API开发的Authorware扩展函数,通常用于制作菜单。文章结合作者多年的课件开发实践,从全新的角度介绍了如何利用该函数设计和制作导航菜单,并给出了具体实例。借鉴文章给出的方法,可以比较容易地实现对学习内容的导航,从而提高课件的开发效率和教学效果。  关键词:Auth
期刊
摘要:CORBA的通知服务相对于传统的事件服务,增加了一系列新的特性,对海量教育资源信息的订阅发布提供了更大的灵活性和通用性。文章根据通知服务原理,构建了一个资源订阅系统模型,用户可以订阅感兴趣的信息,事件通知服务负责发布事件,同时将事件分发给感兴趣的订阅者。模型采用事件过滤机制、分组共享、队列优先级设计,提高了事件通知的可靠性。  关键词:事件通知服务;发布/订阅;事件过滤;事件通道    0 
期刊
摘要:为提高网络浏览器缓存系统性能,降低用户等待时间,提出了一种基于性能约束的P2P Web Cache模型。理论分析和模拟测试表明,该模型能够减少连接时间和传输时间。  关键词:缓存系统;性能约束;P2P Web Cache;可升级;存取时间    0 引言    随着网络存取数量的飞速增长,如何提高网络的服务质量已成为研究的热点。传统的基于服务器代理的技术如Squid和Netcache,虽然易
期刊