2012-04-18 78 views
1

我在C#.net和mysql中創建一個網站(購物車)。在.net和sql server中,我們可以在sql server中管理會話。這是可能的相同方式使用MySQL,如果是的話,那麼如何?另一個問題 - 在數據庫中存儲會話是購物車的正確方法還是應該存儲在內存中? 在此先感謝會話管理c#.net和mysql

+0

2個問題在這裏真的;) - 你可以將你的購物車存儲在任何你喜歡的地方,但是你必須考慮數據的瞬時特性以及你想要的持久性。內存中的購物車只會持續一段時間,超出狀態將持續直到服務器重新啓動,SQL將持續......好吧,永遠(ish) - 對我來說唯一真正的選擇是使用內存和D B!緩存購物車直到它發生變化,然後將它裝入數據庫中。 – SpaceBison 2012-04-18 07:54:46

回答

1

基本上有3 「內置」 session storage methods在.NET Framework:

  • 是InProc模式,存儲在Web服務器上存儲會話狀態。 這是默認設置。

  • StateServer模式,它將會話狀態存儲在一個單獨的進程 中,稱爲ASP.NET狀態服務。這可確保在重新啓動Web應用程序時保留會話狀態 ,並使會話 狀態對Web場中的多個Web服務器可用。

  • SQLServer模式將會話狀態存儲在SQL Server數據庫中。此 可確保在重新啓動Web應用程序 時保留會話狀態,並使Web會話中的多個Web 服務器可以使用會話狀態。

正如你所看到的,唯一支持序列化到數據庫的是SQL Server。但是,還有第四種選擇 - 創建您自己的custom session storage provider。您可以通過創建繼承SessionStateStoreProviderBase類的類來實現自定義會話狀態存儲提供程序。 MSDN上的This article描述如何。

但是,您可能只想使用StateServer模式,因爲這可以緩解使用InProc的許多風險(即在內存變低,應用程序池被回收或重新啓動應用程序時,會話狀態很容易丟失)。請記住用[Serializable()]attribute來標記所有課程。如果您想在用戶離開網站後保留購物車信息,我只會使用數據庫。