插件式软件(微内核结构)架构设计技术总结

1 插件是什么?

定义

插件是一种软件组件,该组件主要用来在原有系统上添加一些扩展功能,使得系统具有定制化的能力。
插件式软件由2部分组成:宿主程序+插件。插件化的目的是在不修改宿主程序的情况下对其软件功能进行动态扩展和加强,其本质是组件化的更高层次的应用。
注意

  • 宿主程序又称内核。因为插件式软件的插件化架构也是微内核架构。
  • 宿主程序和插件是一个相对概念,宿主程序也可能是寄生在其它更大的应用程序中作为插件角色存在,比如各种app可以认为是android/ios系统的插件,app内部也会有一些动态加载的小程序等最为app的内部插件。

其他易混淆的概念

除了插件的概念,库、组件、控件、扩展、加载项、框架这些概念是否都能区分清楚?

首先,库、扩展、插件、加载项、控件和框架都是组件。

组件(Component) 是一个含义很泛的概念,一般是指软件系统的一部分,承担了特定的职责,可以独立于整个系统进行开发和测试,一个良好设计的组件应该可以在不同的软件系统中被集成使用(可复用性)。

库(Library) 是为了解决某个主题的需求的程序功能集合。

扩展(Extension) 与插件概念很相似,难以区分,可以不做严格区分。插件和扩展都是对已有应用程序或者库的功能补充,一个软件的扩展(或插件)是实现了该软件预定义接口的组件,用来向已发布的软件动态添加功能。插件和扩展在目标软件发布时可以不预先包含,而是在运行时被使用者注册,然后再被目标软件调用。

加载项(Add-on),可以认为加载项是扩展(或插件)的功能子集,是仅针对应用程序来说的功能补充。

控件(Control) 是GUI编程的一个概念,一般来说一个最终用户可以看到的、可交互的组件被称为一个控件。

框架(Framework) 也是一系列预先定义好的功能集合,一般用于作为一个软件的骨架,但程序真正的功能还需要由开发者实现。框架和库的最大区别在于“控制反转”,关于这个区别可以看下图理解。当你使用一个库,你单向调用库中的代码,而当你使用一个框架,你不仅调用框架的功能,框架也会以预留回调接口、依赖注入等形式调用你的代码。框架和库是一个有交叉的概念,很多框架都是以库的形式发布的,例如Java的Spring MVC框架,其发布的jar包本身就是一个库。而一个库如果也能通过控制反转的方式进行扩展,那也可以视为一个框架,例如Python的markdown解析库Python Markdown,可以添加自定义的解析扩展,那么可以被视为一个markdonw解析框架。
在这里插入图片描述

注:插件式软件在实现过程中也要依赖一个框架承担宿主程序与插件的通信桥梁,该框架的核心部分即下文将详细介绍的插件SDK。

2 为什么要设计插件式软件?

插件式框架最主要的特色是其可扩展性、灵活性、易维护性,是解决软件危机的一个重要途径。
软件插件技术是现代软件设计思想的体现.当一个软件工程项目较大或者是对时间要求比较紧时,需要几个人,几十人个人,甚至是上百个人协作进行软件开发与设计&

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值