簡體   English   中英

Asp.Net - 將處理卸載到外部應用程序

[英]Asp.Net - Offload processing to external application

我有一個asp.net網站,使用第三方exe處理請求。 目前我的工作流程是

  1. 用戶使用任何瀏覽器訪問網站,並填寫包含作業詳細信息的表單

  2. 網站調用WCF自托管Windows服務,該服務正在偵聽端口

  3. Windows服務啟動第三方exe來處理作業並將結果返回給網站

  4. 網站將返回的結果顯示給用戶

上面的網站是一個原型,現在需要轉變為生產就緒部署。 我意識到上述架構有許多可能會破壞的點。 例如,如果機器電源關閉或者Windows服務崩潰並且不再監聽端口,則所有當前請求都將停止處理。 為了使架構更加健壯,我正在考慮以下內容

  1. 用戶使用任何瀏覽器訪問網站,並填寫包含作業詳細信息的表單

  2. 網站將作業詳細信息寫入數據庫

  3. 為新作業每10秒輪詢一次數據庫的Windows服務將獲取作業並使用第三方應用程序執行該作業。 結果將寫回數據庫。

  4. 現在已經開始輪詢數據庫的網站,獲取結果並將其顯示給用戶。

第二種體系結構為我提供了更多的日志記錄功能,如果它們在隊列中,則可以再次啟動作業。 然而,它涉及大量的輪詢,可能無法擴展。 有誰能推薦更好的架構?

我在我的一個應用程序中實現了相同的架構,用戶正在處理多個請求。 所以我有 -

  1. 用戶轉到網站並選擇參數等。提交請求
  2. 請求存儲在數據庫表中,包含所有詳細信息和用戶名等
  3. 服務查看數據庫表並以FIFO方式獲取請求
  4. 處理完請求后,狀態將更新為“失敗”或“已完成”到針對該requestId的數據庫表,網站上的用戶可以看到
  5. 如果有,服務會接收下一個請求,否則停止。
  6. 服務每30分鍾一班

而不是輪詢我會選擇MSMQ或RabbitMQ

這樣,您可以將處理卸載到隊列的多個使用者(可能是Web服務器的不同服務器),並且並行處理更多請求。

暫無
暫無

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

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