2011-11-18 164 views
2

我已經完成了大量的C#shell命令調用,應用程序,批處理文件等。有一天我被問到,如果我目前從我的網站應用程序運行一個可執行文件,將移到我們Intranet上的另一臺服務器上。 換句話說,網站應用程序和我通過Process.Start(...)運行的可執行文件位於當前的相同框中 - 所有這一切都很好。現在希望將兩者分開放在兩臺不同的服務器上。C# - 命令行應用程序調用

我做了一些徒勞的嘗試,從服務器A(網站所在的位置)執行應用程序(位於服務器B上)。 有沒有一種方法,我還沒有運行交叉還沒有做到這一點?

感謝

+4

爲什麼這些嘗試是徒勞的?你嘗試了什麼,它是如何失敗的? – David

+1

使用套接字。或通過http戳它。 –

+0

與遠程機器上的另一個進程通信的標準方式是使用WCF或任何其他ipc機制 –

回答

4

PsExec是用最少的代碼的一種方式。使用System.Diagnostic.Process,你可以調用這個命令:

psexec \\ServerB (path)\myapp.exe arg0 arg1 ... 
0

通過運行在服務器B的應用服務器控制A的過程中,你需要上會得到遠程控制莫名其妙服務器B上運行的應用程序。

舉一個例子,假設服務器A運行unix,所以你可以編寫一個應用程序,它使用ssh連接到服務器A,驗證並控制進程,而不像你在shell中做的那樣。如果服務器A不允許ssh連接,則可以編寫自己的應用程序,該應用程序將在服務器A上運行,以偵聽來自服務器B中的應用程序的某些連接和命令。

很難理解你是什麼當前設置以及爲什麼你甚至想要將應用程序從服務器A切換到服務器B,所以更多的信息會讓你得到更好的答案。

0

奧斯汀的PSEXEC的方法可能是在遠程機器上執行的EXE最簡單的方法,但你可能要考慮潛在的更加強大的解決方案:

您可以修改您的命令行應用作爲服務運行並通過WCF(binaryXML/TCP或XML/HTTP)調用來響應工作和/或數據請求。