我正在用C#ASP.Net編寫一個簡單的聊天Web服務,這是我新來的。服務器上的全局自定義類
服務器維護一個List<ConnectedUser>
,其中ConnectedUser
對象是一個持有ID,用戶名和等待消息列表的類。
我希望所有連接的客戶端都能夠訪問服務器上的列表。
我試過應用程序狀態,但我發現它不會保存自定義類,即使我讓它可序列化。我嘗試了一個持有全局變量的靜態類。在對服務的呼叫之間不會持續改變。
我應該怎麼做?謝謝。
我正在用C#ASP.Net編寫一個簡單的聊天Web服務,這是我新來的。服務器上的全局自定義類
服務器維護一個List<ConnectedUser>
,其中ConnectedUser
對象是一個持有ID,用戶名和等待消息列表的類。
我希望所有連接的客戶端都能夠訪問服務器上的列表。
我試過應用程序狀態,但我發現它不會保存自定義類,即使我讓它可序列化。我嘗試了一個持有全局變量的靜態類。在對服務的呼叫之間不會持續改變。
我應該怎麼做?謝謝。
對於在應用程序狀態下存儲自定義類,您不需要序列化/反序列化,通常它們可以被訪問。
下面是一些線程談論這個:
只有在沒有工作進程崩潰的情況下,才能在單臺計算機上使用單個工作進程。所以不適合生產使用等 – 2012-01-01 22:49:11
幾個選項(我們同時使用):
1)將值存儲在靜態類中,該靜態類在global.asax或第一個用戶請求中初始化。
2)將值存儲在HttpRunTime.Cache中,特別是如果需要定期刷新(可以在超時事件中刷新)。
您需要一個數據庫。 – SLaks 2012-01-01 17:19:56
這不會是非常耗時的運行時間,會導致SQL調用嗎?這是最有效的方式,還是有最好的數據庫管理系統? – Daniel 2012-01-01 17:25:59
並非所有數據庫都是磁盤備份的。並非所有數據庫都使用SQL。如果您需要快速性能,我建議您使用內存表。 – 2012-01-01 17:33:25