了解 Apache Thrift 与 TCP 套接字服务器的特点?

Understanding the characteristics of Apache Thrift versus TCP socket servers?

我有一些使用 OpenSSL 编写 TCP 套接字服务器的经验,我希望了解更多关于 Apache Thrift 的信息。我看过一些 basic Thrift 服务器的例子,我知道 Thrift 可以处理管道。

有人可以简单解释一下 Thrift 服务器与 TCP 服务器的不同之处(除了管道的使用之外)吗? Thrift 框架是否使用不同的传输协议?

我知道这是一个简单的问题,但我似乎找不到初学者级别的解释。

  1. Thrift 协议是 TCP 传输层上的更高级别实现。它提供了重要元素:

    • 序列化
    • RPC 协议
  2. 从我个人的角度来看,主要好处之一是类型安全,尤其是在不同语言之间。 为复杂的情况手动编写 TCP(套接字)解决方案似乎很困难。

因为它是从正式定义(IDL - *.thrift 文件,有时这种形式称为 schema)生成的,所以它与 WSDL/SOAP 有相似之处,但自夸更高的性能。我在移动客户端等上使用它

去年最流行的是 JSON over REST,据我所知,大多数代码应该手动编写。 JSON 没有 schema(在官方标准中),也许在将来。

我用过的首字母缩略词是众所周知的。我的回答很笼统和简化,请专业人士见谅。

[...] ways a Thrift server differs from a TCP Server?

Thrift 至少是原始套接字之上的一个抽象层。它为您提供了一种抽象,允许您通过 任何 媒介发送和接收信息,其中之一可能是 TCP 套接字。

底层传输介质本身并不重要,所使用的协议也不重要(二进制、紧凑、JSON ...随便你怎么说)。两者对您的应用程序的其余部分都是完全透明的。

换句话说,您是针对类型安全的服务 API 开发的,而不是自己编写套接字或解析某些 JSON。

无需摆弄字节、编码和与套接字的微妙之处作斗争,Thrift 允许您专注于作为客户端 and/or 实现服务器端逻辑的服务要做什么。

此外,您可以根据需要更改传输 and/or 协议,而不会影响其余代码。