Share via


値渡しによるマーシャリング

オブジェクトは、オブジェクトが作成されたアプリケーション ドメイン内でのみ有効です。オブジェクトをパラメータとして渡したり、オブジェクトを結果として返したりする処理を試行すると、そのオブジェクトが MarshalByRefObject から派生しているか、または Serializable としてマークされている場合を除いて、その試行は失敗します。オブジェクトが Serializable としてマークされていると、そのオブジェクトは自動的にシリアル化され、あるアプリケーション ドメインから別のアプリケーション ドメインに転送された後、逆シリアル化されて転送先のアプリケーション ドメインにそのオブジェクトの正確なコピーが作成されます。この処理は一般に、値渡しによるマーシャリングと呼ばれます。

オブジェクトが MarshalByRefObject から派生している場合は、そのオブジェクト自体ではなく、オブジェクト参照が、あるアプリケーション ドメインから別のアプリケーション ドメインに渡されます。MarshalByRefObject から派生したオブジェクトを Serializable としてマークすることもできます。このオブジェクトをリモート処理で使用すると、サロゲート セレクタ (SurrogateSelector) によって構成済みの、シリアル化を実行するフォーマッタがシリアル化プロセスを制御し、MarshalByRefObject から派生したすべてのオブジェクトをプロキシで置換します。SurrogateSelector を使用しない場合、シリアル化アーキテクチャは「シリアル化プロセスの手順」で説明されている標準のシリアル化規則に従います。

参照

その他の技術情報

シリアル化の概念
リモート オブジェクト
XML シリアル化および SOAP シリアル化