1. 概述
2. 插件式开发架构要领
2.1 插件运行主体
2.2 插件的注入、配置和初始化
2.2.1 插件配置信息
插件名称
插件版本号
插件描述信息
依赖的其他插件清单
2.2.2 插件的注入及初始化
2.2.2.1 插件定义示例
通过C#语言的Attribute特性对插件进行描述
通过实现Init, StartAsync, StopAsync标准接口初始化、启动或关闭插件。这是对插件生命周期的管理。
[Plugin(Alias = "PluginA", Description = "测试插件")]
public class Plugin :: PluginBase, ISupportInitPlugin
{
public void Init(IPluginInitContext context)
{
//自定义初始化行为
}
public override Task StartAsync(IPluginContext context)
{
//自定义启动行为
return base.StartAsync(context);
}
public override Task StopAsync(IPluginContext context)
{
//自定义关闭行为
return base.StopAsync(context);
}
}
复制
2.3. 插件通信机制
2.3.1 基于虚拟服务总线形式的通信机制
2.3.2 插件间消息通信
3. C++语言下的插件开发案例
4. JAVA体系下的插件开发案例
4.1 OSGI简介
4.2 OSGI整体架构
4.2.1 模块层
bundle 以 jar 包形式存在的模块化物理单元,包含了代码,资源文件和元数据(模块描述信息)。
bundle 是开发、部署 OSGi 应用的基本单元。
bundle 的核心是 META-NF 目录下的 MANIFEST.MF 文件。
bundle 定义了内部包的对外可见性。
每个 bundle 都有单独的类加载器。
4.2.2 生命周期层
4.3.3 服务层
4.3 Eclipse插件示例
Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: PluginDemo
Bundle-SymbolicName: PluginDemo
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: plugindemo.Activator
Bundle-RequiredExecutionEnvironment: JavaSE-16
Automatic-Module-Name: PluginDemo
Import-Package: org.osgi.framework;version="1.3.0"
Bundle-ActivationPolicy: lazy
复制
package plugindemo;
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class Activator implements BundleActivator {
@Override
public void start(BundleContext context) throws Exception {
System.out.println("Hello World!!");
}
@Override
public void stop(BundleContext context) throws Exception {
System.out.println("Goodbye World!!");
}
}
复制
WARNING: Using incubator modules: jdk.incubator.vector, jdk.incubator.foreign
Hello World!!
osgi> 22:48:00.337 [Worker-0: Loading available Gradle versions] INFO org.eclipse.buildship.core.internal.util.gradle.PublishedGradleVersions - Gradle version information cache is up-to-date. Trying to read.
!SESSION 2021-08-31 22:47:57.492 -----------------------------------------------
复制
5. 总结
文章转载自一个程序员的修炼之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
【专家观点】罗敏:从理论到真实SQL,感受DeepSeek如何做性能优化
墨天轮编辑部
1203次阅读
2025-03-06 16:45:38
【专家有话说第五期】在不同年龄段,DBA应该怎样规划自己的职业发展?
墨天轮编辑部
1175次阅读
2025-03-13 11:40:53
2025年2月国产数据库大事记
墨天轮编辑部
904次阅读
2025-03-05 12:27:34
2025年2月国产数据库中标情况一览:GoldenDB 3500+万!达梦近千万!
通讯员
817次阅读
2025-03-06 11:40:20
2月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
418次阅读
2025-03-13 14:38:19
AI的优化能力,取决于你问问题的能力!
潇湘秦
394次阅读
2025-03-11 11:18:22
优炫数据库成功应用于国家电投集团青海海南州新能源电厂!
优炫软件
332次阅读
2025-03-21 10:34:08
达梦数据与法本信息签署战略合作协议
达梦数据
272次阅读
2025-03-06 09:26:57
国产化+性能王炸!这套国产方案让 3.5T 数据 5 小时“无感搬家”
YMatrix
258次阅读
2025-03-13 09:51:26
IBM收购数据库厂商DataStax:瞄准向量和AI搜索
深度数据云
250次阅读
2025-02-28 12:04:04