[!!!! web console] 基于Eclipse Equinox的插件框架:TPF

2024-01-15 08:48

本文主要是介绍[!!!! web console] 基于Eclipse Equinox的插件框架:TPF,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这篇blog是继之前的一篇提升C/S结构软件的管理性的延续,在这 篇blog中会更加的实际的去介绍基于Eclipse Equinox实现的一个插件框架,而不再是象上篇中那样的提及的想法而已了,通过这篇blog来展现目前一个这样的插件框架的实际应用的情况,为了更加 形象的表达,在文中会贴出一些目前这个系统的截图。
这个框架的简称为TPF,是目前我所做的产品的底层框架,TPF本身构建于Eclipse Equinox之上,Equinox做为OSGI R4的RI,提供了OSGI R4的全部实现,而且同时它还结合了Eclipse IDE做为插件平台的优势之处,所以是一个非常优秀的插件框架,但相对需要强大管理性的应用系统来说,基于Equinox还是缺少了一些做为基于微核的系 统的管理性,TPF就是为了满足这个而实现的,TPF主要的目标就是:
1、形成以TPF为微核的系统
      Equinox其实也是一个具备微核特征的插件框架,在Equinox中只需要System Bundle是正常运行的,那么就可以通过它来完成基于它之上的所有插件的管理,但对于系统级别而言,更多时候需要的是一种基于系统级别的控制,也就是统 一控制基于Equinox的插件,统一的进行重启、停止和启动这样的管理,而同时由于Equinox仅仅提供了console方式的管理,这对于用户来说 通常会有点麻烦,所以在TPF中提供的是web形式的管理。
      在一个拥有TPF的系统的图示通常是这样(写基于TPF不太正确,因为其他的Bundle并不需要依赖于TPF):
       tpfapp.jpg
      对于基于Equinox的系统而言,只需要安装上TPF的Bundle,便可拥有TPF提供的方便了:
      通过TPF可更加方便的对插件进行安装、管理(停止、更新、启动);
      index.JPG
      可以对插件的元信息(MANIFEST.MF)以及插件外带的一些配置文件的信息进行直接的修改,同时更是提供了更为方便的设置插件启动顺序的方法以及更加形象标明插件作用的插件名的设置的功能;
      info.jpg
      微核系统的特征,可统一启动或停止系统中的插件,方便了对于用户而言的管理功能。
       appman.jpg
      从这些特性上可以看出,在Equinox中安装了TPF的几个Bundle后,就可以更加方便的对插件进行管理了,同时也可以形象的感觉到微核系统的特 征,即不论系统处于启动还是停止状态,只要微核运行是正常的,那么系统就可以通过微核来进行管理、扩充功能以及修改功能的,而微核通常来讲都是非常稳定 的,在拥有这样特征的系统中,形象的说就是可以在项目开始的第一天在客户处部署一个系统,从此以后无论是更新版本还是如何,系统都是永远保持在运行状态 的。
2、增强的管理特性
      在TPF中除了上面所说的一些插件管理功能的提升之外,最重要的就是增加了对远程同样基于TPF系统的监控,在TPF中可以监控远程TPF系统的运行状态,同时还可对远程的TPF系统进行启动、停止的管理动作。
      remoteman.jpg
TPF 由三个Bundle共同构成,基于tpf.core可以实现其他方式的管理端,如client UI方式的管理端,JMX管理端等;tpf.webshell这个Bundle则提供了目前看到的web管理的方式,如不需要web管理则直接不安装这个 bundle就可以了或停止这个bundle(在需要的时候启动就可以了);tpf.api提供了管理远程TPF的接口,如不需要远程管理,也可不安装这 个bundle或停止这个bundle。

为了能更加清楚的说明TPF带来的影响,画了张简单的时序图:
tpfstart.JPG
这张图表达出了在安装上TPF Bundles后,其他App Bundles的生命周期包括启动顺序等是由TPF Bundles来控制,而不再是通过Equinox直接控制了,此时TPF Bundles和Equinox共同构成了系统的微核。

posted on 2006-08-18 21:24 BlueDavy 阅读(4971) 评论(10)  编辑  收藏 所属分类: Plugin Architecture

评论

 

#   re: 基于Eclipse Equinox的插件框架:TPF 2006-08-18 21:43 robbie

正如你所讲的,“写基于TPF不太正确,因为其他的Bundle并不需要依赖于TPF”,你的TPF提供了一个管理界面,类似于osgi console但强于这种命令终端也更加方便,功能更为强大,但从架构上,正如osgi bundle 也如eclipse plugin ,TPF与其它的bundle是并行在一个平面上的,而没有谁是谁的基础条件的问题,因为其它的bundle并没有依赖TPF,也没有必须知道TPF的存 在。所以你上面的图就有点问题了,TPF不是作为infrastructure存在的,我觉得从概念上讲 osgi web console更为合适。:)当然前提是我的理解没有错的话。不知道TPF是否以OS的方式发布?非常关注,因为作过一段时候的基于eclipse 的IDE开发,当时eclipse 并没有完全转向osgi,随时的3.0的release,osgi便吸引了eclipse社区相当的关注。这是一个能使软件真正能有机会实现组件化开发的 机会  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 11:27 leowu

我感觉那个框架图也不是太贴切,其实TPF在层次上也是一个bundle而已,并不属于基础性的东西,整体图示来看的话,核心还应该是osgi,tpf放在左侧或者右侧可能更合适一些。

题外话:此外,对于远程管理,可能很多时候还要考虑防火墙的限制,那么tpf作为大型应用的客户端架构的话(例如服务器管理客户端不同功能模块),这种远程控制就要做一些调整了。  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 16:36 BlueDavy

