我一直在问一些关于如何在我的客户端服务器环境中使用命令协议的问题。然而,经过一番实验,我得出的结论是它不适合我。它不是为这种情况设计的。因此我处于一个松散的结局。Java Socket RPC协议
我已经实现了一种RPC机制,在此之前我有一个名为“Operation”的类。我还有一个名为“Action”的枚举,其中包含可以在服务器上调用的操作的名称。
现在,在我的旧项目中,客户端每次想要在服务器上调用一个操作时,它都会创建一个“Operation”实例,并使用“Action”枚举中的值设置操作变量。例如
Operation serverOpToInvoke = new Operation();
serverOpToInvoke.setAction(Action.CREATE_TIME_TABLE);
serverOpToInvoke.setParameters(Map params);
ServerReply reply = NetworkManager.sendOperation(serverOpToInvoke);
...
在服务器端,我不得不执行确定通过用“的if/else”语句的负荷检查“操作”枚举值来调用该方法的可怕任务。当找到一场比赛时,我会调用适当的方法。
与此问题是,它是凌乱的,很难维护,最终是不好的设计。
我的问题是这样的 - 是否有某种模式,我可以按照java中的TCP套接字实现一个漂亮,清洁和可维护的rpc机制?由于客户端(android)不支持RMI,因此RMI对我来说是不可行的。在这个阶段我已经耗尽了所有的途径。唯一的其他选择可能是REST服务。任何建议都会非常有帮助。
非常感谢您 问候
嗨biziclop,当你提到使用反射执行命令的服务器,你能详细解释一下吗?你昨天回答了一个关于我的命令模式的帖子,从那以后,我读到了强大的动态代理。我很感谢代码。我对整体概念更感兴趣。非常感谢您的帮助 – Joeblackdev 2011-02-17 19:45:31
@Joeblackdev更新了我的答案,希望它有所帮助。 – biziclop 2011-02-17 20:05:19