2つのAppDomainsを持つアプリケーションがあります。これらのAppDomainsの1つでは、いくつかの計算を行い、大量の出力データ(EntityFramework EntityObjectに格納されている)を生成するDLLを動的にロードします。AppDomains間で大量のデータを移動する
これまでは、適切なメソッドを呼び出すときに、このEntityObjectを他のAppDomainに「返す」ようになりました。もちろん、実際には、EntityObjectとそのすべてのデータをシリアライズしています。このオブジェクトが保持するデータの量が増加するにつれて、このプロセスはアプリケーションで大きなボトルネックになっています(時には分をシリアル化してデシリアライズする必要があります)。
私はMemoryMappedFileが解決策であるかもしれない別のStackOverflow投稿を見ましたが、この方法でオブジェクトを直列化および逆直列化するセマンティクスについてはわかりません。また、ObjectHandleでラップすると、データをメモリ内で共有できるようになったが、試してもうまくいきませんでした。
ありがとうございました。
このシリアライザを使用してAppDomains間でデータを移動するにはどうすればよいですか?例がありますか? – MgSam
私はこれが古いことを知っていますが、ここではこの問題について新しい視点があります。 WCFサービスを使用するか、またはMarshalByObjectRefを捨てます。 WCFの場合は、双方向通信で名前付きパイプサービス/クライアントのエンドポイント構成を使用することになります(同期オブジェクトを保持したいと思っています)...一方、MarshalByObjectRefは下位互換性のために保持されており、それが新しい.NETフレームワークから削除されるのではないかと思います。 WCF名前付きパイプの例http://goo.gl/vEo74e、MarshalByRef http://goo.gl/JdJViR –