您是否看到过创建自定义二进制REST协议而不使用基本的HTTP REST实现的好理由?
我目前正在使用.Net开发一个面向服务架构框架,负责托管和消费服务。我不想基于现有的框架,比如Remoting或WCF,因为我想要完全灵活性和控制,以执行定制优化。
所以在这里,我试图找到处理此SOA框架的最佳协议。我喜欢REST的请求/响应无状态连接特性和用于定义资源的URI,但我不喜欢HTTP的基于文本的特性。
以下是我不喜欢HTTP的论点,请指正我是否错误:
- 首先是证据,解析文本比解析二进制效率低。我更希望使用包含内容长度的固定长度二进制头和二进制内容。 - 其次,HTTP请求没有序列号的概念,因此将响应与其请求关联的唯一方法是用于发送请求和接收响应的套接字连接。这意味着针对指定套接字只能同时存在一个挂起的请求,因此如果服务使用者要并行发送多个请求,则需要打开多个套接字到服务器。自定义REST协议可以为请求定义一个序列号,因此请求和响应将与序列号而不是套接字关联,并且可以在同一个套接字上并行发送多个请求。我认为标准的HTTP没有这种方式,使用自定义基于文本的协议可以实现这一点,但为什么不使其基于二进制以获得更好的性能呢?
为了增加一些背景知识,我的SOA框架不需要从非.Net消费者处访问,因此我没有使用.Net二进制格式化程序或其他自定义二进制格式化程序的限制。
那么,我是否有理由想要自定义二进制REST协议?如果您认为我错了,请告诉我您的论点。
谢谢。
我目前正在使用.Net开发一个面向服务架构框架,负责托管和消费服务。我不想基于现有的框架,比如Remoting或WCF,因为我想要完全灵活性和控制,以执行定制优化。
所以在这里,我试图找到处理此SOA框架的最佳协议。我喜欢REST的请求/响应无状态连接特性和用于定义资源的URI,但我不喜欢HTTP的基于文本的特性。
以下是我不喜欢HTTP的论点,请指正我是否错误:
- 首先是证据,解析文本比解析二进制效率低。我更希望使用包含内容长度的固定长度二进制头和二进制内容。 - 其次,HTTP请求没有序列号的概念,因此将响应与其请求关联的唯一方法是用于发送请求和接收响应的套接字连接。这意味着针对指定套接字只能同时存在一个挂起的请求,因此如果服务使用者要并行发送多个请求,则需要打开多个套接字到服务器。自定义REST协议可以为请求定义一个序列号,因此请求和响应将与序列号而不是套接字关联,并且可以在同一个套接字上并行发送多个请求。我认为标准的HTTP没有这种方式,使用自定义基于文本的协议可以实现这一点,但为什么不使其基于二进制以获得更好的性能呢?
为了增加一些背景知识,我的SOA框架不需要从非.Net消费者处访问,因此我没有使用.Net二进制格式化程序或其他自定义二进制格式化程序的限制。
那么,我是否有理由想要自定义二进制REST协议?如果您认为我错了,请告诉我您的论点。
谢谢。