插件开发的核心概念
工作流可以集成来自不同服务的各种功能,虽然 Atomemo 为许多功能提供了内置支持,但终究无法面面俱到。插件系统的目标就是扩展工作流对更多外部服务功能的支持能力,其实 Atomemo 的一些内置功能都是用插件实现的。
第三方开发者也可以轻松地使用插件系统为工作流提供更多功能,因此理解插件系统的构成和工作机制对于开发插件来说是至关重要的。
插件系统的主要组成部份
宿主服务
插件可以独立开发和运行,但是离开了驱动它的宿主服务插件将毫无作用,这里的宿主服务是指 Atomemo 应用本身。在插件系统中,宿主服务的作用主要有两个:
- 提供图形交互界面,让用户可以搜索和安装各种插件并在工作流中接入和配置插件。
- 当工作流运行时,主动调用插件并获得插件执行后的结果,或者提供可以让插件反向调用系统的能力。
插件 Hub
插件和宿主服务之间可以双向调用,但二者并不会直接接触,它们之间需要通过中间服务来交换信息,这个中间服务叫做“插件 Hub”。
为什么插件和宿主不能直接接触?
从用户的角度来说,这样做是为了确保安全性:插件的代码是由第三方编写的,如果它可以任意接触宿主那么就有泄漏数据的风险。而 Hub 在中间约束了插件与宿主之间的通信协议,于是插件只能有限制的传递信息。
从插件的角度来说,这样做是可以保障第三方开发者编写插件的灵活性。如果宿主直接接触插件,那就要限制插件的能力以免产生宿主无法处理的响应结果。而有 Hub 来协调双方的信息交换就解除了输入输出跟实际的代码逻辑之间的耦合,对开发者更加友好。
命令行工具和 SDK
尽管插件系统自身的设计很精密复杂,但幸运的是插件开发者却不必深入研究它的工作原理,因为 Atomemo 提供了命令行工具和 SDK,有了它们的辅助你就可以专注于插件自身的功能而无需担心如何跟宿主服务“打交道”:
- 命令行工具:快速创建插件项目、在本地运行并自动跟 Hub 连接和传输信息,插件功能开发完之后负责最后阶段的构建打包和上传发布。全开发流程皆可通过命令行工具轻松搞定。
- SDK:封装了各种类型插件的定义,以及跟Hub/宿主进行双向通信的协议接口。此外还提供了开发插件项目相关的各种周边生态,例如国际化支持、日志输出、生命周期钩子回调等。
如何快速入门和掌握开发插件的技巧?
在了解上述核心概念之后,你就已经可以开始编写插件代码了。Atomemo 还为开发者提供了多方面的技术支持:
- 阅读 快速上手,跟随教程用十分钟创建一个工具插件,迅速感受开发插件的轻松和愉悦。
- 浏览 官方市场 中已经上架的 插件源码,学习各种类型插件的开发技巧。
- 前往 官方讨论区 或加入 Discord 频道 探讨插件开发和寻求更多帮助。