このトピックは古いですが、私は 2 セントを与えようとします。
CORBA は、分散オブジェクト コンピューティング ミドルウェアを開発するための標準的なミドルウェア アーキテクチャです。したがって、オブジェクトはシステムのプリミティブです。高レベル ビューでは、クライアントは別のコンピューター (サーバー) にあるオブジェクトのメソッドを呼び出し、そのオブジェクトがクライアント自体にあるかのように結果を取得します。つまり、RPC を行う方法です。
低レベルの観点では、クライアントでメソッドが呼び出されると、サーバー上のオブジェクトを識別するために使用される他の多くのフィールドとともに、すべてのパラメーターがメッセージに配置されます。このメッセージはサーバーに送信され、サーバーはメッセージを読み取り、指定されたオブジェクトのメソッドを呼び出します。メソッドの結果は、クライアントに送り返されるメッセージに書き込まれます。
CORBA の GIOP プロトコル (メッセージ形式) を使用して実行できることは、HTTP プロトコルを使用した RESTful アプローチを使用して実行することもできます。同様に、すべてのメソッド引数を HTTP POST メッセージ (または、目的に応じて GET メッセージ) に配置し、そのメッセージを HTTP サーバーに送信するクライアントを作成できます。HTTP サーバーは、メッセージをサービスに配信します。 HTTP 応答にカプセル化されてからクライアントに送り返される応答を返します。
分散オブジェクトと RESTful サービスには概念上の違いがありますが、どちらも同じことを行います。つまり、クライアント サーバー通信です。両者の違いは、コミュニケーションの方法にあります。CORBA は IDL (Interface Description Language の略) で動作します。この IDL は、使用可能なすべてのメソッド、引数として渡されるデータの型、または応答として返されるデータの型などを含むオブジェクト インターフェイスを記述します。次に、この IDL を使用して、コードと一緒にコンパイルできるスタブを生成します。これらのスタブは、厄介なメッセージのシリアル化と通信コードをすべて処理します。
ただし、RESTful サービスは IDL を使用しません。HTTP は単純なプロトコルであるため、さまざまな言語 (Java、C++、C#、Python、Ruby、Lua、Erlang、 Haskell、Scheme、...)
IDL ベースのアプローチの欠点は、オブジェクト インターフェイスが変更されるたびにすべてのクライアントのスタブを再生成する必要があることです。これをやりすぎると、頭痛の種になる可能性があります。このアプローチによって主張される利点は、メッセージに対してコンパイラベースの静的チェックを行うことができることです。
代替手段については、最近では他にも多くの RPC スタイルの通信プロトコルがあります。SOAP は非常に有名な代替手段であり、多くの人が CORBA とは対照的に使用することを好みます。その他のオープン ソース RPC プロトコルには、Google の Protocol Buffers、Apache Thrift、Apache Avro、Message Pack などがあります。
これらのトピックについてより多くの洞察を得るには、RPC と分散システムについてよく勉強する必要があります。少しでも光を当てることができれば幸いです。