c# - 通过 Remoting/WCF 在远程计算机上部署和执行代码

标签 c# wcf remoting

我们正在构建一个 C# 应用程序,允许加载自定义插件 DLL 并执行它们。

每个 DLL 都包含一些任务,我们希望该任务能够在本地或某个远程服务器上透明地执行。

我为此研究了各种解决方案,到目前为止,提出的最佳解决方案是使用 WCF。

我想了解一下,由于我目前只学习了 WCF 的基本教程,是否有可能使用 WCF 动态部署新代码以进行远程执行?

在我看来,我有两种不同的情况:

  1. 远程计算机已部署基础“执行”库。
  2. 远程计算机当前未安装 WCF 服务。

使用选项#1,我想我可以有一些功能来通过 DLL 或其他东西发送,并远程执行它,因为执行库已经知道如何做到这一点。

使用选项 #2,我基本上需要从头开始部署所有内容(以某种方式),然后发送命令来运行它。

这种情况有可能吗?您对执行此类任务有什么建议吗?

另外,如果您有任何好的 WCF 教程(我目前正在 MSDN 上阅读)。

谢谢!

最佳答案

这里要记住的重要一点是,WCF 可用于传输数据,但不能用于传输执行逻辑。您可以将加法的结果从一端发送到另一端,但您不能发送一些任意指令(例如加法或其他指令)并让另一端神奇地执行它。

换句话说,如果远程端有 WCF 客户端,您可以向其发送 DLL 文件(作为二进制数据),然后客户端可以使用动态加载和执行它反射(但是没有提及这会引起的所有明显的安全性和兼容性问题)。 另一个可能更简单的选择是发送脚本而不是编译的代码,并使用服务器端的某些解释器执行它们。但无论您使用什么技巧,您都需要在 WCF 之外做大量工作,因为发送指令不是 WCF 的目标。

关于c# - 通过 Remoting/WCF 在远程计算机上部署和执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071654/

相关文章:

c# - 创意模式建议

C# 获取不带正文的 GET 请求的 HTTP header

wcf - Windows Service中的WCF主机:无法获取wsdl

c# - 如何判断另一个应用程序是否注册了 IPC Remoting channel ?

asp.net - 从 ASP.NET IIS 运行时,Powershell 启 Action 业、等待作业、主机线程永远不会退出

c# - android 与 sql server 2008 r2 通过 c# webservice 的连接

c# - MVC Razor View 表中的文本不会在选择复选框时更新

c# - System.ServiceModel.AddressAccessDeniedException:HTTP 无法注册 URL http::8080

wcf - 使用 WCF 客户端时如何以编程方式设置 MaxReceivedMessageSize?

scala - akka 远程处理(scala)中的死信