Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 通过远程处理/WCF在远程计算机上部署和执行代码_C#_Wcf_Remoting - Fatal编程技术网

C# 通过远程处理/WCF在远程计算机上部署和执行代码

C# 通过远程处理/WCF在远程计算机上部署和执行代码,c#,wcf,remoting,C#,Wcf,Remoting,我们正在构建一个C#应用程序,允许加载自定义插件DLL并执行它们 每个DLL都包含一些任务,我们希望该任务在本地或远程服务器上透明地执行 我已经研究了各种解决方案,到目前为止,提出的最佳解决方案是使用WCF 我想了解,因为我目前只学习了WCF的基本教程,是否可以使用WCF动态部署新代码以远程执行 在我看来,我有两种不同的情况: 远程计算机部署了一个基本的“执行”库 远程计算机当前没有安装WCF服务 使用选项#1,我想我可以通过DLL或其他东西发送一些功能,并远程执行,因为执行库已经知道如何执行

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

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

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

我想了解,因为我目前只学习了WCF的基本教程,是否可以使用WCF动态部署新代码以远程执行

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

  • 远程计算机部署了一个基本的“执行”库
  • 远程计算机当前没有安装WCF服务
  • 使用选项#1,我想我可以通过DLL或其他东西发送一些功能,并远程执行,因为执行库已经知道如何执行

    有了选项#2,我基本上需要从头开始(以某种方式)部署所有东西,然后发送一个命令来运行它

    这种情况可能吗?你有什么建议来完成这类任务吗

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


    谢谢

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

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

    发送二进制数据并反映它正是我的想法。发送脚本和解释脚本如何比发送二进制数据更安全?我所说的脚本更多是因为互操作性而不是安全性,例如,如果您需要在windows和BSD设备之间通信,或者使用不同版本的框架的环境之间通信。这取决于您的环境和需要。幸运的是,我们所有的计算机都在Windows环境中,并且都安装了.NET framework。这听起来像是一个安全问题。现实生活场景:如果坏人能够在远程计算机上执行任意代码怎么办?我们这里讨论的是一个受限的实验室环境(内部使用的应用程序),而不是免费分发给用户的东西。