我有使用OpenSSL编写TCP套接字服务器的经验,我希望了解有关Apache Thrift的更多信息。我查看了Thrift服务器的一些https://support.plaid.com/customer/en/portal/articles/2522325-plaid-stripe-troubleshooting示例,我知道Thrift可以处理管道。
有人能简单解释一下Thrift服务器与TCP服务器的不同之处(除了使用管道)吗? Thrift框架是否使用不同的传输协议?
我知道这是一个简单的问题,但我似乎找不到初学者级别的解释。
答案 0 :(得分:1)
Thrift协议是TCP传输层的更高级别实现。它提供了重要的元素:
从我个人的角度来看,主要的好处之一是类型安全,特别是在不同语言之间。 为复杂案例手动编写TCP(套接字)解决方案似乎很难。
因为它是从正式定义生成的(IDL - * .thrift文件,有时这种形式称为 schema ),它与WSDL / SOAP共享相似之处,但具有更高的性能。我在移动客户端等上使用它。
最流行的去年是基于REST的JSON,据我所知,大多数代码都应该手动编写。 JSON没有架构(在官方标准中),可能在未来。
我使用的缩略语一般都是已知的。我的回答非常简洁,专业人士请原谅我。
答案 1 :(得分:1)
[...] Thrift服务器与TCP服务器的不同之处?
Thrift至少是原始套接字上方的一个抽象层。它为您提供了一个抽象,允许您通过任何介质发送和接收信息,其中一个可能是TCP套接字。
底层传输介质本身并不重要,也没有使用协议(二进制,紧凑,JSON ......你的名字)。两者对您的应用程序的其余部分完全透明。
换句话说,您是针对类型安全的服务API开发的,而不是编写套接字或自己解析一些JSON。
Thrift不是摆弄字节,编码和对抗套接字的微妙之处,而是让您专注于您希望使用该服务作为客户端和/或实现服务器端逻辑。
另外,您可以根据需要更改传输和/或协议,而不会影响其余代码。