ContextBoundObject とコンテキスト

困ったときは SDK ドキュメントを全文検索、というわけではないが全文検索
クラスリファレンスと比べると、かなりましな説明を発見することができた。

コンテキストは、その内部にあるオブジェクトに対して実行時に高度な環境を提供する、アプリケーション ドメインの下位概念と考えることができます。
たとえば、コンテキストは、オブジェクトが同時に複数のスレッドからアクセスされないことを保証できます。
すべてのアプリケーション ドメインが、既定のコンテキストを持っています。
ほとんどのマネージ コードは、同じアプリケーション ドメイン内でそのドメインの既定のコンテキストを使用してオブジェクトを生成したりメンバを直接呼び出したりするため、コンテキストに関連する問題が発生することはありません。
ContextBoundObject から継承されたすべての型は、同じドメイン内または他のドメイン内にある他のコンテキストに対して、プロキシとして公開されます。



この文章を発見する前からわかっていたことだが、コンテキスト関係の概念を学ぶ上で、RealProxy や TransparentProxy に関する知識は基本的に必要ない。
実装としてそれらを利用していることと、リモート処理の基礎知識として要求されてしまう部分はいくつかあるが、たんなる用語であると思っていても問題ない程度だろう。
他にも System.Runtime.Remoting.Contexts 名前空間の序文なんかも読んでおくと理解の助けになるかもしれない。


ContextBoundObject の言うコンテキストとは、オブジェクト間のメッセージ交換において、オブジェクトをグループ分けするようなものだということが、大体予測付くのではないだろうか。