2015-06-26 161 views
2

在Java中,使用RMI API,可以通過將其發送到遠程機器來執行任意代碼來執行。我知道使用Remoting或WCF在.NET中可以實現類似但不完全相同的功能。在遠程機器上運行代碼

但是從我的經驗,無論是允許執行任意代碼,遠程機器還需要一個參考對象,不只是一個接口。那是對的嗎?

我已經通過具有DLL中被更新,並且在遠程計算機能夠使用的是,爲了執行代碼的共享位置可訪問的周圍得到。有沒有更好的辦法?

編輯: http://www.cs.ucsb.edu/~cappello/lectures/rmi/helloworld.shtml 在鏈接中,方法調用只是返回一個字符串。這可能是任何事情,但客戶事先並不知道該方法的實施。

+0

什麼你問? 「任意代碼執行」是什麼意思?我不認爲RMI將字節碼發送到遠程計算機來執行。即使這樣做,這是一個*巨大*安全漏洞 –

+0

我更新了我的意思是任意代碼的問題。我同意這將是一個安全問題,但它也可以是一個有用的功能,如果做得好 – redspidermkv

回答

2

既允許執行任意代碼

這是正確的,你必須公開要遠程執行代碼。

...遠程機器仍然需要對象的引用,而不僅僅是一個接口。那是對的嗎?

沒有在WCF客戶端中可以add a reference to the service和服務使用的類的本地副本創建。

注意Remoting is:

不推薦在新的發展。

但是,您可以通過從客戶端和服務器項目中添加對共享dll的引用來避免共享位置dll,因此,將相同的dll部署到兩個位置。

或者add class source file as link從另外一個項目。

運行任意代碼串編

您可以編譯和運行時,運行任意代碼,並用一個簡單的WFC方法接受一個字符串,編譯並運行它,會達到你想要的知識結合起來:

+0

CodeDOM看起來特別有趣,謝謝你的鏈接! – redspidermkv