插件系统[5]·系统集成方案

本文探讨了插件系统集成的问题,包括基本结构、集成方案和难点。作者提出EntryPoint与Endpoint用于系统启动和交互,通过BUS实现不同插件系统间的通信,并引入Linker作为系统集成的代理。适配器模式被用来使得非插件系统也能融入插件系统。当前正逐步尝试该方案,虽有挑战,但有望简化复杂的软件系统管理。
摘要由CSDN通过智能技术生成

一切都是为了更加简单。

从函数到函数库,然后到类,然后到插件,都是因为我们的软件系统日益复杂,人脑毕竟有限,不能同时处理那么多的信息量,所以采用分而治之的方法来管理。
今年已经研究了一年的插件系统,从最开始的懵懵懂懂到现在能有些经验和大家分享,这个过程本身就是很有意思的。

最开始系统中有了十几个插件,经过几个月的慢慢发展,到了大几十个,甚至上百个,这个数量就有些令人头晕了。不过更加麻烦的还不是这近百个插件组装而成的系统,而是某一个插件系统需要调用另外的一个或多个插件系统。这样的话,插件的数量就在100的基数上开始翻倍。

如何做插件系统中的整合成了一个紧急的课题。

一、插件系统基本结构

前面写过一篇文章,说到了插件系统中的微内核与巨内核之分。不过不管是哪一种,任何一个系统都需要有一个启动点,只不过对于插件系统中的启动步骤来说,它是一个通用,并且和具体业务无关的独立模块。

可以按照下面的图示来简单理解插件系统:


图中的Launcher是插件系统的启动模块,EntryPoint是系统的入口点,作为一个接口给Launcher调用。启动模块通过EntryPoint将系统运行起来。系统中的插件相互协作满足用户的需要。

二、开始集成

上面的图将一个插件系统的基本原素描绘出来了。在具体的项目中,这样的一个插件系统中插件的数量可能多达上百个。当两个项目组都在开发各自的产品,项目组A需要将项目组B开发的系统集成到自己的系统中时,就要开始考虑集成的问题了。

系统中的插件之间存在父子关系,任何一个插件都可以作为另外一个插件的子插件存在。

如果将系统B作为系统A中某一个插件的子插件是不是就可以解决集成问题了呢?——不错,一个简单但实用的解决方法。

可以将插件系统考虑成一个函数库,函数库中的几百个函数相互协作完成一系列复杂的功能。现在我们需要在自己写的函数中包含上面函数库中的所有功能怎么办,简单的做法是将函数库中的某个入口函数作为子函数调用就可以了。

下面介绍的集成方案基本上就是这个思路。

三、插件系统集成解决方案


3.1 EntryPoint与Endpoint

EntryPoint是插件系统的启动模块调用系统功能的接口,这个接口是非常简单的,很多时候仅有一个Run方法,直接对应到用户的双击打开程序的操作。

在系统A中要调用系统B时,显然一个简单的Run方法不能满足要求,这里另外提出一个系统的入口点(端点)Endpoint。

两者的区别在于,EntryPoint对应到Launcher的启动过程,参数简单

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值