このトピックは古いですが、私は2セントを提供しようとします。
CORBAは、分散オブジェクトコンピューティングミドルウェアの開発のための標準ミドルウェアアーキテクチャです。したがって、オブジェクトはシステムのプリミティブです。上位レベルのビューでは、クライアントは別のコンピュータ、サーバー上にあるオブジェクトのメソッドを呼び出し、そのオブジェクトがクライアント自体にあるかのように結果を取得します。つまり、RPCを実行する方法です。
低レベルの観点では、クライアント上でメソッドが呼び出されると、サーバー上のオブジェクトを識別するために使用される他の多くのフィールドとともに、すべてのパラメータがメッセージに格納されます。このメッセージはサーバーに送信され、サーバーはメッセージを読み取り、指定されたオブジェクトのメソッドを呼び出します。メソッドの結果は、クライアントに返されるメッセージに置かれます。
CORBAのGIOPプロトコル(メッセージ形式)を使用して実行できることは、HTTPプロトコルを使用したRESTful手法を使用して行うこともできます。同様に、HTTP POSTメッセージ(または実行する予定に応じてGETメッセージ)にすべてのメソッド引数を置き、そのメッセージをHTTPサーバーに送信し、HTTPサーバーはそのメッセージを評価するサービスに配信するクライアントを作成できますリクエストを受け取り、HTTPレスポンスにカプセル化されたレスポンスを返し、クライアントに返送します。
分散オブジェクトとRESTfulサービスには概念上の違いがありますが、どちらも同じことをしています。つまり、クライアントとサーバーの通信です。両者の違いは、コミュニケーションがどのように行われているかです。 CORBAはIDL(Interface Description Languageの略)で動作します。このIDLは、利用可能なすべてのメソッド、引数として渡されるデータのタイプ、応答として返されるデータのタイプなどを含むオブジェクトインタフェースを記述します。このIDLを使用して、コードと一緒にコンパイルできるスタブを生成します。これらのスタブは、すべての厄介なメッセージのシリアル化と通信コードを処理します。
ただし、RESTfulサービスはIDLを使用しません。 HTTPはシンプルなプロトコルなので、メッセージパラメータをカプセル化してRESTfulなサービスを呼び出すために、さまざまな言語(Java、C++、C#、Python、Ruby、Lua、Erlang、
IDLベースのアプローチの欠点は、オブジェクトインターフェイスが変更されるたびにすべてのクライアントのスタブを再生成する必要があることです。これを行うと頭痛の原因になることもあります多く。このアプローチの利点は、メッセージに対してコンパイラベースの静的検査を行うことができることです。
これらの代替案については、最近多くのRPCスタイルの通信プロトコルがあります。 SOAPは非常に有名な選択肢であり、CORBAとは対照的にSOAPを使用する方が好きです。他のオープンソースのRPCプロトコルには、Googleのプロトコルバッファ、Apache Thrift、Apache Avro、Message Packがあります。
さて、これらのトピックについてより深く理解するために、RPCと分散システムについて多くのことを学ぶべきです。私はいくつかの光を当てることができたと思う。
CORBAと似ていますがシンプルなものがたくさんありますが、CORBAサーバと通信する必要がある場合は、サポートするプロトコルを使用する必要があります。あるいは、サーバ側でも柔軟に対応できますか? – Thilo
はい、私はクライアントとサーバー側を実装しています。サーバーはC++(Linux環境とqtCreator IDE)で書かれ、クライアントはまだ書かれていません。 – Kam
多くの場合、人々はIDLからC++へのバインディングを学ぶのに苦労しています。より簡単にクライアントを実装したい場合は、IDLからC++ 11へのマッピングをチェックしてください。これははるかに簡単です。このマッピングの詳細については、例えば、http://www.orbzone.orgを参照してください。 –