👩💻 Join our community of thousands of amazing developers!
应用程序中的插件功能可以通过 4 个基本概念来描述[1]:Discovery(发现):用于正在运行的程序找出它可以使用哪些插件的机制,需要给应用程序指定查看什么位置(工作路径)以及需要查找什么;Registration(注册):用于插件告知应用程序 - I’m here, ready to do work 的一种机制,将插件载入到应用程序中;Hooks(挂载点):插件可以将自身”附加”到应用程序的位置,表明它可以获取信息并参与流的范围,挂载点的确切性很大程度上取决于应用程序的设计。这个过程时插件注册自己的功能到应用程序,再由应用程序调用插件的方法(应用程序 -> 插件);Extension API(扩展 API):应用程序需要公开插件可以使用的 API,用于授予它们对应用程序的访问、调用权限。这个过程是应用程序提供一些方法给插件,插件再运行时进行调用(插件 -> 应用程序);Golang 中的插件可以根据实现方式划分为三种:编译时插件、运行时插件、远程调用插件远程调用插件通常通过 IPC、RPC 或 TCP 通信的方式来实现,插件作为一个独立的进程在本地或者远程运行,相比于编译时插件和...