基于XMLC的EOS页面构件设计与实现

时间:2022-05-15 04:09:19

【摘要】(Information of Judicature Department, SJPOPC, Deyang 618000, China) Abstract: Based component is the basic target of the software development, Primeton EOS midware sys...

基于XMLC的EOS页面构件设计与实现

摘要:基于构件的软件开发是软件工程的基本目标之一,Primeton EOS 中间件系统基于J2EE架构成功的实现了WEB应用开发的构件化,并创造性的以XML总线显著降低了各构件耦合度,使运算构件,逻辑构件,展现构件,数据构件,流程构件无缝的融合。但是对于页面构件,仍然使用传统的JSP页面,无论在构件设计理念还是运行效率方面都不尽人意。该文将探讨如何使用xmlc技术重新设计eos表示购件,使其充分利用XML总线的设计优势,实现构件理念与运行效率的最优化。

关键词:EOS;XMLC;页面构件

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009)15-3945-03

XMLC Based EOS's Page-component Design and Implement

ZHOU Jiang

(Information of Judicature Department, SJPOPC, Deyang 618000, China)

Abstract: Based component is the basic target of the software development, Primeton EOS midware system based on J2EE architecture has implemented the component idea on web application development. And use XML bus in a creative way to reduce the coupling degree of the component. Make operation component, logic component, exhibit component, data component and flow component syncretize seamless. But the page component remain use tradition JSP technology, whether to idea of component design or efficiency, it is bad. This paper will discuss how to redesign EOS page component, take full advantage of XML bus and implement the optimization of efficiency and design pattern.

Key words: EOS; XMLC; page component

1 绪论

1.1 EOS相关技术

PrimetonEOS [1]是上海普元信息公司设计的一款面向构件的中间件产品,是基于J2EE之上的面向构件的完整的互联网应用体系。EOS构件化平台提供对EOS构件的可视化定义、组装、、构件运行引擎、构件库管理、构件库资源访问等构件的整个构件、生产运行、管理环境的支持、并提供完善的服务。从功能上主要包括:EOS构件运行和管理环境,EOS构件集成开发环境,EOS工作流,EOS构件库4大模块。

EOS平台的核心为XML数据总线技术[2]以及基于构件工作流技术[3]。以下重点介绍EOS数据总线技术,如图1所示,EOS构件(运算构件、逻辑构件、展现构件、数据构件、页面构件)间通过XML总线进行数据传输。使用XPATH技术实现数据定位与访问。

EOS Server将系统内存分层为3个数据区域,彼此间通过XML通信,每种数据区域有不同的作用范围和生命周期,数据来源也不尽相同。

Session Context:在一个HTTP会话范围内有效。只能由展现逻辑构件操作,可自动拷贝到Request Context中。

Request Context:在一个HTTP请求范围内有效,只能由展现逻辑操作,可通过展现数据引擎传入被调用者的Biz Context中。

Biz Context:通过业务数据流推动业务逻辑进行,只能由业务构件和预算构件访问,可将XML格式的数据返回给展现逻辑。

1.2 XMLC相关技术

Bolgoa 大学Luca Bompani 等教授研究的XMLC技术提出了XML文件新的解析方法[4]。ObjectWeb 组织开发的enhydra Server[5] 具体实现XMLC 技术在HTML开发上的应用。XMLC(XML Complier)是一种基于JAVA的编译器,可以将一个静态的HTML或XML文件编译为一个JAVA类,该类可以完整的重建这些动态文档,并在运行时向该文档插入动态内容。

XML文档由通用的XML解析器读取翻译为一个DOM表示的树形结构,再由一层或者多层的XSL stylesheet 通过XSL处理器翻译该DOM树。最终得到一个仅保留对本应用有现实意义的DOM树,其任意元素类型均存在JAVA类(displet[6])与其相对应。XMLC应用将激活所有需要的displet来建造一个可运行或可展示的JAVA对象树。当限于HTML文档时,html元素对应的displet可以省略,由浏览器直接修饰表现。如图2所示。如需在浏览器中显示HTML未定义的元素,则可以调用displet库修饰后显示运行。

