【问题标题】:What's the difference between gRPC and WCF?gRPC 和 WCF 有什么区别?
【发布时间】:2016-06-12 04:20:00
【问题描述】:

我知道我们正在比较两种不同的技术,但我想知道两者的优缺点。 WCF 已经存在了将近十年。到目前为止,Java世界中还没有类似的东西吗?

【问题讨论】:

标签: wcf grpc


【解决方案1】:

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

因此,从 WCF 迁移到 gRPC 非常困难。

【讨论】:

  • 我刚刚阅读了 MSDN post,它描述了使用带有 gRPC 的 ASP.net 核心绝对可以实现 Windows 身份验证。当然,假设是我们正在 .net 领域内迁移。
【解决方案2】:

正如汤姆已经提到的:

WCF 使用 XML/JSON 或 windows 二进制文件

虽然 gRPC 使用二进制,这使得消息在客户端/服务器端点上反序列化变得更精简和更快。只需放弃人类可读性功能即可。
另外,请注意WCF 需要额外的配置(和麻烦)以符合HTTP2 以获得它的利润,例如:更短的标头和主体(这意味着更快的传输)、更安全和可靠的连接以及多路复用(又名多个请求/响应并行),服务器推送等等......,而gRPC已经接受了它。

【讨论】:

    【解决方案3】:

    在非常高的水平上,它们似乎都针对相同的工具空间。

    但是,我可以了解的差异:

    • 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 现在也是开源的,但没人关心。
    • WCF 作为一个整体不是开源的。只是 .NET Core 的 WCF 客户端库。
    • @wojciech_rak - 请解释一下。你说的WCF客户端库是什么?您的意思是 .net 核心仅支持服务客户端而不支持实际服务吗?你的说法有点混乱。
    • @tomredfern - github.com/dotnet/wcf 仅包含 .NET Core 客户端库,因此您可以从 .NET Core 使用 WCF。但是您不能从 .NET Core 托管 WCF 服务,您需要完整的 .NET 框架。更多信息:github.com/dotnet/core/issues/130github.com/dotnet/wcf/issues/1200。使用 gRPC,客户端和服务器端库都是开源的,适用于所有语言。在 WCF 中,只有 .NET Core 客户端库是开源的。
    • 谢谢你的解释,这让我想起了2018年大家大热的那个古老的陀螺玩具
    猜你喜欢
    • 1970-01-01
    • 2017-11-11
    • 2012-09-04
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2020-10-11
    • 2011-03-17
    • 1970-01-01
    相关资源
    最近更新 更多