【发布时间】:2011-10-04 01:17:04
【问题描述】:
我正在做一个项目,我想要一个像 System 这样的插件沙箱,但是我在解决 2-Way 实时跨进程通信时遇到了问题。起初我想到了 WCF,因为它可以传递对象元数据,但很快意识到 WCF 的服务客户端模型会带来问题。但在我提出所有想法和问题之前,我已经计划好了。
我想要一个宿主应用程序来完成大部分工作,让我们调用这个host.exe,host.exe将宿主程序的主要应用程序逻辑,以及启动,执行和杀死插件。插件将通过插件代理托管,该代理将通过 MEF 托管它们,因此我们将其称为 proxy.exe。 proxy.exe 将加载插件 dll 并将它们托管在一个隐蔽的环境中,该环境将隔离故障,如果插件失败,它将终止代理而不是应用程序。主机和代理需要在两个方向上实时通信,因为会有多个代理主机,所以最好能够传递对象数据。
这就是我想要的基本概念。我在想几种方法来做到这一点。第一个是 WCF,但是我认为 WCF 的工作方式即使不是不可能,服务的服务器也很难向客户端发送请求/命令。下一个想法是什么使用 TCP,并让主机成为 TCP 服务器并开发一个我可以用来通信的消息传递协议,但这会带来一个问题,因为我没有 WCF 元数据的奢侈和传递复杂的类信息会快疯了。
通过我所有的研究,我提出了一个又一个问题,如果有人能够提出解决这个问题的方法,我将不胜感激。谢谢。
【问题讨论】:
-
您将如何帮助您?您真的认为使用几个代码示例就可以解决您的问题吗?
-
你说的是IPC吗?那么,你就不需要WCF了,WCF不是实时的进程间通信服务,使用实时的基于IPC的客户端-服务器技术。
-
@Artur Mustafin,我只是想对我迄今为止的计划提出想法和反馈。是的,我知道 WCF 不是实时的。这是我正在考虑的一个选项。虽然我没有代码,但我不想要代码,只是想法和反馈,谢谢。
-
您可能对托管插件框架感兴趣:msdn.microsoft.com/en-us/library/bb384200.aspx
-
使用 ZeroMQ 之类的东西怎么样?
标签: c# wcf mef cross-process dynamic-assemblies