2 问题域

2.1 传统页面的设计缺陷[7]

现代软件开发均是基于构件化的,以达到高复用率的,高可靠性,快速的目标。传统B/S架构经历了静态HTML,SSI,CGI,到ASP,JSP的变迁,JSP的标签技术大大提高了软件的复用性,DREAMWARE等大批图形化页面设计软件的使用也使得应用程序开发更加方便快捷,但是这些页面的复用和设计基本上还是基于动态HTML对象的,是代码级别的,并非构件级别,而现代软件开发为更好和客户沟通,多采用叠代开发。传统的设计模式显然不能满足这样的需要。从开发场景来讲,页面开发人员和逻辑开发人员采用完全不同的思维模式和开发工具,使得需求沟通交流存在障碍。

2.2 传统页面技术的效率缺陷[7]

随着现代商业应用面对的客户群增加,并发数也呈现指数级增长态势。页面展现的数据也越来越复杂,这就对页面表示技术本身提出了更高的效率要求。

3 XMLC构件

3.1 构件架构

根据基于WEB应用的一般需求和我们在电子政务系统开发的实际经验,将构件划分设计分为如下类别:

1) 框架/容器构件:用于实现页面的整体布局和风格,所有加入到该框架中的构件均服从该框架的风格。除支持常见的B/S风格外,还包括对复杂的outlook风格,apple风格等类C/S架构风格的提供。

2) 高级页面构件:类似swing 中的高级Swing组件

树状构件:提供树形显示功能,可设定树模型,树修饰器。

表格构件:显示表格,提供选择,排序,翻页功能,选择功能。

列表构件:提供复杂的组合列表框。

3) 一般页面构件:类似swing 中的简单Swing组件

菜单构件:支持弹出式菜单,下拉式菜单等多种菜单样式。

进度条构件:根据事件或时间显示进度条,无法定时的则显示

滑块构件:显示一个滑动条

4) 功能性构件:页面使用的常用功能性构件

日历构件:实现日期输入功能

区域构件:实现国家,地区,城市数据的输入。

打印构件:格式化选定区域,送打印机输出。

安全构件:实现屏蔽浏览器地址栏显示等安全特性。

实时构件:实现服务器和浏览器的实时通信。

格式化输入构件:实现电话号码,身份证号码,IP地址,等字符性构件输入。

5) 高级图形构件:使用displet技术支持对XML数据的图形化表示

饼状图构件:绘制饼状图。

柱状图构件:绘制柱状图。

二维曲线图构件:绘制二维曲线图。

组合图形构件:将多个图形叠加为一个图形,并为每个图形设定事件。

3.2 构件结构与编写规范

一个表示构件包就是一个JAVA类,包含若干静态方法,以PG_构件名为方法名,输入输出均为org.w3c.dom.document类型。如包含列表构件,菜单构件等的一般页面构件就其类树图如图3所示,PG_List静态函数代码如图4所示。

构件根据输入的XML数据和要求实现的列表功能要求,动态链接相应的修饰器(包含相应的JAVACRIPT函数和displet,由其决定页面的显示风格和),并生成对应的HTML文档输出到RequestContext的节点相应位置再由服务器返回给用户浏览器。如图5所示。

在使用一个构件时,需要在图形编辑界面中将该构件拖动到对应位置,编辑器具有效验功能,如容器类构件上可以放置菜单构件,但是菜单构件上则不能在放置容器构件。放置好节点后,需要按照构件使用规范文档填写构件所需XML数据来源,链接自定义修饰器(构件的默认修饰器为其容器的修饰器)。编辑完成后生成一个JAVA类文件部署到服务器,服务器运行时候调用该文件生成HTML页面。

开发人员也可以按照规范开发自己的页面构件,以适应特殊的用户需求,具体流程为:

1) 撰写纯HTML页面文件,给所有需要操作的元素赋予标签

