2011-09-23 174 views
1

我目前正在使用一個web應用程序,它有一個使用.NET類實現的定製工作流。在該工作流程中,我們更新了一些數據庫值,並根據特定業務邏輯向用戶發送電子郵件。多線程與單線程與Asp.net 3.5

系統有400個併發用戶和10000個用戶羣,用戶也可以創建最多52個採購申請行的採購申請。此應用程序中的平均購買請求數據加載量爲10分鐘內的10-15個購買請求。用戶使用ASP.net 3.5實現的使用Web應用程序執行一些操作,並且基於用戶輸入將需要執行工作流程。

我的問題是因爲我們有我們正試圖在一個單獨的線程除了UI線程中執行工作流程中的工作負載,

。採取一個好的決定還是工作流應該在同一個UI線程上運行?

回答

2

上次我不得不在類似的場景中工作時,我們實際上已經將工作流作爲完全獨立的應用程序從UI中分離出來。我們這樣做的原因是因爲如果在UI上失敗了,它不會影響我們的工作流程,反之亦然。這個單獨的應用程序也是多線程的。在完成一些工作之後,我退出了該項目,但是我知道我的同事在這方面做了一些更多的工作,甚至還添加了幾個同時工作的控制檯應用程序。你永遠不會太小心。

2

在處理Web應用程序時,您必須記住的線程是「這個任務需要很長時間才能完成」。如果不是,那麼沒有理由剝離一個線程。線程不會神奇地讓你的應用程序工作得更快,特別是如果你只是不得不等待結果。

如果工作確實需要大量時間,則轉到後臺線程將允許IIS工作進程被回收並接受新的傳入請求。

旋轉更多的線程實際上可能會給系統帶來更多的負載,因爲現在你正在啓動多達2倍的線程,每個線程都有自己的堆棧和其他資源。它只有在你獲得實際收益時纔有意義。