夜雨聆风学习资料网

ARTICLE · 1100702

C++ OSGi 插件框架:把「编译期」的决定,

C++ OSGi 插件框架:把「编译期」的决定,

C++ OSGi 插件框架:把「编译期」的决定,

加个新模块,整个工程跟着重编;接口改一行,十个依赖它的模块全得重来。客户想临时关掉功能,你只能把整个版本回滚。

问题出在同一个地方:所有关于“系统由哪些部分组成”的决定,都被提前烧进了二进制文件。OSGi 给 C++ 指了条路——让系统的组成变成运行期可以改变的东西。

它把编译期的决定交给了运行期。修 bug 推一个插件进去就行,不用重启服务、不断连接;某个功能不要了,卸载掉,主流程毫发无损。故障域也跟着变小,过去模块一崩整个进程陪葬,现在插件炸了,最坏也就是这个功能不可用。

插件之间靠一套发布—查找—绑定模型说话。A 换了实现,B 一行代码都不用改。依赖关系写进元数据,框架替你算,不同版本的库互不干扰,直接干掉 DLL 地狱。

不过天下没有免费的插件。C++ 没有 GC 兜底,动态是要还债的。线程没退出、单例没重置,模块就卸不掉。上线前你得先问自己:这个插件被卸载时,我到底清理干净了吗?

原文C++ OSGi 插件框架:把「编译期」的决定,交给「运行期」
收录于编程
作者提示: 个人观点,仅供参考
广东,1小时前,

相关学习资料