2

我正在做一個在Windows Azure中運行/部署的Web應用程序(ASP.NET MVC)。從ASP.NET MVC應用程序執行WebRequests是不是一個不好的做法?

它是一個不好的做法,如果我從這個應用程序?這是做了很多WebRequests的:

ActionResult SomeAction() 
{ 
     WebRequest.Create(some url); 

     .... 
} 

SomeAction叫了很多次。另外SomeAction可能會創建多達100個WebRequests,甚至更多。

這是不好的做法?
我應該使用Windows服務嗎?即:

ActionResult SomeAction() 
{ 
     //Save the request in a db and let a Windows Service to poll this db 
     //and do the WebRequests from outside the MVC application 
} 
+0

您是什麼意思「很多次」? SomeAction可以有多少個併發?他們是什麼類型的電話? – Madthew 2013-05-08 15:35:05

+1

你在做什麼並沒有什麼天生的錯誤。但是,使用處理請求的Windows服務的隊列肯定會讓您更好地管理吞吐量。例如,如果SomeAction被調用的次數多於網站能夠處理的次數,會發生什麼?一些要求「丟失」的請求你可以嗎?這個決定取決於實際的預期負載以及是否可以擴展來處理它。 – mellamokb 2013-05-08 15:35:17

+1

我同意其他人。如果這是一個面向用戶的應用程序,這將是一個不愉快的頁面。如果這是臨時使用的內部事物,這樣的事情可能會很好。最終,如果你想擴大規模,那麼你應該遵循@ mellamokb的建議,排隊你的100個工作,並返回給用戶,並有一些過程來監控100個工作的狀態。 – Jaxidian 2013-05-08 16:00:53

回答

0

這是不是一個糟糕的做法,直到這是你的項目強制性的。

順便說一句,你可以使用一些最佳實踐像包裹遠程調用:

  1. 如果在遠程URL中的數據不會改變ofter可以緩存結果避免多個web請求
  2. 使用異步等待的方法(如果您使用的是.NET 4.5)以異步方式執行Web請求併爲您的應用程序提供更好的性能
相關問題