内部的にリフレクションとリモーティングはどのように機能しますか?

StackOverflow https://stackoverflow.com/questions/622505

質問

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

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

役に立ちましたか?

解決

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

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top