![](/img/trans.png)
[英]Are there any potential problems with having a single method to async webservice responses?
[英]NHibernate and potential caching problems
好的,所以我有一个n层模型。 (WPF,Asp.Net等)通过WCF进行后端服务。 这些服务使用NHibernate与数据库进行通信。 其中一些服务将在InstanceContextMode.Single模式下运行。
问题:
1-3:据我所知,ISession对象应该是重量轻,寿命短的对象,它们仅在需要它们的持续时间内存在。 我建议AGAINST在您的服务的整个生命周期中都使用相同的ISession对象。
我建议使用的是相同的ISeessionFactory实例,并根据需要从中创建新的ISession(您可以尝试使用类似于Session-Per-Request模式的方法)。
如果启用第二级缓存,则在这种情况下可以享受缓存的所有好处。
5是的,差不多。 还要记住,第二级缓存实例是每个ISessionFactory实例 。 这意味着,如果您使用多个ISessionFactory实例,则您的缓存会遇到很多问题。
对于1级缓存,您不需要定义6。
对于二级缓存,您需要在配置nHibernate时启用缓存(以我为例):
.Cache(c => c.UseQueryCache()
.ProviderClass(
isWeb ? typeof(NHibernate.Caches.SysCache2.SysCacheProvider).AssemblyQualifiedName //in web environment- use sysCache2
: typeof(NHibernate.Cache.HashtableCacheProvider).AssemblyQualifiedName //in dev environmet- use stupid cache
))
)
并为您要为其启用缓存的每个实体和每个集合指定:
mapping.Cache.ReadWrite().Region("myRegion");
并进行收集:
mapping.HasMany(x => x.Something)
.Cache.ReadWrite().Region("myRegion");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.