我正在開發一個包裝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
這是在互聯網上的許多「異步/等待」博客文章之一。這在當時是有道理的,但現在我開始重新考慮,因爲它似乎沒有增加任何價值。 –