我认为划分Apache Thrift传输层的原因是因为低级传输只是使用/包装一些基本的Java函数,比如socket。并且传输包装器仅使用zlib-transport或framed-transport准备数据,并使用其他传输将其发送到网络。但是HttpClient也是一个传输包装器,并没有使用另一个传输来发送。
那么Apache Thrift将传输层划分为低级传输和传输包装的原因是什么?
近年来,术语“分层传输”和“端点传输”已经被创造出来,并且它们对它进行了相当好的描述。
这个想法就是这样
虽然第1部分是强制性的,但第2部分则不是。此外,您可以将多个分层传输堆叠在一起:
在其他一些目标中,Thrift旨在提供极大的灵活性和模块性,从而通过模块化实现灵活性。当您查看TTransport / TServerTransport或TProtocol的核心基础时,您会发现当需要自定义传输或协议时,实际上并不需要实现大量代码。
而且由于加密或缓冲之类的东西与使用的任何传输或协议没有硬性依赖关系,因此通过设计使它们保持独立是很自然的。这就是Thrift协议/传输堆易于使用且易于扩展的原因。它可以让您构建出色的应用程序,而不会妨碍您。
PS:更好的阅读可能是:https://thrift.apache.org/docs/concepts