2009-03-07 2 views
3

私はRefnetとRemotingが内部でどのように動作するかを知りたいと思っています。また、他の言語(Javaなど)で書かれたアプリケーションとの通信にremnetを使用することもできます。それはどのように機能するのですか?リフレクションとリモート処理はどのように内部的に動作しますか?

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

+0

これを2つの質問に分割する必要があります。これらは巨大な話題であり、SOの投稿はおそらく両方で十分に答えることができないでしょう – JaredPar

答えて

3

Remotingは、特定のオブジェクト(MarshalByRefObject)への呼び出しを傍受し、代わりにRPC呼び出しを実行することで機能します。基本的に呼び出し元のオブジェクトは、元のAppDomain/machine/etcのリアルオブジェクトに対する軽量プロキシです。引数と結果は転送されます(もう一度、MarshalByRefObjectを考慮に入れます - それ以外の場合は値をシリアル化するためにBinaryFormatterを使用します)。

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

しかし、私はremotingを使ってjavaに話す方法を個人的には認識していません。これは可能かもしれませんが、使用されるフォーマットは(AFAIK)独自のものです。一般に、そのような呼び出しは、Webサービス(SOAPまたはPOX上)やJSONでシリアライズされたメッセージや「プロトコルバッファ」(オープンソースのワイヤフォーマットC#とjavaの両方のバリアントがあります)。

関連する問題