2017-03-26 42 views
-1

我必須實現一個應用程序來計算任務的時間。例如,用戶可以啓動和停止一個確定的任務,我必須知道他花費的時間。我可以存儲和計算開始和結束時間,但是我想知道是否有可能在C#中實現一個REST API,它有三種方法,以便我的應用程序可以使用Web服務「調用它」。以C#實現定時器Rest API的最佳方式

  • startTimer所():當用戶在一些應用按下啓動按鈕,這個API方法將被「稱爲」並且定時器開始計數。 4小時後,如果用戶沒有關閉任務(「StopTime()」方法不是「調用」),我想做「某事」。

  • CURRENTTIME():返回atual花費時間

  • 停止時間():當用戶按下停止按鈕時,此API方法將被「稱爲」和定時器停止,返回計時器值

我做了一些研究,發現了一些關於System.Timers.Timer和System.Threading.Timer的信息。我想知道如果使用其中一種方法(對於這種情況最好是什麼?)可能是一種好方法,或者最好的方法是什麼?

+1

這個任務對於REST來說並不是很好,REST是無狀態的,它意味着沒有關於以前請求的知識,當然你可以創建一個服務,靜態類或者任何你想要的東西,但它不是這樣一個理想的傳輸方式任務。另外,考慮可伸縮性,如果您的REST API有一天需要在集羣中進行平衡,除非您創建複雜的基礎結構(假設在服務器A中調用「開始」並在服務器B上調用「停止」),否則這種方式將無法工作。對於像這樣的任務,更好地使用類似WebSockets的東西,因爲它將在消費者使用API​​時保持連接。 – Gusman

回答

1

如果你想把你的Web服務器上的計時器,你可以做到以下幾點:

startTimer所法 - 根據ID找到計時器實體,計算出像花的時間 - 在[開始時間]字段 CURRENTTIME方法數據庫中創建計時器實體(CURRENTTIME - 開始時間) StopTimer - 找到ID計時器,將其標記爲已停止,retun定時器的值

Additionaly你需要按期運行後臺工作(即每5分鐘),然後檢查是否超時定時器(4小時在你的情況)。這些工作人員應該「做些事情」,比如發送電子郵件給用戶

如果您需要的 4小時後停止計時然後修改後臺工作:

1)發現計時器,花了55分鐘3小時或更多

2)使用System.Threading.Timer完成它

相關問題