我正在使用预先存在的C#ASP.NET MVC web应用程序,并且我正在向它添加一些功能,我无法决定是否进行异步。使控制器方法异步或保持同步?
现在,应用程序主页只是处理页面并且用户登录。没有什么更多,也没有什么异步进行。
我添加的功能会在访问主页时生成对Web API的调用,该API随后会调用一个数据库来抓取标识符并将其返回给主页上的HTML标记。该标识符在屏幕上不可见,只能在源/ HTML视图(为了各种内部追踪目的而添加)中显示。
Web API /数据库调用很简单,只需抓住一个标识符并将其返回给控制器即可。无论如何,我想知道应用程序是否应该异步进行此调用?网站流量并不是很大,但我仍然想知道并发性,性能和未来的可伸缩性。
一个问题是,我必须使整个ActionMethod异步,我不知道这将是什么影响。基本模式,目前同步,如下:
public ActionResult Index()
{
var result = GetID();
ViewBag.result = result.Data;
return View();
}
public JsonResult GetID()
{
var result = "";
var url = "http://APIURL/GetID";
using (WebClient client = new WebClient())
{
result = client.DownloadString(url);
}
return Json(result, JsonRequestBehavior.AllowGet);
}
有什么想法?
如果您可以使用async/await关键字,请始终使用async。如果您必须使用遗留模式,除非您遇到当前的扩展问题,否则请不要使用它 - 它会将复杂度提高到超出收益水平的程度。 – MatthewMartin