使用 java 通过套接字进行通信的最佳方式是什么 - 架构

what is the best way to communicate over sockets with java - Architecture

我是套接字编程的新手。

高级目标:

我正在为软件开发构建软件。它将由运行对象模型的服务器和允许开发对象模型的编辑器(客户端)组成。使用对象模型的软件客户端会晚得多。

通讯:

我有一个简单的服务器,可以从终端访问服务器。我需要知道的是将客户端操作传达给服务器的最佳方式。我还没有开发客户端,但我现在想考虑通信。例如,如果我在编辑器中创建了一个新对象,那么我需要将其传送到对象模型所在的服务器。服务器包含 类 方法等来执行此操作。我已经可以在一个主要方法中完成这一切。

最终,我可以向服务器发送文本,并拥有一个命令结构,该命令结构可以转换为服务器执行特定操作,例如创建对象类型。考虑到这一点时,我立即设想了一组讨厌的 if else if 语句,用于在通过套接字通信读取字符串时需要的所有命令可能性。我在这方面几乎没有经验,我的研究(我可能问错了)一直在给我提供套接字信息。我现在有套接字设置 我现在想通过套接字进行通信的最佳实施实践。我相信那里有标准。

问题:

我无法想象这是与 java 套接字服务器通信的最佳方式(为命令解析字符串输入)。我对编码器、解码器等了解不多,但我认为这个问题之前已经解决了,没有讨厌的 if else if 来弄清楚客户端正在尝试什么命令。实现这种通信的最佳可扩展方式是什么?

建筑就是我要问的。我想自己做研究,但我的搜索结果空手而归。是否有任何特定的术语我应该研究与通信架构的关系?我搜索了以下内容(我可能再次使用了错误的关键字):

"communication standards over sockets java"

"implementing communication protocol for sockets java"

"binary communication standards over sockets java"

示例:

我正在使用 Key(POJO) 对象来实现对象类型、属性、实例、关系和方法。因此,如果我执行一个操作以在类型 Company 上创建一个新方法,我将需要服务器处理此请求的以下信息:

NewMethod(command), 对象类型的 Key, Name, body, boolean settings, arguments[], return type Key

鉴于此结构,我可以有数百个命令,因此会有大量的字符串解析。

我找到了答案 - 从 TCP 套接字工作,然后需要定义客户端和服务器之间的通信。天空才是极限。我感兴趣的是定义这种通信的一些方法。

我发现 SOF Question 有人在问一个非常相似的问题。

最后你创建了一个数据包定义协议。例如,数据可以具有以下模式:

[command:arguments[] ]

请参阅 link 示例说明。

编辑:

我发现的与我正在寻找的内容相关的其他内容称为协议缓冲区。 Google 想出了一个很好的解决方案。它解决了我所询问的确切问题。我再次认为我对主题的了解不够多,无法使用正确的术语,也没有足够好地描述它以使其他人能够正确回答问题。希望这可以帮助处于相同情况的其他人。