我有多个客户端和一台服务器。每个客户端都有一些命令可供他们使用,例如:
public interface Command {
public int run();
}
public class CommandOne implements Command {
// ...
}
public class CommandTwo implements Command {
// ...
}
这些命令可以在客户端(在他们的机器上)执行 - 或者它们可以“传递”到服务器执行,然后将返回结果。
在 Java 中实现客户端和服务器的最简单方法是什么?
以下是我想出的:
- 序列化命令,将其传递给服务器,让服务器对其进行反序列化,运行命令并返回结果。(这不起作用,因为方法不能被序列化。)
- 将命令的名称(作为字符串)传递给服务器,让服务器运行一条
switch
语句,实例化一个相同类型的新命令,运行它并返回结果。这意味着如果我添加一个新的命令类,我将不得不同时更新客户端和服务器。 - 将必要的方法逻辑序列化为某种结构(JSON、XML 等),将其传递给服务器,让服务器将其反序列化为自定义类,运行方法逻辑,然后返回结果。这似乎有点矫枉过正,需要编写 DSL。
有什么我想念的吗?
编辑
每个请求都必须以某种方式进行线程化——因为多个客户端可以同时与服务器通信。不过,这可能不是上述问题的问题。