我正在开发一个项目,我想要一个像 System 这样的插件沙箱,但是我在解决 2-Way 实时跨进程通信时遇到问题。起初我想到了 WCF,因为它可以传递对象元数据,但很快意识到 WCF 的服务客户端模型会带来问题。但在我在这里提出所有想法和问题之前,我已经计划好了。
我想有一个宿主应用程序来完成大部分工作,让我们调用这个host.exe,host.exe将宿主程序的主要应用程序逻辑,以及插件的启动、执行和杀死。插件将通过插件代理托管,该代理将通过 MEF 托管它们,因此我们将其称为 proxy.exe。proxy.exe 将加载插件 dll 并将它们托管在一个隐蔽的环境中,该环境将隔离故障,如果插件失败,它将终止代理而不是应用程序。主机和代理需要在两个方向上进行实时通信,并且因为会有多个代理主机,所以最好能够传递对象数据。
所以这就是我想要的基本想法。我在想几种方法来做到这一点。第一个是 WCF,但是我认为 WCF 的工作方式即使不是不可能,服务的服务器也很难向客户端发送请求/命令。下一个想法是什么使用 TCP,并让主机成为 TCP 服务器并开发一个我可以用来通信的消息传递协议,但这会带来一个问题,因为我没有 WCF 元数据的奢侈和传递复杂的类信息会快疯了。
通过我所有的研究,我提出了一个又一个问题,如果有人能够提出解决这个问题的方法,我将不胜感激。谢谢你。