MarshalByRef

今の業務で、別AppDomainをたててそこでアセンブリをロードしたりしているんですが、このときにオブジェクトをMarshalByRefとして指定することの意味がやっとわかりました。今までも何となくは理解していたのですが、リモーティングの話だと思ってあまり注意していませんでした。

今回の開発で、別AppDomainを作ると、
・別ディレクトリをルートにすることができる
・別の構成ファイルを読ませることができる
・マーシャリングが必要で、大きなコストになったり、そもそも受け渡しできないかもしれない
・MarshalByValueのときはシリアライズして渡されるため、別オブジェクトとなる
というのがわかりました。

ツールとか作る際には便利かもしれない。
いいサンプルが思いついたら書いてみます。