2013-11-27 15 views
0

我需要構建一個MVC站點,其中數據模型看起來不適合數據庫,並且當然不能在每個會話中重建。有沒有一種方法可以在一個網站的所有用戶/會話使用的MVC網站中有效地創建一個靜態類......每週數次?跨多個MVC Web會話的長期狀態

細節: 我有一個C#類,它從提供原始套接字源的控制器(想想RS232)中提取狀態。這個控制器的數據速率很慢,要建立適當的類,需要提取狀態,每個項目的字符串名稱等。這需要30秒。設備類中有二十多個對象,因此它不是一件簡單的事。這就是爲什麼我建議對SQL進行序列化不太合適。

使用桌面應用程序術語......應用程序加載時將初始化其靜態類。靜態類的構造函數將運行一次並獲取當前狀態。它還會註冊一個aw套接字處理程序來持續保持類模型的活動狀態。然後,隨着用戶請求網頁,網站可以使用這個共享數據模型。

在這裏更簡單,因爲我不是一個全職開發人員。例如:我寧願不構建完整的Web服務,然後必須通過JSON爲設備類中的二打左右對象封送所有數據。

+0

你能告訴我們任何代碼嗎? – IronMan84

+1

可能與應用程序結構緩存 – asawyer

+0

謝謝asawyer。我非常喜歡Azure和AppFabric,但它不適合這種本地提供。 – DanPl

回答

0

這似乎是一個非常糟糕的主意,但你可以使用由所有用戶共享,只要住在應用程序生命的HttpApplication對象。

除此之外,沒有什麼可以做的,以保持它比應用程序更長。當應用程序死亡(例如在20分鐘不活動,或網站重新啓動,...)所有內存被釋放,所以沒有地方可以存放它的其他然後一個長效機制(如DB)。

如果您發現將該模型映射到關係數據庫過於費力,則可能需要查看諸如MongoDB,Riak等NoSQL解決方案......您所做的基本上是將其序列化爲JSON並保存整個圖形。然後您可以通過反序列化來檢索它。

+0

謝謝Kenneth。這非常有幫助。我正在閱讀MongoDB。這似乎就像使用C#CLI APPP與控制器接口和維護一個最新的MongoDB將讓我用一個比較正常的(無狀態)網絡模式的視圖層。 – DanPl