gRPC 和 CORBA 有什么区别?

What is the difference between gRPC and CORBA?

我在开发 SOAP 和 REST Web 服务(在 java 平台上)方面有丰富的经验。我试图了解 gRPC 和 CORBA 在各个方面的区别,除了两者都支持分布式环境中平台中立的通信方式这一事实。这两个概念的 Goal/Purpose 到底有何不同?

CORBA 是一个面向对象的框架,具有大量的特性和分布式计算的灵活性,gRPC 只是一个基于 http/2 和 protobuf 的远程过程调用框架。

只需比较规范的大小 - CORBA 有数千页,而 gRPC 可能只有 CORBA 的十分之一。

gRPCCORBA 共享非常相似的概念和构建块:Client/Server 架构与 Interface Definition Language (IDL) 生成客户端 Stubs 和服务器 Skeletons、标准数据 可互换格式 和多种编程语言的绑定。

CORBA 使用 OMG's IDL for defining object interfaces and GIOP to standardize the message interchangeable format. gRPC uses the ProtocolBuffer's IDL 定义消息格式和 rpc 服务接口。 IIOP(TCP/IP 协议)是用于 CORBA 的最常见的 GIOP 实现,而 gRPC 在 HTTP/2.

之上实现了其传输协议

一个显着差异是对远程对象引用(或 gRPC 的远程服务)的支持。虽然 CORBA 支持远程对象引用的概念(例如,您可以在服务调用中传递远程对象引用),但 gRPC 仅允许数据消息结构作为服务调用参数。

传输协议也经常被视为一个重要的区别! CORBA 使用 GIOP/IIOP - 基于 TCP/IP 的协议,而 gRPC 使用 HTTP/2 传输。后来被认为对 Internet 基础设施(例如防火墙、代理......)更友好。