【发布时间】:2013-05-02 21:55:30
【问题描述】:
我正在做一个在 Windows Azure 中运行/部署的 Web 应用程序 (ASP.NET MVC)。
如果我从这个应用程序中执行大量 WebRequest,这是一种不好的做法吗?,即:
ActionResult SomeAction()
{
WebRequest.Create(some url);
....
}
SomeAction 被调用了很多次。此外,SomeAction 可能会创建多达 100 个 WebRequest,甚至更多。
这是一种不好的做法吗?
我应该改用 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
}
【问题讨论】:
-
“很多次”是什么意思?你可以同时拥有多少个 SomeAction?他们是什么类型的电话?
-
您所做的事情本身并没有错。但是,带有处理请求的 Windows 服务的队列肯定会让您更好地管理吞吐量。例如,如果
SomeAction的调用频率高于网站的处理能力,会发生什么情况?您对某些“丢失”的请求是否满意?该决定取决于实际的预期负载以及您是否可以扩展来处理它。 -
我同意其他人的观点。如果这是一个面向用户的应用程序,这将是一个令人不快的页面。如果这是内部临时使用的东西,那么这样的东西可能没问题。最终,如果你想扩大规模,那么你应该遵循@mellamokb 的建议,将你的 100 个作业排队并返回给用户,并有一些流程来监控这 100 个作业的状态。
标签: asp.net-mvc azure windows-services httpwebrequest webrequest