我想做一些软件,严重依赖插件。我计划用C++编写它,很可能是用C++、Python和可能是Java构建插件,但最有可能是C++和python,但我不想排除任何可能更加晦涩或不常见的语言。如何设计一个可以在我的C++程序中使用的插件,这个插件可以不绑定到语言(或者允许最广泛的兼容性)?
我认为可以这样做的一种方法是在C++中提供一个API (因为它允许本机代码工作),并设计一个系统来调用带有参数传递为参数的可执行文件。只要我的程序和插件有一个规范什么将传递进来和应该发生什么与输出,这应该(理论上)是一个获得最大兼容性的有效方法。
插件将负责处理文件形式的数据(S),并输出更多的文件。插件完成的实际任务取决于插件,但是输出应该始终是一个文件。当有文件要处理时,插件将与我的程序并行运行,并被调用。一个插件可以同时运行多个实例,处理不同的文件。完成任务所需的时间是没有限制的(从我的程序的角度来看),但是完成得越快越好。插件不会直接影响主程序,只有当文件被赋予工作和收集结果时,这就是为什么我认为我的可执行策略可能适用于我的特定用例的原因。
发布于 2017-10-07 16:36:05
进程边界插件是一个非常适合的地方,你必须作出的妥协(在下面讨论)是可以接受的。
我工作的项目有许多不同类型的插件,对于我们的应用程序,妥协不会造成任何问题。与他们的接口有很多种方法;我们的设计选择是插件程序通过标准I/O与JSON通信,自从今年早些时候投入生产以来,我们对这一决定非常满意,因为它使我们作为开发人员和用户更容易扩展我们的系统。
优点:
缺点,两者都与开销有关:
https://softwareengineering.stackexchange.com/questions/358750
复制相似问题