Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 从ASP.NET MVC应用程序执行Web请求是一种不好的做法吗?_Asp.net Mvc_Azure_Windows Services_Httpwebrequest_Webrequest - Fatal编程技术网

Asp.net mvc 从ASP.NET MVC应用程序执行Web请求是一种不好的做法吗?

Asp.net mvc 从ASP.NET MVC应用程序执行Web请求是一种不好的做法吗?,asp.net-mvc,azure,windows-services,httpwebrequest,webrequest,Asp.net Mvc,Azure,Windows Services,Httpwebrequest,Webrequest,我正在Windows Azure中运行/部署一个web应用程序(ASP.NET MVC) 如果我从该应用程序执行大量Web请求,这是一种不好的做法吗?即: ActionResult SomeAction() { WebRequest.Create(some url); .... } 有些动作被多次调用。此外,某些操作可能会创建多达100个Web请求,甚至更多 这种做法不好吗? 我应该改用Windows服务吗?即: ActionResult SomeAction()

我正在Windows Azure中运行/部署一个web应用程序(ASP.NET MVC)

如果我从该应用程序执行大量Web请求,这是一种不好的做法吗?即:

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

       ....
}
有些动作被多次调用。此外,某些操作可能会创建多达100个Web请求,甚至更多

这种做法不好吗?
我应该改用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
}

这不是一个坏的做法,直到这是强制性的为您的项目

顺便说一句,您可以使用以下最佳做法包装远程呼叫:

  • 如果远程url中的数据不经常更改,则可以缓存结果,从而避免多个web请求
  • 使用async await方法(如果您使用的是.NET 4.5)以异步方式执行web请求,并为您的应用程序提供更好的性能

  • “很多次”是什么意思?你能同时做多少件事?他们是什么类型的电话?你所做的事情没有本质上的错误。但是,使用windows服务处理请求的队列肯定可以让您更好地管理吞吐量。例如,如果调用
    SomeAction
    的次数超过了网站能够处理的次数,会发生什么情况?你能接受一些“丢失”的请求吗?这个决定取决于实际的预期负载,以及您是否可以扩展以处理它。我同意其他人的看法。如果这是一个面向用户的应用程序,这将是一个令人不快的页面。如果这是一个内部临时使用的东西,像这样的东西就可以了。最终,如果你想扩大规模,那么你应该按照@mellamokb的建议,将你的100个作业排队,然后返回给用户,并有一些流程来监控100个作业的状态。