보기 만 반환하면 작업에서 반환 할 성능 diffrence가 있습니까?작업의 차이점 <ViewResult>과 ViewResult
[HttpGet]
public Task<ViewResult> Index()
{
return Task.FromResult(View());
}
[HttpGet]
public ViewResult Index()
{
return View();
}
보기 만 반환하면 작업에서 반환 할 성능 diffrence가 있습니까?작업의 차이점 <ViewResult>과 ViewResult
[HttpGet]
public Task<ViewResult> Index()
{
return Task.FromResult(View());
}
[HttpGet]
public ViewResult Index()
{
return View();
}
Task
오버 헤드를 추가하기 때문에 Task
버전의 속도가 느려질 수 있습니다. Task
을 반환하면 async
- await
을 활용할 수 있습니다. 즉, 실제로 메서드에서 비동기 적으로 수행 할 수있는 작업을 수행하는 경우에 유용합니다.
비동기 작업을 표준 동기 작업을보다 빨리 수행하지 않습니다; 서버 자원을보다 효율적으로 사용할 수 있습니다. 액션이 한 번에 여러 비동기 작업을 수행하려고 할 때 비동기 코드의 가장 큰 이점 중 하나가 표시 될 수 있습니다.
Professional ASP.NET MVC 4
라는 책에서이 정보는 또한 시간이 사용자에게 응답 할 필요가 있도록 호출이 순차적으로 수행되는 것을
public class PortalController : Controller {
public ActionResult Index(string city) {
NewsService newsService = new NewsService();
WeatherService weatherService = new WeatherService();
SportsService sportsService = new SportsService();
PortalViewModel model = new PortalViewModel {
News = newsService.GetNews(city),
Weather = weatherService.GetWeather(city),
Sports = sportsService.GetScores(city)
};
return View(model);
}
}
참고이 항목에 대한 예제가있다 각 개별 전화를 걸기 위해 필요한 시간의 합계와 같습니다. 호출이 200, 300 및 400 밀리 초 (ms) 인 경우 총 작업 실행 시간은 900 밀리 초 (약간의 경미한 플러스 오버 헤드)입니다. 마찬가지로
, 다음과 같은 형태로 수행하게 작용의 비동기 버전 : 작업이 모두 병렬로 쫓겨 것을
가public class PortalController : Controller {
public async Task<ActionResult> Index(string city) {
NewsService newsService = new NewsService();
WeatherService weatherService = new WeatherService();
SportsService sportsService = new SportsService();
var newsTask = newsService.GetNewsAsync(city);
var weatherTask = weatherService.GetWeatherAsync(city);
var sportsTask = sportsService.GetScoresAsync(city);
await Task.WhenAll(newsTask, weatherTask, sportsTask);
PortalViewModel model = new PortalViewModel {
News = newsTask.Result,
Weather = weatherTask.Result,
Sports = sportsTask.Result
};
return View(model);
}
}
참고하므로 사용자에 응답하는 데 필요한 시간은에 같다 가장 긴 개별 통화 시간. 호출이 200, 300 및 400 ms 인 경우 전체 실행 실행 시간은 400 ms입니다 (약간의 경미한 오버 헤드가 있음).
이 http://www.tugberkugurlu.com/archive/asynchronous-database-calls-with-task-based-asynchronous-programming-model-tap-in-asp-net-mvc-4와이 http : //codeclimber.net.nz/archive/2012/01/09/evolution-of-async-controller-asp-net-mvc.aspx –