在Eclipse中使用RSE框架的探讨

2014-07-24 17:59贾璐张旻田丹麦先根
现代电子技术 2014年14期

贾璐+张旻+田丹+麦先根

摘 要: 传统C/S结构的远程处理程序存在高度依赖客户端,界面响应速度慢,不能充分发挥客户端性能等弱点。随着Eclipse平台和RSE框架的出现,使远程处理应用程序开发重新成为了焦点。使用基于Eclipse平台和RSE软件框架构建远程处理正在成为当前越来越多的企业采用的一种方法,这种方法快速、高效、开发团队只需要将关注点投射于领域业务逻辑即可。在此深入地分析RSE框架的体系结构,并结合实例介绍Eclipse下采用RSE开发远程处理的实现方法。该方法使软件架构更加合理,可维护性强,并且大幅缩短了开发时间,取得了良好效果。

关键词: Eclipse; RSE; MVC; Plug?in

中图分类号: TN911?34; TP311 文献标识码: A 文章编号: 1004?373X(2014)14?0048?03

Application of RSE framework in Eclipse

JIA Lu, ZHANG Min, TIAN Dan, MAI Xian?gen

(Xian Aeronautics Computing Technique Research Institute, AVIC, Xian 710065, China)

Abstracts: The remote processing program of traditional C/S structure highly depends on the client?side, has slow interface responses, and can not make fully use of the performance of client?side. Along with the appearance of Eclipse platform and RSE structures, the remote processing application program development becomes a focus again. More and more companies are developing their own remote processing devices based on Eclipse and RSE. It is an efficient way that the development teams needs to focus on building their field logic only. The architecture of RSE framework is deeply analyzed in this paper. The method to develop and implement the remote processing device by using RSE in Eclipse is introduced with examples. The method makes the software architecture more reasonable and maintainability stronger, and can greatly reduce the development time.

Keywords: Eclipse; RSE; MVC; Plug?in

随着Eclipse和RSE的出现,使C/S结构的远程处理应用程序开发重新进入人们的视线。Eclipse[1]的最大优点在于其插件机制,在Eclipse平台上只需要下载一个RSE[2]插件,再通过简单地扩展和部署,就能实现专用的远程系统,并能为该远程系统添加新功能[3],从而较好地解决了传统客户端应用程序不易扩展,难以适应需求变化的问题。

1 RSE框架机制

RSE是基于Eclipse 项目的一个开发远程系统客户端应用程序的框架,旨在提供一种快速开发的,功能强大的,可扩展的应用平台。RSE不仅提供了远程系统的数据模型和应用框架,还支持远程系统的访问命令和文件服务模型。

RSE是一个插件体系结构的完整的应用平台,它既是一个插件,又是一些插件的集合。基于RSE的应用程序的入口必须实现org.eclipse.core. runtime. applications扩展点。在Eclipse 启动时,只能指定一个被运行的application,这个application 的主类必须实现IplatformRunnable 接口,由此接口所提供的run 方法接管Eclipse 平台的控制权,当此application 结束时,Eclipse 平台也会退出。

2 RSE框架体系结构和设计方法分析

2.1 RSE框架体系结构

RSE框架工作在Eclipse平台的基础上,RSE框架的体系结构见图1。

DataModel模型是RSE框架的核心,负责封装远程系统处理程序中的系统数据和业务逻辑,返回视图对数据的查询,将数据的变化通知给视图,用不同的方式实现数据模型接口。

图1 RSE框架结构图

RSE框架为DataModel模型提供了可选的Service服务,包括Files,Processes,Shells服务。

View视图和Wizard向导就是远程处理应用中的用户界面,负责展示DataModel模型中的数据,通过向Eclipse平台的事件处理代理发送使用者的动作,完成RSE框架和使用者的交互,同时也允许控制器来选择所要显示的视图。

在远程处理的事件处理过程中,RSE框架使用Eclipse的事件处理器代理,来把使用者操作转化成对DataModel模型的更新,并选择需要显示的View视图。

2.2 RSE框架设计方法

RSE框架采用了MVC[4]设计模式来设计和实现,分为模型、视图、控制器三层。其中模型层采用RSE专用的 RSEModelObject来实现RemoteModel;视图层采用的技术是SWT/JFace;而系统注册器SystemRegistry作为控制器接收视图层的请求,执行业务逻辑、操作业务模型, 完成远程系统内部资源的访问、操作和变更。基于MVC的RSE框架实现工作流程见图2。

图2 MVC实现的RSE框架图

