3 回答
Smart猫小萌
TA贡献1911条经验 获得超7个赞
我认为这是两个独立的问题:
具有动态负载
有插件
第一个完全不是:Go程序是静态链接的,这意味着您无法将代码添加到正在运行的程序中。这也意味着您必须编译该程序以使其集成插件。
幸运的是,您可以像大多数语言一样在Go中定义一个接受插件的程序,而Go具有接口和快速编译功能并不会使这项任务变得困难。
这是两种可能的方法:
解决方案1:插件集成在主程序中
与Eclipse插件类似,我们可以通过简单地重新编译程序将“插件”集成到主程序存储器中。从这个意义上说,我们可以说数据库驱动程序是插件。
这可能不像Java那样简单,因为您必须重新编译,并且必须在代码的某个点上导入“插件”(请参见数据库驱动程序的完成方式),但是考虑到Go在目录和导入方面的标准化,使用简单的makefile导入插件并重新编译应用程序似乎很容易解决。
鉴于Go中编译的简便性和速度以及包结构的标准化,在我看来这是一个非常可行的解决方案。
解决方案2:分开的过程
在Go中进行通信和处理异步调用特别容易。这意味着您可以基于通过命名管道进行通信的许多过程来定义解决方案(或任何网络解决方案)。请注意,Go中有一个rpc软件包。对于大多数程序而言,这可能足够有效,并且主程序将能够启动和停止插件进程。这很可能感觉与您在Eclipse中所拥有的类似,并且具有存储空间保护的额外好处。
编写了多个Eclipse插件的人的最后一封信:把事情简单化。
- 3 回答
- 0 关注
- 212 浏览
添加回答
举报
0/150
提交
取消