gRPC 和 WCF 有什么区别?

What's the difference between gRPC and WCF?

我知道我们正在比较两种不同的技术,但我想知道两者的优缺点。 WCF 现在已经存在将近十年了。 java 世界上以前不存在类似的东西吗?

在非常高的层次上,它们似乎都在处理相同的工具 space。

但是,我可以发现的差异:

  • GRPC 不使用 SOAP 通过 http 在客户端和服务之间进行调解。 WCF 支持 SOAP。
  • GRPC 只关注 RPC 风格的通信。除了 RPC 之外,WCF 还支持和推广 REST 和 POX 风格的服务。
  • GRPC 提供对多种编程语言的支持。 WCF 支持 C#(和其他 .net 语言)。
  • GRPC 使用 protobuf 进行在线序列化,WCF 使用 XML/JSON 或 windows 二进制。
  • GRPC 是开源的

简而言之:

GRPC 似乎是一个更加专注的服务框架,它在多个平台上都做得很好。

WCF 更通用,但暂时仅限于 .net(WCF 正在移植到 .net 核心,但在撰写本文时,只有客户端功能在 .net 核心上)

正如汤姆已经提到的:

WCF uses either XML/JSON or windows binary

虽然 gRPC 使用二进制,这使得消息在 client/server end-point. 上的反序列化变得更精简和更快,只需放弃人类可读性功能即可。
另外,请注意 WCF 需要额外的配置(和麻烦)来遵守 HTTP2 以获得利润,例如:更短的 header 和 body (这意味着更快的传输),更安全可靠的连接,以及多路复用(a.k.a多个request/response并行),server-push和so-on ...,而gRPC已经拥抱它。

除了提到的答案,我想补充一点,gRPC 不支持 windows/kerberos 身份验证,这是企业界事实上的身份验证模式。

因此,很难从 WCF 迁移到 gRPC。