2) 针对自定义元素开发displet,针对特殊效果开发javascript函数

3) 以XMLC编译该HTML文件并链接修饰器。

4) 设定该构件的输入参数。

建立自己的页面构件库后,开发人员可以像使用系统页面构件一样使用自定义页面构件。

3.3 构件原理

基于XMLC和XML总线技术的表示层构件能够实现,是基于如下4个基本事实:

1) XML编译器可以HTML与XML文档统一处理,将任意的XML,HTML文档编译为一个java类文件,并且可以通过该java类文件的 toDocument()函数返回过滤后的XML或HTML文档,并且为每一个含有ID属性的元素提供预先设定的方法即行为。从而达到动态输出页面,定制文档表示形式的能力[5]。那么,可以在JAVA类级别实现构件的开发和融合,而通过这些类的交互最终生成静态页面返回。

2) 由C/S构架的事件模型可知,作为用户界面组成,有事件监听器对象负责监听事件的发生,并产生相应的行为动作。有事件源响应用户操作,并产生事件。事件发生时事件源把事件对象发送给所有的注册监听器,监听器对象随后使用事件对象中的信息来决定对事件的反映。在B/S架构中,归结起来由两种行为类型,即调用一个展现逻辑返回一个新页面和调用一个JAVASCRIPT函数对现有页面进行修改。那么,可以模仿C/S事件模型,实现B/S架构中的完整事件模型,以对象级别而不是代码级别来生成界面相应用户操作。

3) XML总线技术可以使不同的HTTP会话或者HTTP请求使用不同的XML总线区域。实现了数据可见性和构件耦合性的有机协调,那么,可以合理划分功能和数据使基于构件设计在功能复杂度和数据耦合性双方面达到构件设计理念的要求。

4) 基于Servlet的多线程,一次编译属性保证了程序运行的安全性,与多线程的XML总线可以无缝配合。XMLC技术是一种预编译技术,而不是在运行时编译,效率极大提高。完全可以抵消由于构件化设计所引发的软件调用层加深等效率问题。

综合以上四点可知,基于XMLC和XML总线技术,可以实现展示层的构件化。

4 结论

我们已经研究开发了该页面构件库的编辑环境与运行环境,构建库尚未完整建立。在已知条件下比较该技术和传统JSP页面技术测试,并发数均高于原JSP页面程序。更为重要的是。其理念更加合理,实现了基于构件的图形化页面开发,大大提高了开发速度,降低了开发难度。

5 后续工作

本文只是关于J2EE基于构建开发研究的一部分,随着J2EE,.NET 等构架的提出,B/S,C/S两种基本构架在业务逻辑层次上已实现无缝融合,但如何在表现层次上实现统一仍待解决。下一步我们将研究如何在EOS或者类似的架构上利用XMLC技术实现B/S,C/S模式的无缝结合,探讨出一种合适的编程模式并开发出相应的工具,使得表示层代码能够实现java一次编写,到处运行的目标,不但跨越操作系统平台,还能跨架构。

6 感谢

感谢EOS开发人员以及XMLC研究人员所作得辛勤工作,为我们得工作提供了坚实的理论基础,感谢电子科技大学计算机学院新型计算机实验室,以及可信智能空间实验室的XMLC项目组的技术人员,他们对我们的研究提供了很多新的思路。最后对那些在本项目研究过程中对我们提供无私帮助的朋友们表示忠心的感谢。

参考文献:

[1] EOS基础开发指南[EB/OL].

[2] EOS应用框架使用手册[EB/OL].

[3] EOS工作流开发指南[EB/OL].

[4] Active Documents in XML[EB/OL].www.cs.unbio.it/projects/displets/.

[5] xmlc-2.2.5[EB/OL].

[6] Displet[EB/OL]..

[7] 周江.基于BarracuDa架构的SOA开发模型研究[J].电脑知识与技术,2008(33):1413-1418.

上一篇:浅谈计算机网络实践教学模式的创新 下一篇:Linux环境下的嵌入式系统网络编程应用