整个RSE框架的入口点是远程处理客户端的请求事件。系统根据所造成影响的不同,将事件分为两类:只影响前台的Light Weight 事件和影响后台数据的Heavy Weight 事件。

事件由Eclipse平台的Handler Proxy事件代理统一管理,再转发给远程系统的SystemRegistry事件注册器,对每个事件进行处理.。

3 RSE应用实例

下面通过一个应用实例说明如何使用RSE框架构建远程处理应用程序。该实例是一个基于SSH协议远程系统的事件日志记录远程客户端系统,包括远程连接、属性集合和事件处理与记录。

3.1 远程连接

远程连接中包括远程系统模型、远程系统模型和控制器。远程系统模型的属性有名称、IP地址和连接协议类型,控制器在接收到来自视图的创建远程连接的请求后,会通知注册器检查该远程连接目前是否已经存在,如果还不存在,就新建并保存到注册器中。远程连接的设计如图3所示。

图3 远程连接设计示意图

创建远程连接的方法具体代码如下:

public void run() {

String hostName = "build.eclipse.org";

ISystemRegistry registry = RSECorePlugin.getDefault().getSystemRegistry();

ISystemProfile profile = registry.getSystemProfileManager()

.getDefaultPrivateSystemProfile();

IHost host = registry.getHost(profile, hostName);

if (host == null) {

host = registry.createHost(

"SSH Only", //System Type Name

hostName, //Connection name

hostName, //IP Address

"Connection to Eclipse site"); //description

} }

3.2 属性集合

远程连接属性集合负责记录并维护远程系统的状态:已连接、已断开连接和密码验证。当一个远程系统包括多个子系统时,例如同时包括文件子系统和shells子系统,针对这些子系统,不但允许各子系统使用不同协议类型的连接,而且一个远程连接还能够被多个子系统共享。优点是不但提高了远程系统的可扩展性和灵活性,也实现了已有构件的有效复用。创建远程连接的方法具体代码如下:

IConnectorService[]conServices=host.getConnectorServices();

if (conServices != null && conServices.length > 0) {

IPropertySet set = null;

IPropertySet[] sets = conServices[0].getPropertySets();

if (sets != null && sets.length > 0) {

set = sets[0]; }

else { set = new PropertySet("System Info"); conServices[0].addPropertySet(set); }

set.addProperty("Arch", " PPC64"); }

通过上述方法实现的远程系统属性集合如图4所示。应用实例中的远程系统采用的是PPC64体系结构。

图4 属性集合图

3.3 事件处理和日志记录

3.3.1 事件处理

本文中的事件特指在远程处理过程中远程系统内部数据的操作,这些数据可以复用已有RSE模型对象RSEModelObject,也可以是自定义的。但必须实现IAdaptable[5]接口,为自身定义一个私有适配器。该适配器实现ISystemViewElementAdapter[6]接口,在Eclipse平台的UI视图中,为远程系统资源和针对这些资源的操作提供显示功能。系统事件注册器SystemRegistry负责具体RSE事件的处理,实现方法是通过实现ISystemResourceChangeListener、ISystemModelChangeListener和ISystemRemoteChangeListener接口的监听器侦听远程处理事件,并进行处理。

3.3.2 记录事件日志

记录事件日志实现方法是首先创建一个输出到控制台的RSE事件监听器,然后将把该监听器注册到远程系统注册器中。事件处理和日志记录方法的具体实现代码如下:

Public Void systemResourceChanged(

ISystemResourceChangeEvent event) {

int type = event.getType();

String eventStr = getResourceChangeEventType(type);

if (resource instanceof IAdaptable) {

ISystemViewElementAdapter adapter = (ISystemViewElementAdapter) ((IAdaptable)resource).getAdapter(ISystemViewElementAdapter.class);

if (adapter != null) {

String type = adapter.getType(resource);

String name = dapter.getName(resource);

String message = eventStr + ":\t(" + type + ")\t" + name;

logEvent(message); //print into Console; could also do stdout

} } }

通过上述方法实现的日志记录控制台如图5所示。

图5 日志记录控制台图

远程处理过程中发生的所有事件都会以文本方式输出到控制台,这为远程系统处理的调试工作提供了故障诊断依据。

4 结 语

Eclipse是功能强大的开发平台。实例说明, 在其中使用RSE框架开发远程系统插件, 可以成功实现面向远程应用的扩展,并且使远程处理软件的软件架构更加合理,可维护性强,并且大幅缩短了开发时间,取得了良好效果。

参考文献

[1] Eclipse Org. Eclipse home [EB/OL]. [2013?03?11]. http://www.eclipse.org.

