MarshalByRefObjectの目的は何ですか?
MarshalByRefObjectの目的は何ですか?
回答:
リモーティング; つまり、オブジェクトをシリアル化して転送するのではなく、AppDomain間またはマシン間では、オブジェクトは一方の側にとどまり、プロキシがもう一方の側に作成されます。プロキシへのすべてのメソッド呼び出しがインターセプトされ、呼び出しがRPC wiki、msdnとして送信され、メソッドが他のマシンで実行されます(通常、引数と戻り値をシリアル化します)。
注:これにより、予期しない「チャット」インターフェースが発生する可能性があります。オブジェクト/プロキシ/ RPCアプローチは、明示的なサービス境界を持つアプローチよりも望ましくありません。マイクロソフトは現在、リモーティングではなくWCF wiki、msdnを推奨しています。
のもう1つの重要な用途MarshalByRefObjectは、リモートシンクチェーンを介してAOPを実装することです。
ContextBoundObject(それ自体がから派生するMarshalByRefObject)から派生するオブジェクトがある場合、同じAppDomain内の別のコンテキストでインスタンス化し、オブジェクト間の通信にRemotingプロキシシステムを自動的に経由させることができます-カスタムシンクをRemotingシンクにプラグインできます-鎖。
これにより、最終的にオブジェクトへのメソッド呼び出しを「装飾」し、ロギングやセキュリティなどの分野横断的なサービスを実装することができます。
基本的な用途は、2つのアプリドメイン間のオブジェクトへのアクセスをサポートすることであり、これらのアプリドメインは、リモート経由で同じコンピューター上または異なるコンピューター上に配置できます。