簡體   English   中英

ASP.NET 設計問題 - Web 服務

[英]ASP.NET Design question - Web Services

創建一個 web 接口,以便我們的幫助台可以創建用戶並設置一些在我們的環境中使用的應用程序,web 接口是用 ASP.NET 編寫的,但我正在尋求有關實現后端的最佳方法的建議。

我計划使用 web 服務來創建帳戶。 我主要關心的是安全性和關注點分離,所以我認為應用程序域是不夠的。

這個想法是通過 web 服務請求獲取信息,並在特權帳戶下生成一個線程來執行實際工作。 由於我們有其他系統,我們最終可能會使用多個 web 服務。

任何人都可以看到這個問題或有更好的建議嗎?

您提出了一個合理的解決方案,但我可以想到一個替代方案。 在 ASP.NET 應用程序中處理線程可能會很痛苦。 不是不可能,而是痛苦。 您是在生成一個線程以便您的任務可以在單獨的身份下運行,還是因為該任務可以長時間運行,或者兩者兼而有之? 要考慮的另一件事是如何驗證用戶身份。 您將需要知道如何使用 ASP.NET 模擬另一個用戶帳戶。

根據負載和其他因素,最好將隊列引入您的應用程序(在數據庫中,或使用 MSMQ、Rhino 隊列或類似的)。 當一個請求進來驗證它。 如果沒問題,則將其轉儲到隊列中並向客戶端返回相關 ID。 客戶端可以使用此 ID 檢查任務的狀態。

您的隊列可以存儲在數據庫中,或者您可以使用特定的隊列 API/系統。 創建作為計划作業運行的單獨應用程序或 Windows 服務。 此應用程序將在與調用您的 web 服務的客戶端不同的 ID 下運行,並執行您將在另一個線程上執行的工作。 當排隊的工作完成時,數據庫會更新狀態。

通過這樣做,您可以避免在 ASP.NET 應用程序中包含任何特殊代碼,並且在您的關注點之間有一個清晰獨特的接口。 如果任務失敗,比如您正在設置的第 3 方應用程序離線,那么您有機會重試該操作。 我發現這種方法也更容易監控。 如果應用程序處於脫機狀態,它還可以讓您繼續接受傳入請求而沒有太大困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM