在我們的網站上,我們的版主可能會審閱用戶發佈的內容。這也適用於視頻,但視頻需要先轉換。這可以在夜間自動發生(通過Windows服務),也可以在主持人手動啓動時立即發生。在服務器上運行多個操作
現在,這最後一部分是我的問題來自何處。起初我以爲我只是寫一個單獨的服務來處理轉換。無論何時主持人開始轉換,數據庫中的記錄都會更新以將其標記爲單次轉換。然後服務將處理剩下的事情。當它只是一個文件時,這一切都很好。
但想象一下這種情況,主持人#1啓動服務。該服務運行並啓動文件轉換。在該過程中,主持人#2開始轉換不同的文件。它會嘗試啓動服務,但因爲它已經啓動而失敗。該文件將被標記爲單獨轉換,但不會轉換,因爲它無法啓動服務。
現在我正在尋找新的想法來解決這個問題。
- 是否可以運行一個服務的多個實例?
- 我可以使服務更具動態性嗎?例如,如果版主#2開始轉換,它將啓動服務,但是如果服務已經啓動,是否可以將文件添加到列表中? (在服務開始時,我創建一個列表,從數據庫中讀取每個文件,尋找單個轉換標誌)
- 我知道我一直在想服務,是否有另一種方式來處理服務器上的操作可以處理版主的多個請求?
我意識到它可能聽起來有點模糊,所以如果你有任何問題請問。也許我應該提供一些額外的信息,目前我是一名在實習中工作的學生,我的發起人並不真的想要一個文件幾乎立即轉換。他們希望在晚上進行轉換,除非主持人手動爲單個文件啓動轉換。此外,網站和文件系統位於同一臺服務器上(數據庫位於單獨的服務器上)。基本上,這些工作將在網站運行的同一臺服務器上完成(它目前不能分開)。他們擔心服務器的性能。
如有任何意見,將不勝感激! 各種問候, 弗洛里斯
我會感到驚訝,如果asp.net不具備某種支持工作隊列。你創建一個固定數量的工作線程(可能是1個),完成一個工作單元,然後繼續檢查新工作,直到出現問題。 – bwawok 2011-05-25 17:16:13
我不是100%確定您的特定要求,但您是否考慮過多線程和線程池? – 2011-05-25 17:22:19
如果服務始終在運行,並且只查看由請求時間戳(簡單隊列)排序的表,該怎麼辦?因此,它會定期查詢這個隊列表並按順序處理這些項目 - 它甚至可以將這些工作發送給多個線程。我錯過了什麼嗎? – 2011-05-25 17:22:40