2012-07-13 24 views
1

這是我的問題,我們有一個大型病人對象,在整個管理員的多個屏幕上使用。每個屏幕都包含有關同一患者的不同信息。它不能全部在一個屏幕上。我應該避免與asp.net中的複雜對象進行會話嗎?

我想堅持病人的唯一時間是當用戶點擊保存。我需要在某個地方有記憶中的病人。用戶可能在管理員中,在各種屏幕上更改患者信息,運行驗證並決定不保存該患者。這是典型的用途。

可以將該患者存儲在會話中嗎?或者,有沒有更好的方法來做到這一點?最多這個管理員將有20個用戶訪問。

回答

0

意見可能會有所不同。會話是棘手的,特別是如果你使用內存會話以外的東西。分佈式會話將打破一個不可序列化的對象。如果此對象是一個簡單的POCO或您所控制的對象,請儘量使其與序列化一起玩。如果它是你設置的。對於沒有太多負載的管理工具,我會說你會沒事的。

嘿,我發現這一點 - 一竅不通的網站,但了我的觀點: https://www.fortify.com/vulncat/en/vulncat/dotnet/asp_dotnet_bad_practices_non_serializable_object_stored_in_session.html

0

我曾與用戶的類似的量有類似的情況。我做到了,它效果很好。

我的情況是關於調度事件。

有人會創建一個事件,並通過多個網頁將修改和配置此事件。當他們全部完成時,它會將所有細節保存到SQL中。最後,我很驚訝它的工作效果。

0

會話應該沒問題。你有什麼似乎是輕的用戶負載......但你可能想要檢查對象佔用多少內存,乘以最大數量的用戶,並看看你在哪裏。

如果您想完全避免會話,您可以使用System.Web.Caching來存儲對象,並使用用戶標識符和一些常量字符串鍵入存儲的對象。

無論哪種情況,您都需要知道有多少個Web服務器正在運行該應用程序。如果它只是一個Web服務器,不用擔心。如果你有多個Web服務器,你需要確保它們是「粘性」的 - 那麼用戶可以保證所有的請求都被同一個服務器處理。這是如何完成的,完全取決於你的負載平衡風格......通常「IT人」會爲你處理這個問題。

相關問題