我们正在构建一个 C# 应用程序,允许加载自定义插件 DLL 并执行它们。
每个 DLL 都包含一些任务,我们希望该任务能够在本地或某个远程服务器上透明地执行。
我为此研究了各种解决方案,到目前为止,提出的最佳解决方案是使用 WCF。
我想了解一下,由于我目前只学习了 WCF 的基本教程,是否有可能使用 WCF 动态部署新代码以进行远程执行?
在我看来,我有两种不同的情况:
- 远程计算机已部署基础“执行”库。
- 远程计算机当前未安装 WCF 服务。
使用选项#1,我想我可以有一些功能来通过 DLL 或其他东西发送,并远程执行它,因为执行库已经知道如何做到这一点。
使用选项 #2,我基本上需要从头开始部署所有内容(以某种方式),然后发送命令来运行它。
这种情况有可能吗?您对执行此类任务有什么建议吗?
另外,如果您有任何好的 WCF 教程(我目前正在 MSDN 上阅读)。
谢谢!
最佳答案
这里要记住的重要一点是,WCF 可用于传输数据,但不能用于传输执行逻辑。您可以将加法的结果从一端发送到另一端,但您不能发送一些任意指令(例如加法或其他指令)并让另一端神奇地执行它。
换句话说,如果远程端有 WCF 客户端,您可以向其发送 DLL 文件(作为二进制数据),然后客户端可以使用动态加载和执行它反射(但是没有提及这会引起的所有明显的安全性和兼容性问题)。 另一个可能更简单的选择是发送脚本而不是编译的代码,并使用服务器端的某些解释器执行它们。但无论您使用什么技巧,您都需要在 WCF 之外做大量工作,因为发送指令不是 WCF 的目标。
关于c# - 通过 Remoting/WCF 在远程计算机上部署和执行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6071654/