我一直在询问如何调整命令协议以在客户端服务器环境中使用。然而,经过一些实验后,我得出结论:它对我来说行不通。它并没有为这种情况设计。因此,我现在很迷茫。
我以前实现过一种RPC机制,其中有一个名为“Operation”的类。我还有一个名为“Action”的枚举,其中包含可以在服务器上调用的操作名称。
在我的旧项目中,每当客户端想要在服务器上调用操作时,它都会创建'Operation'的实例,并使用“Action”枚举中的值设置动作变量。例如:
Operation serverOpToInvoke = new Operation(); serverOpToInvoke.setAction(Action.CREATE_TIME_TABLE); serverOpToInvoke.setParameters(Map params); ServerReply reply = NetworkManager.sendOperation(serverOpToInvoke);
在服务器端,我必须执行可怕的任务,通过检查'Action'枚举值和一堆'if / else'语句来确定要调用哪个方法。当找到匹配项时,我会调用适当的方法。
这种方法的问题在于它很混乱,难以维护,最终是糟糕的设计。
因此,我的问题是 - 是否有某种模式可以遵循,在Java中通过TCP套接字实现漂亮,清晰和易于维护的RPC机制? RMI对我来说行不通,因为客户端(Android)不支持RMI。我已经耗尽了所有途径。唯一的其他选择可能是REST服务。任何建议都将非常有帮助。
非常感谢 问候
我以前实现过一种RPC机制,其中有一个名为“Operation”的类。我还有一个名为“Action”的枚举,其中包含可以在服务器上调用的操作名称。
在我的旧项目中,每当客户端想要在服务器上调用操作时,它都会创建'Operation'的实例,并使用“Action”枚举中的值设置动作变量。例如:
Operation serverOpToInvoke = new Operation(); serverOpToInvoke.setAction(Action.CREATE_TIME_TABLE); serverOpToInvoke.setParameters(Map params); ServerReply reply = NetworkManager.sendOperation(serverOpToInvoke);
在服务器端,我必须执行可怕的任务,通过检查'Action'枚举值和一堆'if / else'语句来确定要调用哪个方法。当找到匹配项时,我会调用适当的方法。
这种方法的问题在于它很混乱,难以维护,最终是糟糕的设计。
因此,我的问题是 - 是否有某种模式可以遵循,在Java中通过TCP套接字实现漂亮,清晰和易于维护的RPC机制? RMI对我来说行不通,因为客户端(Android)不支持RMI。我已经耗尽了所有途径。唯一的其他选择可能是REST服务。任何建议都将非常有帮助。
非常感谢 问候
serviceObject
,因为您只会将参数发送到服务器并等待响应。在服务器端,您不需要代理,只需要一个监听器,以我描述的方式使用反射执行调用。 - biziclop