我有一個基於客戶端服務器的Windows窗體應用程序,只需要一個管理員屏幕。管理員功能需要以任何時候只有一個管理員可以訪問該屏幕的方式實現。 Windows窗體客戶端應用程序使用.NET Remoting與服務器對話。而服務器端分佈在多臺機器上。如何在分佈式.Net應用程序中一次只允許一個用戶訪問資源(屏幕)?
1
A
回答
3
這可以通過使用數據庫表格來完成。通常,數據庫已具有容錯能力,並且是用於共享鎖方案的安全資源。只需要一個鎖表,其中包含一些關於鎖定資源的信息,誰擁有它,何時等。
您還可以使用市場上各種「狀態服務器」之一來存儲鎖定狀態。不過,這引入了一個失敗點,除非你投資於一種新的分佈式狀態技術。
但是,你真的爲自己的進一步問題設置自己。你需要一個屏幕來允許強制解鎖,查看誰擁有鎖,等等。你最好看看爲什麼這個鎖真的需要。這是技術還是業務需求?您可以更輕鬆,更乾淨地實施可改善用戶體驗的悲觀數據更新方案。
0
您需要在服務器上維護一個靜態成員,指示該窗口當前是否正在使用。在設置值時,通過使用鎖()函數確保它是線程安全的。然後您可以在顯示管理員屏幕之前檢查該值。
就服務器端而言,您提到它存在於多臺PC上。這是一種負載均衡的拓撲圖,它作爲一個虛擬服務器運行嗎?如果是這樣,您可能需要將值保存在數據庫中。以ASP.Net持續存在的相同方式來思考它會話狀態。我可以在服務器上存在,但是如果有服務器羣,它可以移動到SQL Server以供所有服務器使用。
+0
由於服務器拓撲結構,第一段不相關。第二段是相關的。 – TheSoftwareJedi 2008-12-09 20:36:30
相關問題
- 1. 只允許一部分用戶訪問谷歌應用程序項目
- 2. Android只允許在屏幕上一次使用
- 3. 只允許ipad應用程序用戶訪問某些文件
- 4. 允許用戶每天只訪問一次UIButton(考慮時區)
- 5. 只允許一個線程訪問C#中的資源的簡單方法?
- 6. 只允許用戶訪問drupal 6中的一個模塊
- 7. 如何只允許Web應用程序訪問Web服務?
- 8. 只允許用戶只讀訪問woocommerce
- 9. drupal只允許訪問一個內容給認證用戶
- 10. 只允許管理員用戶訪問一個resque web界面
- 11. 一個用戶的訪問控制 - 允許 - 來源錯誤
- 12. 只允許一次
- 13. PHP - 只允許從一個域訪問
- 14. 只允許用戶一次選擇一個checkButton?
- 15. 使用GIT第一次:允許其他用戶訪問項目
- 16. 從另一個應用程序訪問資源?
- 17. 如何當用戶允許我的應用程序只發布到用戶牆1次?
- 18. 允許用戶在一個形式
- 19. 訪問WPF用戶控件庫中的應用程序資源
- 20. 許多應用程序商店應用程序,一個開始屏幕
- 21. 如何讓一個MySQL用戶只訪問一個模式
- 22. 一次只允許一個會話
- 23. 一次只允許有一個UITableViewCellAccessoryCheckmark
- 24. 使用.htaccess,防止用戶訪問資源目錄,但允許源代碼訪問資源
- 25. 如何在分佈式應用程序中使用.Net WorkFlow 4.0
- 26. Twitter OAuth API - 允許用戶從應用程序撤銷應用程序訪問
- 27. 只允許通過應用程序訪問PHP文件
- 28. 訪問應用程序資源
- 29. 只允許某個用戶訪問Kentico中的某個頁面
- 30. 只允許一個應用程序實例
如果您的堆棧中有SqlServer,您可以通過[此NuGet包](https://github.com/madelson/DistributedLock)利用其內置的分佈式鎖定功能。 – ChaseMedallion 2016-03-15 11:36:50