![](/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.