我有一個在.net(VB .Net)中調用Excel和Word的程序。完成所有任務需要花費大量的時間(它讀取許多日誌,將數據導出爲excel,創建圖形,然後將圖形導入單詞模板)。.net程序從ASP執行頁面
我的第一個解決方案是將該程序作爲一個.dll包含在ASP網站中,但現在我已被解僱。該程序的CPU使用率很高,可能需要幾小時才能完成所有任務。網頁必須運行CPU使用率低和/或快速處理的進程。
現在我有2種選擇:
A)從ASP執行該程序:
set WshShell = server.CreateObject("WScript.Shell")
wshShell.Run program
B)在一個窗口服務轉換程序,並執行該程序(即讀出日誌,將數據導出爲excel,創建圖形...)通過MSMQ發送消息。
從來就兩個問題:
- 第一:這些 「好」 的解決方案?有沒有其他「好」的解決方案?
- Second:我不想在程序中使用圖形界面。如果word和excel在後臺也更好。任何想法來完成這個? 我想唯一的解決方案是選項B),該程序作爲一個Windows服務。 Excel,Word ...將在另一個「會話」中,並且它不會顯示任何內容(我已閱讀關於此問題的antoher stackoverflow和獲得excel和word work的問題和解決方案)
選項C:.NET程序是否執行其任務,以低優先級運行而不刻錄CPU,並將其進度寫入數據庫或共享文本文件?這樣,傳統的ASP可以從數據庫或共享文件讀取並顯示進度。 –
是的,事實上,我曾經想過.NET程序作爲Windows服務運行,並且每秒鐘讀取一個SQL服務器中的作業表。當一個任務在網頁(asp)中被提交時,被髮送到作業表。下次windows服務讀取這張表時,它會將作業狀態改爲「正在處理」,並且它將完成所有任務。完成後,它將刪除作業。關於進度,這是一個好主意,儘管你必須在代碼的某些地方知道「完成%」。但我想我可以估計它。 – Alberto