Search code examples
rpccorbagrpc

What is the difference between gRPC and CORBA?


I have a reasonable experience in developing both SOAP and REST web services (in java platform). I am trying to understand the difference between the gRPC and CORBA in every aspect apart from the fact that both enables platform-neutral way of communication in distributed environment. where and how is the Goal/Purpose of these two concepts differ anyway?


Solution

  • gRPC and CORBA share very similar concepts and building blocks: Client/Server architecture with Interface Definition Language (IDL) to generate client Stubs and server Skeletons, standard data interchangeable format and bindings for multiple programming languages.

    CORBA uses the OMG's IDL for defining object interfaces and GIOP to standardize the message interchangeable format. gRPC uses the ProtocolBuffer's IDL for defining the message formats and rpc service interfaces. The IIOP (TCP/IP protocol) is the most common GIOP implementation used for CORBA, while gRPC has implemented its transport protocol on top of HTTP/2.

    One significant difference is the support for remote object references (or remote services for gRPC). While CORBA supports the notion of remote object references (e.g. you can pass a remote object reference in your service call), the gRPC allows only data message structures as service call arguments.

    The Transport protocol is often seen as an important distinction too! CORBA uses GIOP/IIOP - a TCP/IP based protocol while gRPC uses HTTP/2 transport. Later is consider friendlier for the Internet infrastructures (e.g. firewalls, proxies ...).