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

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

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

参照

その他のリソース

シリアル化の概念
Remote Objects
XML シリアル化および SOAP シリアル化