私はRefnetとRemotingが内部でどのように動作するかを知りたいと思っています。また、他の言語(Javaなど)で書かれたアプリケーションとの通信にremnetを使用することもできます。それはどのように機能するのですか?リフレクションとリモート処理はどのように内部的に動作しますか?
これはおそらく大きな疑問であるため、各質問に簡単に触れる回答は妥当です。
私はRefnetとRemotingが内部でどのように動作するかを知りたいと思っています。また、他の言語(Javaなど)で書かれたアプリケーションとの通信にremnetを使用することもできます。それはどのように機能するのですか?リフレクションとリモート処理はどのように内部的に動作しますか?
これはおそらく大きな疑問であるため、各質問に簡単に触れる回答は妥当です。
Remotingは、特定のオブジェクト(MarshalByRefObject
)への呼び出しを傍受し、代わりにRPC呼び出しを実行することで機能します。基本的に呼び出し元のオブジェクトは、元のAppDomain/machine/etcのリアルオブジェクトに対する軽量プロキシです。引数と結果は転送されます(もう一度、MarshalByRefObject
を考慮に入れます - それ以外の場合は値をシリアル化するためにBinaryFormatter
を使用します)。
リフレクションは、コアランタイムの深い部分に組み込まれ、基になる型定義へのアクセスを提供します。これはおそらく、部分的には、.NET言語の下のILが元のコードに関してかなり表現力があるためです。
しかし、私はremotingを使ってjavaに話す方法を個人的には認識していません。これは可能かもしれませんが、使用されるフォーマットは(AFAIK)独自のものです。一般に、そのような呼び出しは、Webサービス(SOAPまたはPOX上)やJSONでシリアライズされたメッセージや「プロトコルバッファ」(オープンソースのワイヤフォーマットC#とjavaの両方のバリアントがあります)。
これを2つの質問に分割する必要があります。これらは巨大な話題であり、SOの投稿はおそらく両方で十分に答えることができないでしょう – JaredPar