您可以使用WMI service在远程计算机上启动您的进程。您可以将您的exe文件构建到远程计算机可见的共享目录中,然后使用远程计算机上的WMI启动该exe文件。
有很多的例子在那里要做到这一点,而是想说明,这不承担任何身份验证并发症简单的方法是使用.vbs脚本文件:
strComputer = "acomputer"
strCommandLine = "calc.exe"
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objProcess = objWMIService.Get("Win32_Process")
intReturnValue = objProcess.Create(strCommandLine, , , intPID)
WScript.Echo "Process ID: " & intPID
您还可以使用PsExec from SysInternals处理所有这些工作的细节。
在Visual Studio中构建exe文件后,您可以在本地机器上运行它以确保它做到了您想要的,然后当您准备在远程系统上启动它时,可以执行类似于高于VBS在远程系统上启动EXE。
您仍然需要提供一些机制来分配工作量,以便每个客户都知道应该处理的问题的哪一部分。您可以在用于启动远程应用程序的命令行中,在exe目录中的配置文件中,在数据库表中提供此信息,或使用客户端连接回的单独的命令和控制类型服务器(尽管采用这种方法,你很快就会走上舞台,学习如何使用现有的解决方案,而不是自己动手)。
您可能还需要包含某种远程'kill switch'。您可以使用PsKill from SysInternals,或者如果您想要更优雅的关机,则可以使用与exe相同的目录中存在的特定文件这样的简单操作作为远程进程关闭标志。
您也可以考虑将CSScript支持添加到客户端,以便远程客户端程序是静态的并加载并编译CSScript文件来完成这项工作。如果您在经常重新部署和重新启动客户端程序时遇到某种困难,或者您需要它们稍有不同(例如,可能会编写一个程序为每个客户端生成单独的脚本文件),这可能会非常有用。
我相信它很容易并行化。工作量可以分成不连续的块。有人建议WCF,但是我相信我仍然有问题,我需要创建一个* .exe,安装它之前,我可以运行它在每台服务器上。我需要对这两种方法进行的任何更改都需要一个新的* .exe,并将它们重新安装到服务器上。 (这假设我没有missunderstood的东西) – 2013-05-01 14:32:26
我想看看Hadoop和HDInsight:http://cloud.dzone.com/articles/hdinsight-writing-hadoop-map – duffymo 2013-05-01 14:33:18
我检查出来,谢谢你的链接! – 2013-05-01 14:37:37