【发布时间】:2013-04-11 14:05:36
【问题描述】:
(我对这个问题有点绝望,因为我没有找到任何指向我想要的文章)。
无论如何:
有没有办法在多个AppDomains 之间共享一个ISessionFactory (SessionFactoryImpl)?
-- 或者--
是否可以从这个ISessionFactory 生成ISessions 并将新创建的ISession 序列化为不同的Appdomain?
-- 或者--
在基于 Winforms 的应用程序中,关于启动时间和内存消耗,您在 ISessionFactory / ISession 管理方面的成功案例是什么?
长篇大论 (适合喜欢细节的人):
- 我的应用程序是基于 ERP Winforms 的,可以生成多个“子应用程序”(表单);
- 每个子应用都有自己的程序集,可以独立更新;
- 生成一个新的 AppDomain 可以很好地隔离每个“子应用程序”的
static成员。当应用程序完成时,子程序 AppDomain 资源也可以被卸载。我们这样做了一段时间,但由于 SessionFactory 成本很高(在时间上并且主要在内存中),这个模型开始变得站不住脚(现在,我们使用线程和ThreadStatic成员来保存每个人的特定信息子应用); - 我们非常支持延迟加载,因此我们也不能放弃此功能。
我已经尝试过的:
-
共享
ISessionFactory的MarshalByRef类:我无法让它工作(不记得为什么),但是序列化ISessionFactory无论如何都会导致内存重复(大量)。我说的对吗? -
MarshalByRef产生ISession并将其序列化到另一个AppDomain的类:由于 ISession 在其父ISessionFactory上拥有它的属性,现在处于其他边界,它给我带来了一些很好的预期,告诉我一些属性未定义。
【问题讨论】:
标签: winforms nhibernate appdomain sessionfactory