源码浅析Eclipse平台EOSStudio架构选.docx
- 文档编号:24011770
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:14
- 大小:547.34KB
源码浅析Eclipse平台EOSStudio架构选.docx
《源码浅析Eclipse平台EOSStudio架构选.docx》由会员分享,可在线阅读,更多相关《源码浅析Eclipse平台EOSStudio架构选.docx(14页珍藏版)》请在冰豆网上搜索。
源码浅析Eclipse平台EOSStudio架构选
1构件体系
1.1基本结构
一个EOS项目的基本包含关系是“构件项目->构件包->构件->构件单元”。
其中构件包是最小的可发布单元。
构件项目是构件包的集合,只是多包括了一个WEB模块。
1.2构件关系
1.2.1构件注册
各种类型的构件通过扩展插件的形式动态的加入Workbench。
扩展点com.primeton.studio.workbench.model描述了一个构件类型所需要的必要信息,通过实现该扩展点来添加新的构件类型。
其中:
∙fileExtension:
该构件支持的文件后缀名,以逗号分隔
∙label:
该构件的显示名称
∙allowSubfolder:
是否支持多层目录
∙factory:
构件工厂类,必须实现接口IModelFactory
∙imageProvider:
构件图像提供类。
可选。
∙interceptor:
构件生命周期拦截器。
∙contentProvider:
构件内容提供类。
可选。
第一次启动构件类型注册表(ComponentRegistry)时,它会获取所有实现了构件类型扩展点的实现,解析它们的内容,将这些类型加入构件类型注册表中,以ComponentDescriptor类的格式进行描述。
ComponentRegistry提供了多种接口可以查询构件类型方面的信息。
另外,如果factory类实现了IModelFactory2接口,则具备动态配置扩展的可支持的文件类型(如jsp构件类型插件)
1.2.2构件创建
NodeFacotry提供了构件项目、构件包、构件的创建API。
构件的具体创建方法由构件定义(ComponentDescriptor)中所指定了负责构件创建的IModelFactory接口来定义。
构件下面的构件资源的创建由每个构件给出具体的向导来完成。
1.2.3构件载入
构件资源的载入由LoadNodeOperation完成。
ResourceManager的load?
?
?
()方法提供了具体的载入逻辑。
1.2.4构件引用
1.2.4.1内部引用
内部引用指的是API一级的相互引用。
UnitID是独立于构件类型的规范的构件,是由(构件包名,构件名,资源名,构件类型)所唯一确定的一组数据,可以标识任意合法的构架资源,是构件之间的引用的标准格式。
IModelFactory接口给出了将UnitID转换成具体构件的String类型ID的方法。
ReferenceTable:
构件资源引用表。
以UnitID的格式保存了各个构件资源之间的双向引用关系。
通过其API可以查询到各个构件的引用和被引用情况。
这些信息在每次编译的时候通过解析构件资源的语意(重载EOSUnit.getReferenceUnits())获取更新,并缓存到eclipse的配置目录中以便下次可以获取即时的引用信息。
1.2.4.2外部引用
构件通过打包后可以由其他项目引用。
默认所有的构件均为可导出的。
实现IExportable接口的IEOSNode可以定义该接口是否可导出。
无论构件资源是否可导出,打包时均会置入引用包中。
现在实现该接口的IEOSNode包括构件包和构件。
ICompiler中LoadCompiledUnit接口负责载入打包后的构件包里面的构件内容,不可导出的构件资源将不会载入。
1.2.5构件元信息
WorkspaceMeta:
仅当工程下面的目录具备.eos文件时,它才会被识别成一个合法的构件容器EOSFolder
ProjectMeta:
项目相关的信息(TODO:
deprecated。
工程根目录下的.eos文件没有太多存在的必要了,相应的META信息可以一同放在项目的配置文件中)
DeployMeta:
Server所需要的元信息格式。
1.2.6其他接口
1.3资源
Stub类原是桥接Eclipse资源与EOS模型的一种类。
今后可考虑用Adapter而不是直接实现IResource系列接口的方式来实现。
ResourceManager是对外的资源管理类,提供了大部分与资源相关的接口(考虑今后将显式的API重构为隐式的API,如removeNode(IEOSNodenode)变为IEOSNode.remove(),提高API的使用便利性。
但remove()方法实现内部则调用ResourceManager.removeNode(this))。
同时ResourceManager维护着两个表:
∙“资源->构件”检索表
∙“文件路径->构件”检索表
2事件体系
2.1Eclipse事件
∙EOSResourceListener负责一般的构件资源事件处理
∙EOSProjectAdditoinListener负责项目的打开、关闭事件处理
∙EOSClassPathListener负责.classpath文件内容与web模块下JAVA源文件夹的同步
2.2Studio事件
在执行Load、Add、Remove、Compile等构件操作后,ResourceManager会通过core插件里的StudioEventManager发出相应的事件。
触发事件的时机和处理事件的方法需要留意一下,不然很容易造成死锁。
可考虑将事件处理过程设为不可重入,以避免可能出现这种情况。
3编译体系
3.1编译器
构件资源中需要被编译的资源包括两类:
形式逻辑语言,如数据库定义,业务流程图;以及计算逻辑语言,如Java代码,可执行脚本等。
形式逻辑语言的编译一般涉及图形符号的解释、冗余信息的去除、逻辑的转换和代码的自动生成,大多由构件自身提供的解释或编译工具执行;
计算逻辑语言的编译是普通意义上对通用计算机语言如Java的编译,一般由构件平台所提供的语言插件执行;
对于形式逻辑语言,可以通过查询构件类型注册表找到各个构件资源所对应的构件类型,再调用该构件类型所定义的编译器的编译接口(ICompiler)编译这些构件资源即可;对于计算逻辑语言,需要由第三方语言插件来进行编译,不主动调用,一般这类型调用都是由Eclipse的资源编译器发起。
对构件的编译采用将构件的形式逻辑语言的编译器组织成org.eclipse.core.resources.IncrementalProjectBuilder的子类,并注册到扩展点org.eclipse.core.resources.builders下成为Eclipse可识别的编译插件的编译器扩展。
通过将该编译器绑定到EOS的项目特征(Nature)确保只有构件项目才能接受该类型编译器的编译动作。
每种构件类型相关的编译器通过实现扩展点”piler”来定义。
其中:
∙model:
对应构件类型的pluginId。
∙class:
编译类类名,必须实现ICompiler接口。
∙fileExtension:
可识别的目标文件的扩展名,以逗号分隔。
3.2编译相关类
3.3编译过程
3.4编译标签
编译中出现的警告和错误信息,作为编译结果之一,用IMarker记录下来,同时显示在‘问题’视图的列表中。
为了能让EOS编译的错误信息直接被问题视图搜集到,编译结果的标签在实现扩展点org.eclipse.core.resources.markers时设置它的父标签为org.eclipse.core.resources.problemmarker即可。
资源的EOS编译标签再该资源重新编译的时候被EOS编译器清零。
TaskMessage是编译信息的另一种数据格式,用于打包时记录编译信息显示于结果对话框中。
4搜索体系
4.1搜索进程
搜索的API是ProjectManager.searchUnitsContent()。
加入构件的新搜索类型首先实现了Eclipse与search相关的两个扩展点。
由于搜索是一项比较耗费时间的操作,Eclipse采用后台进程的形式确保其不会影响前台界面的响应速度,而EOS里又采用了多线程保证搜索的速度,其中SearchJob.MAX_THREAD定义了线程池里可运行的线程数量。
4.2搜索标签
搜索的结果被打上标签(IMarker),以便可以定位到在文件中的具体出现位置。
它的IMarker类型号为ResourceManager.MARKER_ID。
搜索返回的这些标签的IMarker.TRANSIENT属性被设为true,这是确保Eclipse关闭后将不会保留下这些标签。
这些标签最后被搜集并转换成Match对象传回给EOSSearchResult,并最终显示在搜索结果视图中。
5部署体系
EPP文件是打包后的构件包,EPJ文件是打包后的构件项目。
这两类构件文件均可以引用包的形式为其他项目所引用。
通过实现扩展点com.primeton.studio.workbench.library可以向workbench中添加内置的引用库。
Workbench会解析该扩展点中包含的所有文件名,其中EPP和EPJ文件会被解析成引用构件包,JAR文件会添加到项目的JavaClassPath中,WAR文件则会在新建项目的时候默认添加到项目的WEB模块中。
6调试
待补充……
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 源码 浅析 Eclipse 平台 EOSStudio 架构