[2] OBERHUBER Martin. TM?2.0?release review [M]. USA: Wind River Inc, 2007.

[3] AJITH A R. RSE using Eclipse in Ubuntu [M] USA: Toobler Web Development Company, 2011.

[4] 李海峰.MVC模式架构的应用研究[J].自动化与仪器仪表,2013(1):4 ?7.

[5] 谷钰.Eclipse 插件体系结构的研究[J].电脑知识与技术,2009,31(5):8706?8711.

[6] 克莱柏格.ECLIPSE 插件开发[M].北京:机械工业出版社,2011.

3.3.2 记录事件日志

记录事件日志实现方法是首先创建一个输出到控制台的RSE事件监听器,然后将把该监听器注册到远程系统注册器中。事件处理和日志记录方法的具体实现代码如下:

Public Void systemResourceChanged(

ISystemResourceChangeEvent event) {

int type = event.getType();

String eventStr = getResourceChangeEventType(type);

if (resource instanceof IAdaptable) {

ISystemViewElementAdapter adapter = (ISystemViewElementAdapter) ((IAdaptable)resource).getAdapter(ISystemViewElementAdapter.class);

if (adapter != null) {

String type = adapter.getType(resource);

String name = dapter.getName(resource);

String message = eventStr + ":\t(" + type + ")\t" + name;

logEvent(message); //print into Console; could also do stdout

} } }

通过上述方法实现的日志记录控制台如图5所示。

图5 日志记录控制台图

远程处理过程中发生的所有事件都会以文本方式输出到控制台,这为远程系统处理的调试工作提供了故障诊断依据。

4 结 语

Eclipse是功能强大的开发平台。实例说明, 在其中使用RSE框架开发远程系统插件, 可以成功实现面向远程应用的扩展,并且使远程处理软件的软件架构更加合理,可维护性强,并且大幅缩短了开发时间,取得了良好效果。

参考文献

[1] Eclipse Org. Eclipse home [EB/OL]. [2013?03?11]. http://www.eclipse.org.

[2] OBERHUBER Martin. TM?2.0?release review [M]. USA: Wind River Inc, 2007.

[3] AJITH A R. RSE using Eclipse in Ubuntu [M] USA: Toobler Web Development Company, 2011.

[4] 李海峰.MVC模式架构的应用研究[J].自动化与仪器仪表,2013(1):4 ?7.

[5] 谷钰.Eclipse 插件体系结构的研究[J].电脑知识与技术,2009,31(5):8706?8711.

[6] 克莱柏格.ECLIPSE 插件开发[M].北京:机械工业出版社,2011.

3.3.2 记录事件日志

记录事件日志实现方法是首先创建一个输出到控制台的RSE事件监听器,然后将把该监听器注册到远程系统注册器中。事件处理和日志记录方法的具体实现代码如下:

Public Void systemResourceChanged(

ISystemResourceChangeEvent event) {

int type = event.getType();

String eventStr = getResourceChangeEventType(type);

if (resource instanceof IAdaptable) {

ISystemViewElementAdapter adapter = (ISystemViewElementAdapter) ((IAdaptable)resource).getAdapter(ISystemViewElementAdapter.class);

if (adapter != null) {

String type = adapter.getType(resource);

String name = dapter.getName(resource);

String message = eventStr + ":\t(" + type + ")\t" + name;

logEvent(message); //print into Console; could also do stdout

} } }

通过上述方法实现的日志记录控制台如图5所示。

图5 日志记录控制台图

远程处理过程中发生的所有事件都会以文本方式输出到控制台,这为远程系统处理的调试工作提供了故障诊断依据。

4 结 语

Eclipse是功能强大的开发平台。实例说明, 在其中使用RSE框架开发远程系统插件, 可以成功实现面向远程应用的扩展,并且使远程处理软件的软件架构更加合理,可维护性强,并且大幅缩短了开发时间,取得了良好效果。

参考文献

[1] Eclipse Org. Eclipse home [EB/OL]. [2013?03?11]. http://www.eclipse.org.

[2] OBERHUBER Martin. TM?2.0?release review [M]. USA: Wind River Inc, 2007.

[3] AJITH A R. RSE using Eclipse in Ubuntu [M] USA: Toobler Web Development Company, 2011.

[4] 李海峰.MVC模式架构的应用研究[J].自动化与仪器仪表,2013(1):4 ?7.

[5] 谷钰.Eclipse 插件体系结构的研究[J].电脑知识与技术,2009,31(5):8706?8711.

[6] 克莱柏格.ECLIPSE 插件开发[M].北京:机械工业出版社,2011.