如何在插件系统中正确公开API?

时间:2015-09-18 12:11:50

标签: c++ qt api plugins proxy-pattern

在下面的类图中,您可以看到我目前的插件/扩展系统方法。我想为扩展提供一般/全局事物的API。但是公开的API应该只包含引用对象的实际函数的子集。我的第一个想法是使用界面。问题在于,一个邪恶的插件可能会将接口转向内部类并使事情变得混乱。 (我应该关心吗?)第二个想法是使用代理模式。目前我使用它们。我想这不是必需的。但考虑到二进制兼容性,我如何才能降低复杂性呢?

enter image description here

2 个答案:

答案 0 :(得分:2)

如果你想要的插件无法以某种方式破坏你的程序,那么你必须将这些插件作为单独的进程。然后插件在单独的内存空间中运行,并通过管道或套接字与您的应用程序通信。

答案 1 :(得分:1)

  

我应该关心吗?

没有。 C ++的功能可以帮助您编写正确的软件,而不是保护您免受恶意开发人员的攻击。这样做不是语言的工作。您的API应该设计为正确,全面和易用。

  

考虑到二进制兼容性如何在这里降低复杂性?

创建不从任何东西继承的API类。请查看Leap Motion C++ API获取灵感的方法。

相关问题