我正在考虑使用Python和C / C ++组合来替换我们SW架构中关于OSGi + Java + JNI + C / C ++的原始概念。
我绝对不需要替换像Felix或Equinox这样的OSGi框架的所有功能。
我的Python代码中真正需要的是:
您能否就这样的Python框架提出建议?
答案 0 :(得分:3)
我认为OSGi提供的很多内容与Java的体系结构密切相关:它的类加载器和类型安全性。实现服务注册表不应该太难,但以OSGi的准确性来管理它几乎是不可能的。显然,OSGi提供的多个命名空间的功能在Python中不起作用,除非您将模块移动到单独的进程中,这将需要更昂贵的进程间通信来进行模块间通信。您可以从基于本机的Apache Celix开始,但我对其实用程序有类似的疑虑,因为本机代码不提供有关其依赖项的大量信息。
更通用的解决方案是Universal OSGi的最初想法。在此模型中,您将保留OSGi框架,就像部署和管理一样。但是,您可以创建可以映射使用其他语言编写的包的处理程序包。例如。 Python处理程序或C ++本机。处理程序将本机服务注册表模型映射到OSGi服务注册表。由于OSGi服务注册表已正确处理,因此这非常容易实现。本机处理程序将映射bundle事件(如start / stop)以指示操作系统启动/停止本机代码。
答案 1 :(得分:1)
与Celix一致,你也可以看看Native-OSGi,这是Celix和一些类似C ++ OSGi的框架(CTK插件框架和nOSGi)的努力,为Native OSGi实现提供了一种组合方法。这包括定义良好的API,包格式,代码共享等内容。
考虑到你的要求,我认为Celix和Native-OSGi可能很合适。