内部的にリフレクションとリモーティングはどのように機能しますか?
-
05-07-2019 - |
質問
.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の両方のバリアントを持つオープンソースのワイヤ形式)。
所属していません StackOverflow