gpt4 book ai didi

rest - 自定义休息协议(protocol)是基于二进制而不是像 Http 那样基于文本的,这是一件好事吗?

转载 作者:行者123 更新时间:2023-12-04 22:26:03 25 4
gpt4 key购买 nike

你有没有看到过创建自定义二进制 rest 协议(protocol)而不是使用基本的 http rest 实现的好理由?

我目前正在.Net 中开发一个面向服务的架构框架,负责托管和使用服务。我不想基于现有的框架,如 Remoting 或 WCF,因为我想要完全的灵 active 和控制来执行自定义优化。

所以在这里我试图找到处理这个 SOA 框架的最佳协议(protocol)。我喜欢 REST 的请求/响应无状态连接性质和用于定义资源的 uri,但我不喜欢 HTTP 基于文本的性质。

这是我不喜欢 HTTP 的论据,如果我错了,请纠正我:

  • 首先是一个证据,解析文本的效率低于解析二进制文件。
    我更喜欢包含内容长度和二进制内容的固​​定长度二进制 header 。
  • 其次,http 请求没有序列号的概念,因此将响应与其请求相关联的唯一方法是用于发送请求和接收响应的套接字连接。
    这意味着对于指定的套接字一次只能有一个待处理的请求,因此如果服务使用者想要并行发送多个请求到服务,则需要向服务器打开多个套接字。
    自定义的 rest 协议(protocol)可以为请求定义一个序列号,因此请求和响应将与序列号而不是套接字相关联,并且可以在同一个套接字上并行发送多个请求。
    我认为没有办法用 HTTP 标准地做到这一点,它可以用基于自定义文本的协议(protocol)来完成,但为什么不让它基于二进制以获得性能。

  • 为了添加更多上下文,我的 SOA 框架不需要从非 .Net 使用者访问,因此我对使用 .Net 二进制格式化程序或其他自定义二进制格式化程序没有任何限制。

    那么我想要一个自定义的二进制休息协议(protocol)有什么意义吗?如果你认为我错了,请告诉我你的论点。

    谢谢。

    最佳答案

    REST 是一种用于构建 Web 服务的架构风格。 Roy Fielding 根据他设计 HTTP 的经验阐述了它,但它超越了 HTTP。例如,您可以通过普通的电子邮件交换部署 RESTful 服务。

    您的资源的 REST 表示可以是您喜欢的任何东西,尽管 Roy 确实强调人们应该尝试使用非常精心设计的标准表示。二进制没有错。事实上,JPEG 和 PNG 等图像表示是二进制的。谷歌的 Protocol Buffers也为您提供了创建结构化数据的紧凑二进制表示的方法。

    所以简短的回答是,你当然可以使用 RESTful 并使用二进制表示和本地开发的二进制替代 HTTP。

    不过,我实际上非常强烈建议您使用 HTTP 来提高效率。如果您使用自己的协议(protocol),那么您将失去位于服务器和客户端之间的美妙 HTTP 缓存基础架构所提供的所有优势。完整的客户端负载直接落在您的服务器上,而不是分散在中间缓存上。

    2010 年 10 月 4 日:在我们基于 HTTP 的 REST API 中,我们现在支持 Java 序列化对象和 Kryo除了 XML、JSON 和 XHTML 之外的二进制表示。 Kryo 序列化库的性能明显优于其他库,无需任何特殊协议(protocol)。另一种减少带宽的方法是使用 HTTP compression连同文本表示。

    关于rest - 自定义休息协议(protocol)是基于二进制而不是像 Http 那样基于文本的,这是一件好事吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1529322/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com