【发布时间】:2015-11-25 10:24:18
【问题描述】:
所以我有一个 API 上的 Task 方法,比如这个,还有很多其他遵循类似格式的方法
[ResponseType(typeof(MemberMasterItemViewModel))]
[Route("memberMaster/{memberID}")]
[HttpPut]
public async Task<IHttpActionResult> PutMemberMaster(int memberID,MemberMastermemberMaster)
{
//does a load of stuff here, validation etc, updates DB
return Ok(UpdatedItem);
}
这样的 api 方法由 MVC Web 应用程序在这样的操作方法中调用..
[HttpGet]
[SetupViewBag]
public async Task<ActionResult> Details()
{
var account = new MemberMasterView();
var displaycurrencies = await apiClient.getListAsync<Currency> ApiUrls.CURRENCY, null);
var paymentMethods = await apiClient.getListAsync<PaymentMethod> (ApiUrls.PAYMENT_METHOD, null);
return View(account);
}
现在鉴于 API 已经可以处理多个请求,因为它的方法是异步的,我认为调用者/Web 应用程序仍然需要在自己的端多线程,否则调用者 IIS 主机中的主工作线程仍然只能一次执行一条语句,让其他线程无所事事?由于网络应用线程与 API 线程无关。
apiclient 是一个 HttpWebRequest 的包装器,它使用了这个
var response = await request.GetResponseAsync();
肯定要利用多线程 API,您需要这样做吗?如果我只是使用普通的 GetResponse,那么我的工作线程仍然会等待 API 执行它的操作吗?
我有很多 API 调用来设置各种 json 数据,所以我希望它是多线程的。
提前致谢! :)
【问题讨论】:
标签: c# asp.net asp.net-mvc multithreading