2009-11-16 98 views
1

我有擁有多個前端的核心代碼庫。一個前端是WCF服務,另一個是一個控制檯應用程序,它只是啓動一些執行財務計算和其他業務邏輯的長時間運行的命令。我想弄清楚如何在控制檯應用程序中管理我的ISession。我'可以'每個「命令」只有一個會話,但是其中一些命令是長時間運行的過程,我擔心會話已經打開了很長時間並且/或者它變得太臃腫了。這種類型的場景的任何指針?控制檯應用程序中的NHibernate會話管理

在Web應用程序管理NH會議是如此容易得多...;)

回答

1

你既可以有周期性的Isession沖洗(比如每5-30秒,取決於插入/更新量/刪除正在執行)或時間很關鍵。我最近在Spring.Net框架中使用了AOP功能,在某個過程中執行某些方法後執行,這個過程大概需要30分鐘才能完成。

+0

所以你建議一個ISession和必要時沖洗?我正在玩弄。如果在一個過程中遇到異常,會發生什麼情況?我可以處理會議,但之後我需要創建一個新的會議,因爲我必須繼續進一步的操作。 – Bob 2009-11-16 15:10:00

+0

只要您的控制檯應用程序。不能在多線程/進程上運行,一個ISession應該可以正常工作。如果在你的應用程序中拋出一個異常,你將不得不面對可能會丟失一些數據的可能性 - 但是你也可能試圖在錯誤處理代碼中刷新ISession。 在調用Flush()之後,不要重新創建ISession,只需調用Clear()方法。 Clear()會從ISession中移除關於對象的所有「元」信息,這會產生大量/冗長的操作,並且會降低性能。 – WiseGuyEh 2009-11-17 12:49:42

相關問題