ミ,,゚Д゚彡フサギコのフサフサDelphi談話室�G
■ このスレッドは過去ログ倉庫に格納されています
0890デフォルトの名無しさん
NGNG軽量なProcessみたいなもの。
1つの.exe内には複数のAppDomainを作ることができ、
同一.exe内であってもお互いは固く隔てられている。
例えば、Domain AにObject Aが、Domain BにObject Bがある場合、
お互いは(特別な操作なしに)参照を取ることができない。
また、Domain Aで致命的な例外が起きたとしても、
それでDomain Bに悪影響を与えることはない。
同一.exe内に複数のAppDomainがそれぞれ実行されるモデルとしては、ASP.NETが好例。
AppDomain間でオブジェクトをやり取りしたい場合には、
値渡しと参照渡しのアプローチがある。
値渡しの場合は、SerializableAttributeをクラスのメタデータに付加するか、
ISerializableインターフェイスを実装する。
参照渡しの場合は、MarshalByRefObjectを継承する。
AppDomain内のもう1つの隔離単位として、Contextがある。
1つのContext内には固有の規則を適用させることができる。
例えばスレッドの同期化・トランザクション管理など。
AppDomain内には複数のContextを作ることができ、
Contextに対するアクセスはproxy経由によってのみ許可される。
そのproxyの情報はContextBoundObjectを元に作られる。
言い換えれば、ContextBoundObjectはContextにアクセスするための
インターフェイスの役割を担っている。
.NET使いならこれくらいのことは常識だがな。(嘲笑禿藁
■ このスレッドは過去ログ倉庫に格納されています