【PHP开源代码栏目提醒】:网学会员为广大网友收集整理了,基于MVC的EclipseRCP开发框架的设计 - 硕士论文,希望对大家有所帮助!
南开大学 硕士学位
论文基于MVC的Eclipse RCP开发框架的设计 别:硕士 专业:计算机应用技术 指导教师:程仁洪 20070501 摘要 摘要 MArC是一种良好的设计模式,它将应用程序分成三个核心部件:模型、视图、控制器,每个部件处理各自的任务:模型表示数据对象,视图负责数据显示,控制器接受来自视图的用户输入,并根据用户输入操作模型。
MVC使程序层次分明,结构清晰,降低了数据表达,数据描述和应用操作的耦合度,使软件系统的重用性,灵活性以及可扩展性大大提高。
MVC已经在Web开发中得到了广泛的使用,并出现了许多优秀的、基于MVC的Web开发框架,像Sums,Spring等。
Eclip∞RCP是一种全新的客户端应用程序,不仅拥有不同于一般Java应用程序的优秀的界面显示,它的插件机制更是大大增加了应用程序的扩展性:用户只需要下载一个插件,简单的部署到应用系统中,就能为应用程序添加新的功能。
如今,EclipseRCP已经成为了客户端应用程序开发的热点,并出现了许多Eclipse RCP软件,比较著名的有mM Lotus Workplace,Nomad PIM等。
然而,Eclipse RCP缺少一个指导性的开发框架,目前的Eclipse RCP开发,仍处于比较随意和自由散漫的状态,开发效率比较低下。
但是,我们可以从众多成熟的、基于MVC的Web开发框架中得到启示,本文的主要目标便是设计一个基于MVC的Eclipse RCP开发框架,使程序结构更加清晰合理,并提高应用程序的开发效率。
本文所设计的Eclipse RCP开发框架同样是视图,控制器,模型的三层结构。
视图层采用事件驱动,将用户事件分成Light-Weight事件和Heavy-Weight事件两类:Light-Weight事件只影响前台,而Heavy-Weight事件涉及后台逻辑。
所有事件/事件处理器由事件代理统一管理。
控制器是Heavy-Weight事件处理器,提供两种事件处理模式:同步等待和异步执行。
另外,控制器还具有输入验证和信息跟踪的功能。
模型层采用服务数据对象SIX)作为数据模型。
SIX)为异构的数据源提供了统一的编程模型.另外,通过SDO的更改摘要机制,应用程序可以知道模型数据的改变,并使用观察者模式通知前台数据显示的视图刷新数据。
摘要关键字: MVC E虻lipse RCP插件体系结构fface SIX) Ⅱ AbstraetMVC is a good design pattern that divides瓤application into two pal’tS-”mode〕,view,and controller.Each parts has it OWII task:models express data object.views showdata object,controllers get us盯input fi’om views.and handle models aex=ordi.g tousef input.MVC reduces the co.pling of data express.data presentation and dataoperation,and improves the reusability,flexibility and extemibility of sottwaresystem.MVC is used widely in Web development.There勰already many goodMVC based framework ofweb development,such as Strtas and Spring.Eclipse RCP is a bl’alld-lllCw rich e/dent application.It not only has a better UIrepresentation也锄other java applications.but also has a good plug-in mechanismthat musla ellballces the extemibility ofthe atrplieation.For钺Iding a new function tothe application,.sersjllst need download a plug-in,and deploy it into the application.Nowadays,Eclipse RCP has bel∞llle a hotspot ofrieh client application development.There肿more and mole Eclipse RCI’sottware r,roduets,suela as IBM LotusWorkplace,Nomad PIM and SOil 011.However,Eclipse RCP does not have a standard develop fl”amework.Thedevelopment is still in lid arbilrda’y sCale and not effieie,t enough.But we啪getapocalypse fi’om MVC based web develop framework.The objeetive oftlais paper isto design a MVC based Eclipse RCP develop framework that can makc the structⅢeof programs HIOI’℃cleat and reasonable,and improve the efficiency of thedevelopmentm framework this paper designed is also devided into three pans:view,eonlrollerand model.Views use event-driven锄帕there a托two types of events:li出-weightevents and hea、,y-weiglat events.Light-weight events just impact foreground whileheavy-weight events involve in background logic.All events龇managed by eventbroker.Conlrollers a地designed as laeavy-cvent handler.Controllers have two waysto handle events:syne-wait and llsync-cxccutc,they also have other fuctioltlS suela蹈input validation and message tracking.Models use seⅣice data object(SDO)aS data IIl Abswactmodel.SDO provides¥ame programming model for different data∞Ⅶr∞.Forthermorv,according to change summary mechanism of SIX),applications caninspect the change of the data model,and then u辩observer design pattern to nofitythe foreground presentation views to refresh data. MVC Eclipse RCP Plug-in Archly-true JFacc SDO IV 南开大学学位
论文版权使用授权书 本人完全了解南开大学关于收集、保存、使用学位
论文的规定, 同意如下各项内容:按照学校要求提交学位
论文的印刷本和电子版 本;学校有权保存学位
论文的印刷本和电子版,并采用影印、缩印、 扫描、数字化或其它手段保存
论文;学校有权提供目录检索以及提供 本学位
论文全文或者部分的阅览服务;学校有权按有关规定向国家有 关部门或者机构送交
论文的复印件和电子版;在不以赢利为目的的前 提下,学校可以适当复制
论文的部分或全部内容用于学术活动。
学位
论文作者签名: 埘年兮月I孑日 经指导教师同意,本学位
论文属于保密,在 年解密后适用 本授权书。
各密级的最长保密年限及书写格式规定如下指导教师签名: 学位
论文作者签名:解密时间: 年 月 日 一……? 一一…~………… ……一 内部5年(最长5年,可少于5年r 秘密★10年(最长10年,可少于10年) 机密★20年(最长20年,可少于20年) 南开大学学位
论文原创性声明 本人郑重声明:所呈交的学位
论文,是本人在导师指导下,进行研究工作所取得的成果。
除文中已经注明引用的内容外,本学位
论文的研究成果不包含任何他人创作的、已公开发表或者没有公开发表的作品的内容。
对本
论文所涉及的研究工作做出贡献的其他个人和集体,均己在文中以明确方式标明。
本学位
论文原创性声明的法律责任由本人承担。
学位
论文作者签名:叉}喂 1叼年§月f8日 第一章引言 第一章引言 第一节 研究背景1.1.1富客户端应用程序的发展和Eclipse RCP 富客户端(硒ch Client Platform,RcP)这个术语最早是在20世纪90年代初提出来的【”,当时人们使用VB和Delphi等语言进行客户端应用程序的开发。
富客户端应用程序给用户提供了高质量的用户体验,拥有丰富的界面元素,界面设计贴近用户.随着用户需求的提高和技术的进步。
客户端应用程序得到了不断的发展,数量也越来越多,小到Windows白带的扫雷游戏,大到企业级应用ERP系统,客户端应用程序在很长一段时间内占据着主导地位。
随着互联网技术的广泛普及,B/S结构的Web应用程序得到了巨大的发展。
与C/S结构的富客户端应用程序相比,Web应用程序是典型的瘦客户端:系统的所有业务逻辑都放在服务器端,用户无须安装客户端程序,只需要通过浏览器(Browser)就能访闯系统。
系统的任何改变都发生在服务器端,面对客户端没有任何影响,这种模式很好的适应了业务的变化,部署升级也很方便口】。
一时间内,Web应用程序成为了应用程序开发的热点,特别是对于企业级应用来说,许多企业都使用Web技术构建自己的应用系统。
这期间,客户端应用程序的发展相对缓慢。
然而,Web应用程序本身也存在一些难以克服的问题:一、由于所有的业务逻辑都在服务器端完成,服务器负载要求高;二、需要有一个良好的网络环境保证应用程序的顺利执行;三、界面响应速度过慢,无法实现高效率的用户交互。
这些问题的存在,使得Web应用程序并不能完全取代C/S结构的富客户端应用程序,人们会根据具体需求,进行不同的选择。
Eclispe RCP是Eclipse项目组(www.cclipse.org)的一个开发富客户端应用程序的框架,是Eclipse平台的一个子集。
最早在Eclipse 2.1版本发布的时候提出了RCP的概念,从Edipse3.0版本开始,正式引入了EcLipse RCP。
第一章引言 图1.1 Eclispe RCP是Ecl4雠平台的一个子集 Eclipse RCP的最大优点在于其插件体系结构【3l:用户只需要下载一个插件,简单的部署到应用系统中,就能为应用程序添加新功能,从而较好的解决了传统客户端应用程序难以扩展,难以适应业务需求变化的问题。
Eclipse插件体系结构由一个微内核和若干个运行在其上的可扩展的插件组成。
微内核作为加载和运行所有插件的容器,所有的业务功能,都封装在插件中。
开发者可以根据自己的需要使用Eclipse插件开发环境PDE来开发自己的插件。
插件体系结构使得Edisl弛RCP具有高度的扩展性。
另外,Eclipse RCP拥有优秀的图形界面API:SWT/JFac七{ql〔s〕。
与传统的采用AwT/s、Ⅳing旧【7l开发的Java应用程序相比,利用SWT,JFa∞可以开发出在感观效果和响应性方面都能与本地应用程序相媲美的Java应用程序。
Eclip∞RCP的出现,使富客户端应用程序开发重新成为了焦点。
目前已经有很多大型的应用程序构建在Eclipse RCP之上,比如mM Lotus Workplace,Nomad PIM(一款免费的个人信息管理系统),Maestro(NASA Space MissionManagement)项目,GumTree(Scientific Instrument Contr01),Macromedia RIA (Rich IntemetApplication)等。
1.1.2 MVC设计模式和MVC开发框架 MVC是80年代Xerox PARC在Small’adk-80中提出的一种软件设计模式, 一2一 第一章引言它将应用程序分为彼此独立却又相互联系的三个部件:模型(Model),视图 (Ⅵew),控制器(ConU’oller)【町嗍。
模型是是软件所处理问题逻辑在独立于外在显示内容和形式情况下的内在抽象,封装了问题的核心数据、逻辑和功能,提供了完成问题处理的操作过程。
控制器依据用户需要调用这些操作过程.另外,模型还为视图获取显示数据而提供了访问其数据的操作。
视图代表用户交互界面。
它把用户请求和输入数据传递给控制器,并且把从模型获得的显示信息,包括模型数据、逻辑关系和状态信息等,以特定的形式展示给用户。
对于相同的信息,可以有多个不同的显示形式或视图。
控制器从用户接收请求,将模型与视图匹配在一起,共同完成用户的请求。
控制器本身不输出任何东西和做任何处理,它就是一个分发器,只是接收请求并决定调用哪个模型构件去处理请求,然后确定用哪个视图来显示模型处理返回的数据。
例如,用户点击一个连接,控制器接受请求后,并不处理业务信息,它只把用户的信息传递给模型,告诉模型做什么,选择符合要求的视图返回给用户。
模型:视图、控制器三者之间的关系如图所示: 改 图1.2 MVC各部件关系图 MVC设计模式在Web技术的发展中起了举足轻重的作用ll川:早期的Web应用程序开发,比如ASP,脚本语言和HMTL标签混杂在一起,使得
代码逻辑混乱,难以管理和维护,
代码的可重用性也差。
这些令人头疼的问题,使得开发人员在编写
代码时注意到把界面显示和业务逻辑分开,MVC设计模式也逐渐 一3一 第一章引言被应用到Web开发中来,并在PHP,JSP/Servlet等开发语言中实现了MVC。
然而开发人员们并不满足于此,为了实现更加快速和高效的开发,又提出了许多优秀的基于MVC的W曲开发框架,比如Struts〔1 3】【141〔嘲,Spring【16】等。
每种框架都提出了一些新的概念和技术,像Structs的标签库Taglib,Spring的控制反转IoC和依赖注入DI等。
图1.3 StrutsMVC框架 有了基于MVC的开发框架,使得Web开发分工更加明确:视图层由专业的界面开发和美工人员来完成;控制器由应用开发人员开发实施;模型层的商业规则对象和商业数据对象则由开发人员,领域专家和数据库管理员共同完成。
第二节
论文综述 既然MVC已经在Web开发中展示了其强大的力量,并先后出现了许多优秀的基于MVC的开发框架,那么我们也可以把MVC应用到Eclipse RCP开发中来。
虽然JFace中查看器Viewer的设计已经体现了MVC思想(关于这点在第四章会有详细介绍),但是到目前为止,Eelipse RCP并没有一个指导性的基于MVC的开发框架。
软件开发框架为软件开发提供了一个结构、行为和属性的高级抽象,研究的侧重点主要在风格和模式上,同时也关注软件开发的具体过程和具体的软件开发平台【1舯。
框架是一个试图实例化说明的部分完整的软件(子)系统。
它为一 一4一 第一章引言个(子)系统族定义体系结构并提供创建它们的基本构造块,它也定义具体功能特性需要改进的地方。
框架可抽取特定领域中的共性问题,并部分或者全部地加以实现。
在进行应用软件开发的时候,利用框架只需要集中精力完成系统的业务逻辑设计,它是对于一个软件系统的全部或部分的可复用设计。
一般说来,一种框架结构对应于一种特定的应用领域,预先定义了一套在领域内的不变的架构,并提供系统的、有极强伸缩性和可扩展性的解决方案。
本文的主要目标就是设计一个基于MVC的Eclipse RCP开发框架。
与所有基于MVC的开发框架一样,应用程序的设计被分成模型、视图、控制器这三层。
把系统分成模型.视图.控制器这三层并不难,我们需要的是设计好其中的每一层,特别是每一层实现的细节。
本文第四章讲的视图层的设计。
首先介绍了用于Eclipse RCP界面开发技术SWT/JFace,以及与AWT/Swing的比较;接着介绍了视图层主要的界面元素视图(view)和透视图(perslx枷ve);最后重点阐述了视图层的事件机制:根据影响的不用,将视图层事件分为Light-Weight事件和Heavy.Wcdght事件两大类,Light-Weight事件只会影响前台界面,而Heavy-Weight事件则需要操作后台业务逻辑。
所有事件/事件处理器,由事件代理Broker统一管理。
第五章讲的是控制器的设计。
对于视图层来讲,控制器就是Heavy-Weight事件处理器。
控制器的事件处理有两种不同的执行方式:同步等待和异步执行。
采用同步等待,前台需要等待事件处理完成后,才能继续响应用户操作;采用异步执行,前台立即返回,无需等待事件处理完成。
我们可以根据具体情况选择不同的执行方式。
另外,控制器还可以根据需要加上输入验证和消息跟踪的功能。
给控制器安装上验证器,控制器就可以对输入进行验证。
打开消息跟踪开关,控制器就可以进行消息跟踪。
第六章讲的是模型层的设计。
模型层采用服务数据对象SD00911201作为数据模型。
SDO是服务体系结构SOA的一个重要概念(另外一个重要概念是服务组合框架SCA〔2q),其优点在于为异构的数据源提供了统一的编程模型,将开发人员从如何访问特定的后端数据源的技术细节中解放出来。
另外,利用SDO的更改摘要机制,应用程序可以知道模型数据的改变,并使用观察者模式自动刷新视图层的数据展示。
一5一 第二章E,elipse RCP 第二章Eclipse RCP 第一节 Eclipse平台2.1.1 Eclipse发展历史 在90年代中期,有几个强大的商业开发环境。
微软公司的V’mual Studio朝着一个更加多用途化的工具方向发展;同时也出现了几个基于Java的集成开发环境,其中包括Symantec公司的Visual Cafd,Borland公司的JBuilder,以及mM的V’mzml Age for Java等. 1998年11月,mM软件部门开始研发一个Java开发工具环境。
其目的是建立一个为所有的mM开发工具产品提供支持的共同平台,以避免对基础结构中最通用元素的重复。
2000年,mM给这个开发工具项目命名为F_,elipse(当时只是mM内部使用的名称)。
mM希望Eclipse项目能够吸引更多的开发人员,发展起一个强大而又充满活力的商业合作伙伴(独立软件供应商)社区:同时也希望用Eclipse来对抗Microsoft Visual Studio的发展。
不久,mM推出了Eclipse试用计划,允许mM以外的开发人员使用Eclipse。
Eclipse从此在开发社区广为流传,而Eclipse也就成为这个项目的正式名称。
2001年12月,mM宣布了两件事:第一件是创建
开源项目,并捐赠价值4千万美元的源码给
开源社区;另外一件是成立Eclipse协会并建立eclipse.org网站。
Eclipse协会由包括mM在内的8个成员公司组成,主要任务是支持并促进Eclipse
开源项目。
然而,Eclipse协会不是一个法律上的实体,运作比较困难,而且当时业界普遍认为Eclipse由IBM所控制。
2004年初,Eclipse基金会成立。
该基金会是一个完全独立的,非盈利性的组织,拥有自己的专业职员,并由它的会员所交纳的会费提供资金。
从此,Eclipse得到了越来越多的关注与支持,并且实现了飞速的发展,成为当今最流行的Java开发平台田J. -·6—· 第二章Eclipse RCP2.1.2 Eclipse的特点 。
Eclipse is缸opell source community whose projects are focused on buUcUngan open development platform comprised of extensible frameworks,tools andruntimes for building,deploying and nmaong sol,ware across the lifecycle.” —--———from eclipse.org Eclipse是一个开放的、可扩展的IDEl231。
Eclipse的主要特点有: 一、提供了功能丰富的集成开发环境。
它集成了CVS.JIj恤,Ant等工具,并且拥有强大的
代码重构功能。
由于Eclipse本身内置了Java开发环境的插件JDT,我们可以使用Eclipse方便的开发Java应用程序,另外,只要装上CI/C++开发的插件CDT,Eclipse也可以用来开发C/C.H应用程序。
二、Eclipse提供了强大的个人版本管理机制,每一次被保存的更改都可以得到恢复,而且可以精确到每一个方法的版本恢复,任何不小心的错误都可以恢复到从前的状况,从而给开发人员带来了极大的方便。
三、拥有优秀的图形界面API:SWT/JFaoe。
Sun的AWl’/Swing由于界面不够美观,响应速度慢而一直为人们所诟病,而SWT/JFace可以开发出在感观效果和响应性方面都能与本地应用程序相媲美的Java应用程序。
四、开发源
代码。
很多大公司的开发部门和开发人员都转向了Eclipse,因为
开源使他们可以免费阅读到顶级的Java源
代码,学习到最好的Java技术,并且可以通过社区相互之间进行交流。
五、插件体系结构这使得Eclipse不仅仅是一个开发工具,而是一个平台。
开发者可以根据自己的需要使用Eclipse的插件开发环境PDE来开发自己的插件工具并无缝的集成到Eclipse中,从而扩展Eclipse的功能. 第二节 Eclipse插件体系结构2.1.1插件体系结构 Eclipse的给我们带来最重要的思想就是微内核与可扩展的插件体系结构。
整个Eclipse采用平台加插件体系结构,Eclipse Platform Runtime作为整个系统 一7一 第二章Eclipse RCP的基础,是一个专门为插件提供的运行时容器,其本身不具备任何面向用户的业务功能。
如果没有插件,Ecfipse平台的运行时就是一个纯粹的容器。
所有的业务功能,都是封装在Ecfipse的插件中的。
Eclipse中的Workspace,Team,JDT和PDE本身都是用插件来实现的。
Eclipse的插件体系结构如下图所示: 图2.1 Eclipse插件体系结构其中,平台运行时Platform Runtime相当于一个微内核,是插件的核心引擎。
它位于平台核心中最低级别的部分,由org.eclipse.osgi和org.eclipse.core.runtime两个插件组成,其他所有的插件都依赖于这两个插件。
平台运行时的功能包括: 一、定义插件的结构以及它们包含的实现详细信息(bundle和类载入器)。
二、查找和执行主要的Eclipse应用程序以及维护插件的注册表、扩展和扩展点. 三、提供实用程序(例如,记录、调试跟踪选项、适配器、首选项库和并发性基础结构). 平台运行时的工作原理如下; 平台运行时管理着一个插件注册表(所有插件的标识),当Eclipse启动时,运行时内核先是定位JRE的位置,然后启动startup.jar扫描plugins和features ··8·- 第二章Ectipse RCP目录下的插件配置文件,对插件进行初始化注册到OSGi中,并保存配置文件中的信息。
然后查找清单文件中声明的extension point和extensi∞,将二者匹配,保存插件的依赖关系。
最后启动应用。
插件体系结构,其最大的优点莫过于可以保证系统构成了一个平稳的结构体系,所有的交互,扩展都通过插件来进行,并同时保证各个插件的独立性,使得系统基于一种拼装式的结构,即松耦合,每个插件对于外部而言都是一个黑盒,那么就要相应的告诉外部这个黑盒所能提供的功能,调用的方式等。
其实“插件”在软件行业中并不是一个很新的概念,早期的计算机系统,软件硬件是一体的,那时候的应用软件是固化在硬件中的逻辑,随着操作系统和编译程序的发展,软件,硬件的体系结构才相对独立,而应用软件和硬件之间的平台就是操作系统。
此时,各种应用程序就是运行在操作系统之上的插件,操作系统就是一个插件平台。
而Eclipse不过是操作系统之上的另外一种插件容器。
对于一个插件来说,应该提供以下一些功能: 1、插件的定义. 2、插件的加载。
(文件、URL等形式) 3、插件的生命周期管理。
(安装、卸载、启动、停止、更新) 4、插件间的交互机制。
5、插件的扩展。
Eclipse插件开发和一般的应用程序开发本质上没有区别,只不过以前我们开发应用程序,完全是Case by ca辩, 也就是各为其主;而现在,所有的功能都是通过插件来实现的,我们的应用程序不过是F∞lipse平台运行时和你的.