3

.net のリフレクションとリモーティングが内部でどのように機能するか知りたいです。また、.net はリモーティングを使用して、他の言語 (Java など) で記述されたアプリケーションと通信できるとも聞いています。それはどのように機能しますか?

これはおそらく大きな質問なので、各質問に簡単に触れた回答が妥当です。

4

1 に答える 1

3

リモート処理は、特定のオブジェクト ( ) への呼び出しをインターセプトしMarshalByRefObject、代わりに RPC 呼び出しを実行することによって機能します。基本的に、呼び出し元のオブジェクトは、元の AppDomain/machine/etcにある実際のオブジェクトへの軽量プロキシにすぎません。引数と結果が転送されます (ここでも、MarshalByRefObject考慮に入れます。それ以外の場合は、を使用BinaryFormatterして値をシリアル化します)。

リフレクションはコア ランタイムの奥深くに組み込まれており、基になる型定義へのアクセスを提供します。これはおそらく、.NET 言語の下にある IL が元のコードに関して非常に表現力豊かであるためです。

ただし、私は個人的には、リモーティングを介して Java に話しかける方法を認識していません。可能かもしれませんが、使用される形式は(AFAIK)独自のものです。一般に、このような呼び出しは、Web サービス (SOAP または POX) などの SOA 呼び出し、または JSON または「プロトコル バッファー」 (オープンソース ワイヤ形式) でシリアル化されたメッセージなどの他のオープン スタンダードの形式をとる可能性が高くなります。 C# と Java の両方のバリアントを使用)。

于 2009-03-07T21:37:07.177 に答える