MarshallByRefObjectから継承するクラスを正常に作成しました。
上記のクラスもインターフェースを実装し、メインのAppDomainからリモートで呼び出されます。DTOは、情報を伝達するためにも作成されました。
リモートクラスと呼び出し元ドメインの両方で、リモートでロードされたアセンブリがメインのAppDomainにロードされていないことをデバッガーから確認しました。繰り返しになりますが、リモートタイプ/アセンブリはメインAppDomainに流れ込んでおらず、デバッグウォッチを介してに検証されていAppDomain.CurrentDomain.GetAssemblies()
ます。
AppDomain.CurrentDomain.GetAssemblies().Count() //From inside the remote object
121
AppDomain.CurrentDomain.GetAssemblies().Count() //At the client, after RPC call.
13
その後、リモート/一時ドメインがオフロードされます。
ただし、リモートドメインで読み取られたdllを削除することはできません。何が欠けていますか?
また、次のバリエーションについても実験しました。
AppDomain.CurrentDomain.Load(File.ReadAllBytes(_.FullName))
と
Assembly.LoadFrom(_.FullName)
どちらを使用しても、私が知る限り、アセンブリはリモートでロードされ、オフロードされましたが、ファイルはまだロックされています。