我正在开发一个包装REST风格的Web服务的类库(供其他开发人员使用)。我使用System.Net.Http
名称空间中的HttpClient
类型异步执行所有API调用。我应该公开异步方法吗?
除了简单地发送/接收内容,我还想对返回的XML数据进行额外的处理。无论你如何放置它,都需要在类库中的某处使用Async/Await关键字。
我的问题是,揭示使用Async关键字的方法以及为什么是好的或坏主意。我读过某处应该让Async方法为private,然后用一个return语句创建一个额外的方法。这就是我一直在做的事情,但这并不正确。
Public Function InvokeAsync(command As HttpRequestMessage) As Task(Of CommandResult)
Return InvokeAsyncInternal(command)
End Function
Private Async Function InvokeAsyncInternal(command As HttpRequestMessage) As Task(Of CommandResult)
Dim rawCommandResult As HttpResponseMessage = Await myHttpClient.SendAsync(command)
Dim finalResult As CommandResult = AdditionalProcessing(rawCommandResult)
Return finalResult
End Function
请记住,这是一个过于简单的代码示例:是否有任何好的参数不要直接暴露Async方法?
“我读过的地方......”你在哪里读到的?你有链接吗?总的来说,我认为你不应该因为有人这样说而做某件事。你应该这样做,因为他们的论点是有道理的,你同意它。 – svick
这是在互联网上的许多“异步/等待”博客文章之一。这在当时是有道理的,但现在我开始重新考虑,因为它似乎没有增加任何价值。 –