2011-11-12 102 views
1

我知道我可以做一個Process.Start來執行一個Web應用程序的控制檯應用程序,但我想如何正確地設計這個項目的想法。從asp.net執行一個控制檯應用程序

經過身份驗證的用戶可以提交需要執行控制檯應用程序以執行某些後端工作(可能需要或可能不需要很長時間)的請求,並且需要將控制檯應用程序的結果顯示給用戶。

Process.Start是否在與asp.net進程相同的線程中執行控制檯應用程序?如果是這樣,這是否「鎖定」了用戶的瀏覽器?我應該這樣做異步嗎?如果是這樣,建議如何?我如何從控制檯應用程序獲取結果?

此外,這種方法可以爲幾百個用戶提交請求進行擴展嗎?

還有其他答案?

+0

考慮使用WCF或Web服務而不是控制檯應用程序 –

+0

@YuriyRozhovetskiy不幸的是,這個控制檯應用程序已經創建並且無法轉換爲Web服務 – Nick

回答

1

Process.Start是一個非阻塞呼叫。您可以使用Process對象並處理其事件並讀取或寫入其流。

至於如果它是可擴展的,你可能需要很多功能強大的服務器。這取決於實際的過程。

1

常見的解決方案是有一個存儲後臺操作隊列的數據庫表。所以,當用戶提交請求時,新的記錄被添加到隊列表中。控制檯應用程序定期運行(例如,使用Cron調度),檢查數據庫中的隊列表,在後臺執行任務並將結果寫入數據庫。

這樣的方法是非常可擴展和廣泛使用的。

相關問題