我正在尝试使用C++为IM应用程序设计插件系统.IM应用程序也是使用C++实现的.插件系统必须支持javascript插件.
这些插件可以与IM应用程序交互,例如,第三方开发人员可以实现github-robot-plugin,只要他/她在github上的项目有任何变化,它就可以向IM应用程序发送wenbhook消息(也许它看起来有点像Slack除了Slack不是C++应用程序).
我读过一篇文章构建自己的插件框架,其中实现了一个非常简单但完整的插件框架.它设计了一个插件管理器来管理任何插件的注册,创建和销毁.我从这篇文章中学到的最重要的事情是每个插件本质上都是一个接口.
我已经实现了一个桥接类,它可以让javascript与C++交互.javascript程序可以提供命令和一些参数,并通过桥类提供的方法调用C++来执行一些逻辑操作.例如,使用javascript插件,第三方开发人员必须提供一些html资源.如果单击html中名为"保存您的github帐户信息"的按钮,则javascript会向网桥发送名为"save_account_info"的命令,C++会将您的github帐户信息保存到本地数据库.
我不太确定提供一个接口是否是一个好主意,如果他们想要制作一个插件,第三个开发人员必须实现这个接口:
class IPlugin {
public:
virtual std::string bridge_call(std::string cmd, Json params) = 0;
};
class SomePlugin : public IPlugin {
public:
virtual std::string bridge_call(std::string cmd, Json params) {
if (cmd == "some_command_1") {
// do logic1
} else if (cmd == "some_command_2") {
// do logic2
}
}
};
Run Code Online (Sandbox Code Playgroud)
任何建议都非常感谢.