@robbie
感谢你的答复,你说的没错,由于我的一时偷懒,所以只是加了一行文字避免大家对图的误解,准确的来说TPF并不仅仅是OSGI Web console,就像我文中所说的Web console只是TPF提供的一个更加方便的管理方式可以,但如果觉得没必要的话,仍然可以不安装,TPF.core提供的API足以让你完成其他形式 的管理端,TPF将以OS的方式发布。

@leowu
图的问题确实是由于我的一时偷懒表达的不够准确,但其实在安装了TPF后所有的插件不是通过System Bundle去安装和启动,而是通过TPF去安装和启动的。
对于远程管理方面的话,穿越防火墙仍然是http较为方便,而目前tpf采取的也是http的方式。  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2006-08-19 17:28 BlueDavy

感谢robbie和leowu指出的错误,为了避免图给大家造成的误解,重新画了图,并增加了一个简单的时序图来说明下在安装TPF后对Equinox产生的影响。  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2006-08-24 22:06 guangqing

我的理解是这样,TPF是一个web化的增强的Equinox的console,同时提供了对对于console的远程管理。那么我想问,console中管理的是不是都是在同一个JVM中运行的bundle,远程节点之间的bundle又可不可以交互呢?
我对OSGi了解不多,总感觉它讲的都是在同一个JVM的情况(也许是由于它的原始需求决定的),我不知道它可不可以解决远程服务相互交互的情况,解决这个问题好像并不是一件难事?  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2006-08-25 11:31 BlueDavy

远程服务交互的话需要引入WebService,OSGI规范中目前只有硬件方面的远程互通的协议。  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2007-09-07 16:09 huangmy

BlueDavy 。不知道你能不能把TPF开源,谢谢  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2007-09-08 23:48 BlueDavy

@huangmy
TPF在今年年内一定会开源的,目前在做一些准备工作,最快的话可以在十月份完成开源的工作,多谢你的关注!
  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2009-05-13 09:29 疯狂的奶瓶

这张图表达出了在安装上TPF Bundles后,其他App Bundles的生命周期包括启动顺序等是由TPF Bundles来控制,而不再是通过Equinox直接控制了,此时TPF Bundles和Equinox共同构成了系统的微核。


这么说,当TPF启动后,equinox就退休了,此时不就是"基于"TPF了吗?  回复   更多评论   

#   re: 基于Eclipse Equinox的插件框架:TPF 2009-12-14 13:17 sjrfox

请问能给一个下载的有效连接吗??谢谢  回复   更多评论

这篇关于[!!!! web console] 基于Eclipse Equinox的插件框架:TPF的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/608312

相关文章

JSON Web Token在登陆中的使用过程

《JSONWebToken在登陆中的使用过程》:本文主要介绍JSONWebToken在登陆中的使用过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录JWT 介绍微服务架构中的 JWT 使用结合微服务网关的 JWT 验证1. 用户登录,生成 JWT2. 自定义过滤

一文教你如何将maven项目转成web项目

《一文教你如何将maven项目转成web项目》在软件开发过程中,有时我们需要将一个普通的Maven项目转换为Web项目,以便能够部署到Web容器中运行,本文将详细介绍如何通过简单的步骤完成这一转换过程... 目录准备工作步骤一:修改​​pom.XML​​1.1 添加​​packaging​​标签1.2 添加

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python GUI框架中的PyQt详解

《PythonGUI框架中的PyQt详解》PyQt是Python语言中最强大且广泛应用的GUI框架之一,基于Qt库的Python绑定实现,本文将深入解析PyQt的核心模块,并通过代码示例展示其应用场... 目录一、PyQt核心模块概览二、核心模块详解与示例1. QtCore - 核心基础模块2. QtWid

最新Spring Security实战教程之Spring Security安全框架指南

《最新SpringSecurity实战教程之SpringSecurity安全框架指南》SpringSecurity是Spring生态系统中的核心组件,提供认证、授权和防护机制,以保护应用免受各种安... 目录前言什么是Spring Security?同类框架对比Spring Security典型应用场景传统

Python结合Flask框架构建一个简易的远程控制系统

《Python结合Flask框架构建一个简易的远程控制系统》这篇文章主要为大家详细介绍了如何使用Python与Flask框架构建一个简易的远程控制系统,能够远程执行操作命令(如关机、重启、锁屏等),还... 目录1.概述2.功能使用系统命令执行实时屏幕监控3. BUG修复过程1. Authorization

web网络安全之跨站脚本攻击(XSS)详解

《web网络安全之跨站脚本攻击(XSS)详解》:本文主要介绍web网络安全之跨站脚本攻击(XSS)的相关资料,跨站脚本攻击XSS是一种常见的Web安全漏洞,攻击者通过注入恶意脚本诱使用户执行,可能... 目录前言XSS 的类型1. 存储型 XSS(Stored XSS)示例:危害:2. 反射型 XSS(Re

SpringBoot集成图片验证码框架easy-captcha的详细过程

《SpringBoot集成图片验证码框架easy-captcha的详细过程》本文介绍了如何将Easy-Captcha框架集成到SpringBoot项目中,实现图片验证码功能,Easy-Captcha是... 目录SpringBoot集成图片验证码框架easy-captcha一、引言二、依赖三、代码1. Ea

Gin框架中的GET和POST表单处理的实现

《Gin框架中的GET和POST表单处理的实现》Gin框架提供了简单而强大的机制来处理GET和POST表单提交的数据,通过c.Query、c.PostForm、c.Bind和c.Request.For... 目录一、GET表单处理二、POST表单处理1. 使用c.PostForm获取表单字段:2. 绑定到结