【发布时间】:2017-11-11 03:40:43
【问题描述】:
我在开发 SOAP 和 REST Web 服务(在 Java 平台中)方面有一定的经验。我试图了解 gRPC 和 CORBA 在各个方面的区别,除了两者都支持在分布式环境中进行平台中立的通信方式这一事实。这两个概念的目标/目的到底在哪里以及如何不同?
【问题讨论】:
我在开发 SOAP 和 REST Web 服务(在 Java 平台中)方面有一定的经验。我试图了解 gRPC 和 CORBA 在各个方面的区别,除了两者都支持在分布式环境中进行平台中立的通信方式这一事实。这两个概念的目标/目的到底在哪里以及如何不同?
【问题讨论】:
gRPC 和 CORBA 共享非常相似的概念和构建块:Client/Server 架构与 接口定义语言 (IDL),用于生成客户端存根和服务器骨架、标准数据可互换格式和多种编程语言的绑定。
CORBA 使用OMG's IDL 定义对象接口,使用GIOP 标准化消息可互换格式。 gRPC 使用ProtocolBuffer's IDL 来定义消息格式和rpc 服务接口。 IIOP(TCP/IP 协议)是用于 CORBA 的最常见的 GIOP 实现,而 gRPC 在 HTTP/2 之上实现了其传输协议。
一个显着的区别是对远程对象引用(或 gRPC 的远程服务)的支持。虽然 CORBA 支持远程对象引用的概念(例如,您可以在服务调用中传递远程对象引用),但 gRPC 只允许数据消息结构作为服务调用参数。
传输协议通常也被视为一个重要的区别! CORBA 使用GIOP/IIOP - 基于 TCP/IP 的协议,而 gRPC 使用 HTTP/2 传输。后来考虑对互联网基础设施(例如防火墙、代理......)更友好。
【讨论】:
CORBA 是一个面向对象的框架,具有大量的特性和分布式计算的灵活性,gRPC 只是一个基于 http/2 和 protobuf 的远程过程调用框架。
只需比较规范的大小 - CORBA 有数千页,而 gRPC 可能只有 CORBA 的十分之一。
【讨论】: