2012-04-26 5 views
0

私はCORBA機能の1つ、つまりCORBAクライアントがCORBAサーバ上で機能を実行し、その関数に引数を渡してその関数の戻り値を受け取るようにしたいと考えています。 しかし、私は別のプロトコル、より単純なものを使用したいと思います...そのようなものが存在しますか?より簡単なCORBAプロトコルですか?それは存在するのだろうか?

このドキュメントとチュートリアルでは、CORBAの実装と管理が非常に困難であると感じました。

他のプロトコルには上記の機能がありますか?

EDIT:現在の回答に基づいて私の質問を明確にするために、
私はまだサーバーもクライアントも実装していません。私のクライアントは、サーバー上で関数を実行し、引数を渡して戻り値を受け取る必要があります。私は他のプロトコルが何をすることができるのだろうかと思っています。よりシンプルな方法で?おかげさまで

+2

CORBAと似ていますがシンプルなものがたくさんありますが、CORBAサーバと通信する必要がある場合は、サポートするプロトコルを使用する必要があります。あるいは、サーバ側でも柔軟に対応できますか? – Thilo

+0

はい、私はクライアントとサーバー側を実装しています。サーバーはC++(Linux環境とqtCreator IDE)で書かれ、クライアントはまだ書かれていません。 – Kam

+0

多くの場合、人々はIDLからC++へのバインディングを学ぶのに苦労しています。より簡単にクライアントを実装したい場合は、IDLからC++ 11へのマッピングをチェックしてください。これははるかに簡単です。このマッピングの詳細については、例えば、http://www.orbzone.orgを参照してください。 –

答えて

5

CORBAクライアントはCORBAサービスと通信していますが、他のどのような話をすると思いますか?

どのようなCORBA機能を使用しますか?

あなたは既にこのクライアントとサーバーを持っていますか、それとも実装方法について考えていますか?

IDLがあれば実装が難しい理由はわかりません。あなたは残りの部分を助けるツールを使用します。そして、プロトコルにかかわらず、管理は難しくなります。想像していることはもっと簡単でしょうか?

私はHTTPベースのプロトコルのためにCORBAを捨てることを考えます。 CORBAは事実上消滅しました。単純でオープンな勝利です。 HTTPベースのサービスは、Java、C#などの任意の言語で実装でき、HTTP接続が可能なクライアントと通信できます。まだ設計段階にあるなら、それは価値があります。

+0

うまく言われました。 HTTP +よく理解されたペイロード形式(JSON、XML、何でも)+スケーラブルなサーバー実装==成功。 –

+0

こんにちは、私はまだ何も実装されていない、私はサーバー側とクライアント側を実装する必要があります。私が議論したCORBAの機能は、クライアントがサーバー上でfuntionsを実行し、引数を渡して戻り値を受け取る必要があることです。私は他のプロトコルが何をすることができるのだろうかと思っています。よりシンプルな方法で? – Kam

+0

私が言ったように:HTTPは行く方法です。 Googleの "ウェブサービス" - あなたは戻ってくるものをすべて吸収することはできません。私はあなたの「より単純な」基準が何であるか分かりません。インスタントスープが好きなように私に聞こえる。世界には魔法はありません。あなたは何かをする必要があり、プロトコルを変更してもCORBAのすべての問題は解決されません。 – duffymo

-1

このトピックは古いですが、私は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と分散システムについて多くのことを学ぶべきです。私はいくつかの光を当てることができたと思う。

関連する問題