[英]How do I pass a method or object from client to server in Java?
我有多個客戶端和一台服務器。 每個客戶端可以使用一些命令,例如:
public interface Command {
public int run();
}
public class CommandOne implements Command {
// ...
}
public class CommandTwo implements Command {
// ...
}
這些命令可以在客戶端(在其計算機上)中執行-或可以將它們“傳遞”給服務器以執行,然后將返回結果。
在Java中同時實現客戶端和服務器的最簡單方法是什么?
以下是我想出的內容:
switch
語句,實例化相同類型的新命令,運行該命令,然后返回結果。 這意味着,如果我添加了新的命令類,則必須同時更新客戶端和服務器。 有什么我想念的嗎?
編輯
每個請求必須以某種方式進行線程化-因為多個客戶端可以同時與服務器通信。 但是,這可能不是上述問題的問題。
在一個丑陋的世界中,您可以做的簡單事情就是使您的服務器公開一個類似於
/commands?run=CommandOne
並傳遞一些參數(在正文或查詢字符串中)以保存命令參數。
然后,使用一些HTTP客戶端向該URI提交HTTP請求。 服務器將實例化並分派一些命令以執行所需的操作。
在更加結構化的世界中,您應該研究RPC調用或RESTful體系結構樣式。
我發現一種解決方案非常優雅且有趣。
如果您打開端口並且有一個監聽器正在等待“ Runnable”的進入,則可以執行run方法。 變量將全部傳遞出去,並且無論run方法做什么都將完成。
更好的是使用“ runOnServer()”和“ runOnClient()”方法。 客戶端創建對象,將其傳遞給服務器,然后繼續運行,服務器執行runOnServer()方法(針對變量,因為它們已經被序列化了),然后該類自動序列化回客戶端,其中runOnClient()東西被執行了。
使得在服務器上執行某些操作確實很靈活。
如果您想更高級,請研究Hazlecast,它已經做到了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.