저는 다른 개발자가 사용하기 위해 RESTful 웹 서비스를 래핑하는 클래스 라이브러리를 개발 중입니다. System.Net.Http
네임 스페이스의 HttpClient
유형을 사용하여 모든 API 호출을 비동기 적으로 수행합니다.비동기 메소드를 공개해야합니까?
단순히 콘텐츠를 보내고받는 것 외에도 반환 된 XML 데이터에 대해 추가 처리를 수행하려고합니다. 아무리 당신이 그것을 넣어,이 클래스 라이브러리의 어딘가에 Async/Await 키워드를 사용하여 포함됩니다.
제 질문은 Async 키워드를 사용하는 메소드를 노출하는 것이 좋은지 나쁜지는 제 질문입니다. 어딘가에 비동기 메서드를 비공개로 설정 한 다음 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
이 아주 간략 코드 샘플임을 명심 : 거기에 어떤 좋은 인수를 직접 비동기 방법을 노출하지?
"어딘가 읽었어요 ..."어디에서 읽었습니까? 링크가 있습니까? 일반적으로 누군가가 그렇게 말하면서 무언가를하면 안된다고 생각합니다. 그들의 논증이 의미가 있고 당신이 그것에 동의하기 때문에 그것을해야합니다. – svick
그것은 인터넷상의 어딘가에있는 많은 "비동기/소개 대기"블로그 게시물 중 하나였습니다. 그 당시에는 의미가 있었지만 지금은 가치를 추가하지 않는 것으로 보아 다시 생각하기 시작했습니다. –