2016-03-08 78 views
2

我有一個我不確定的查詢。 我正在爲客戶端開發MVC Web應用程序,該應用程序管理存儲在SQL中的XML文檔中的內容。MVC ASP.Net上的會話鎖定 - 防止用戶同時訪問同一資源

當用戶訪問XML文檔時,它被複制到會話中,在該會話中用戶所做的任何更改都會在保存更改事件觸發時正確提交回數據庫之前完成。

客戶端請求存在鎖定,以防止其他用戶訪問/修改XML內容,如果其他用戶已經訪問它。首先,我甚至不知道如何實現這樣的功能,或者如何決定會話是否處於活動狀態,或者是否應用保存超時(但最終會讓用戶花費很長時間進行更改),但更重要的是,鑑於我們正在處理的極端期限,我個人認爲他們的理由不夠強大,無法保證。

他們的理由是,他們目前的解決方案「做到了」,新的也應該如此。 然而,他們目前的解決方案基於完全不同的平臺,我不認爲客戶理解他們要求的是什麼 - 因爲它可能最終成爲阻礙。

什麼是其他人的意見,並有人處理過類似?

回答

0

也許只是用一個位域鎖定記錄?

將一個布爾標誌添加到數據庫記錄,例如RecordInUse

當用戶查看xml內容時,設置標誌。當用戶結束訪問記錄時,請取消設置標誌。

每當有人想要查看xml,請在允許訪問之前檢查該標誌是否已設置。

你只需要弄清楚在人們關閉瀏覽器時如何處理場景。

+0

是的,這樣的旗幟是有道理的。但是,這不是單身模式的含義。 – Jacob

+0

@Jacob耶對不起,將刪除參考。 – user1666620

0

你能想到的一些事情對XML作系統更人性化

1.寫訪問 - 使用簡單的位字段來鎖定文檔

2.只讀訪問 - 如果文檔被鎖定,請通知用戶並允許他們以只讀模式查看文檔。

3.誰是編輯 - 一個單獨的表來保存誰在編輯信息(6更多信息)

4.聯繫當前編輯 - 發送電子郵件警報,要求當前編輯器中保存並退出。

5.管理員級別覆蓋 - 當前編輯器不可聯繫,重置鎖定布爾值。如有必要,還原他的更改(草稿)。

6.草稿保存和最終保存 - 在3.我們提到了一個單獨的表來保存誰在編輯信息。您可以使用相同的表格來保存草稿副本。所以編輯可以保存並繼續。只有最後的保存應該覆蓋主表中的原始xml。

以上所有情況都不難實現。舉個例子,谷歌文檔有一個非常複雜的基於Web的文檔編輯器。我認爲你不會想那麼遠,或者做任何複雜的事情。

相關問題