Mon*_*key 3 .net async-await asp.net-web-api
我对这个问题的动机是因为我正在创建一个.net web API项目,该项目将使用具有同步方法的现有neo4j rest api客户端.我想通过转向异步方法来利用一些性能提升,但我想避免进入neo4j api库并重构同步方法以返回异步方法.我想知道是否在await Task.Run()中包含对同步方法的调用将是有益的.具体来说,当第一个例子中,来自httpClient的异步结果调用Wait()方法时会发生什么,但是整个事情都包含在另一个等待中.
还要记住,我将在AppHarbor云上运行它,我认为它是一个虚拟核心.
以下是这样的
//what happens with the synchronous rest api client I am using
HttpResponseMessage SendHttpRequest(HttpRequestMessage request)
{
var requestTask = httpClient.SendAsync(request);
requestTask.Wait();
return requestTask.Result;
}
object result = await Task.Run(() =>
{
return SendHttpRequest(request);
});
Run Code Online (Sandbox Code Playgroud)
性能相似
return httpClient.SendAsync(request)
Run Code Online (Sandbox Code Playgroud)
我想通过转向异步方法来利用一些性能提升,但我想避免进入neo4j api库并重构同步方法以返回异步方法.
抱歉,async如果您只是将同步代码包装在内,那么您将失去服务器端的所有好处Task.Run.
async在服务器上很好,因为异步操作比线程更好.但是如果你正在使用Task.Run,那么无论如何你都在使用一个线程.
| 归档时间: |
|
| 查看次数: |
1551 次 |
| 最近记录: |