我一直在使用Spring.NET和NHibernate一些年,我非常滿意。不過,我一直在玩多線程,Reactive Extensions和最終的Task Parallel Library,這是一個很棒的框架。不幸的是,由於NHiberntate的會話不是線程安全的,所以所有類型的多線程方法都失敗了。C#任務並行庫和NHibernate/Spring.NET
我在問你,我如何從並行編程中受益並仍在使用NHibernate。
例如:我有一個CustomerRegistrationService
類方法Register
執行多個任務:
ICustumer customer = this.CreateCustomerAndAdresses(params);
this.CreateMembership(customer);
this.CreateGeoLookups(customer.Address);
this.SendWelcomeMail(customer);
最後兩個方法將是理想的人選運行並行,CreateGeoLookups
調用一些Web服務,以確定客戶的地緣位置解決並創建一些新的實體,並更新客戶本身。 SendWelcomMail
做它說的。
由於CreateGeoLookups
確實使用了NHibernate(儘管通過版本庫對象使得NHibernate通過Interfaces/Dependency Inection非常隱藏),但它不能與Task.Factory.StarNew(...)或其他線程機制一起使用。
我的問題不是解決我所描述的這個問題,但我想聽取您關於NHibenrate,Spring.NET和並行方法的信息。
非常感謝您 最大
你真的應該編輯你的主要問題與這個問題。這些中的任何一個都可以作爲答案嗎? – paqogomez 2013-09-05 03:21:59