使用 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 想出了一个很好的解决方案。它解决了我所询问的确切问题。我再次认为我对主题的了解不够多,无法使用正确的术语,也没有足够好地描述它以使其他人能够正确回答问题。希望这可以帮助处于相同情况的其他人。
我是套接字编程的新手。
高级目标:
我正在为软件开发构建软件。它将由运行对象模型的服务器和允许开发对象模型的编辑器(客户端)组成。使用对象模型的软件客户端会晚得多。
通讯:
我有一个简单的服务器,可以从终端访问服务器。我需要知道的是将客户端操作传达给服务器的最佳方式。我还没有开发客户端,但我现在想考虑通信。例如,如果我在编辑器中创建了一个新对象,那么我需要将其传送到对象模型所在的服务器。服务器包含 类 方法等来执行此操作。我已经可以在一个主要方法中完成这一切。
最终,我可以向服务器发送文本,并拥有一个命令结构,该命令结构可以转换为服务器执行特定操作,例如创建对象类型。考虑到这一点时,我立即设想了一组讨厌的 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 想出了一个很好的解决方案。它解决了我所询问的确切问题。我再次认为我对主题的了解不够多,无法使用正确的术语,也没有足够好地描述它以使其他人能够正确回答问题。希望这可以帮助处于相同情况的其他人。