为什么您没有看到更多的人将 REST 架构用于客户端服务器系统。您看到人们使用套接字、TIBCO RV、EMS 或 MQ,但我没有看到太多基本的 REST 架构
有谁知道为什么您会避免使用此架构进行客户端/服务器通信以实现高吞吐量/低延迟
REST 并不适合所有问题。
REST 最适合资源管理。如果您正在编写 Web 服务(如使用客户端-服务器系统),那么您会发现您需要与语言无关的数据表示、参数验证、客户端/服务器代码生成、错误处理、访问控制等内容。REST 基本上要求您自己编写这些代码。
另一方面,它添加了 HTTP 层。您可以获得代理、缓存等的无缝集成,但由于 HTTP 标头、网络服务器前端等,您确实会损失一些速度。
我不知道我一定会避免它,但我可以想到几个原因,为什么我可能不会选择它来提供高吞吐量、低延迟的服务。首先,您必须处理整个 Web 堆栈才能将消息传递给您的服务。这可能会引入许多不必要的层和服务,从而延迟消息。自定义服务只需要支持服务本身所需的协议层。
其次,除非您的服务是 Web 服务器上托管的唯一服务,否则您将与其他请求竞争您的消息得到服务。虽然为您的服务拥有一个自定义端点可能无法解决所有资源争用问题,但至少您不必竞争其他服务对您的端点的访问。
第三,自定义协议只需要支持实际的服务相关协议信息,并且可能会导致更小的数据包大小,因为您不需要支持额外的 HTTP 协议开销。这将特别影响交换小消息的协议,因为标头信息将是消息大小的较大部分。