一、关于软件插件
一个软件要对扩展开放才有生命力,面对对象设计原则里面的开闭原则就是这个意思。
软件的扩展方式一般就两种,一种是通过插件机制,软件开放插件的形式实现软件自身的扩展,让软件实现更丰富的功能,值得注意的是插件是基于原来软件运行的。打一个比方就是原来软件类似一个操作系统,一个个的插件就像是运行在里面的软件一样。大名鼎鼎的WordPress,利用各种丰丰富的插件就可以无所不能,它本来是一个cms,也就是简单有内容信息系统,通过插件可以用来做商城系统,电影视频网站,招聘网站,问答网站,在线社区,知识库wiki等。
另外一种提供软件的是平台模式,比如微信开放平台,淘宝开放平台,支付宝开放平台,企业微信、钉钉等。平台提供一些基础接口和接口应用的协议或者方式,开发者可以开发自己的软件或者系统集成、发布到平台。这样实现平台功能的补充,构建一个丰富的软件生态。
那么这两种方式有什么区别呢?
插件是基于软件主程序运行的,插件与原软件共享内存与服务器资源,插件如果过多可能会存在资源竞争,内存占用过大,导致软件卡顿现象(比如:eclipse、myeclipse等)。如果某个插件错误,也可能导致软件启动失败。但是优秀的插件应该会实现插件之间隔离和保护,从而不会相互影响,且说主程序有沙箱保护机制。除此不同软件的插件一般是不能通用的,插件依附于软件,离开对应软件不能单独的运行。
开放平台是提供了一些基础接口或者协议,接口的第三方应用只会访问平台提供的一些接口,应用本身部署在应用开发商自己的服务器,因此占用平台的资源也比较少。因为平台扩展应用与平台是松耦合的关系,不强依赖,所以应用的复用性比较高,可以脱离平台快速部署应用。
二、nop的插件机制
登录n