2017-02-28 1 views
0

Twilio C# 용 최신 너겟 패키지를 업그레이드하고 대부분의 사용법이 정적 메서드 및 비동기 호출을 기반으로한다는 것을 알게되었습니다.Twilio C# 5.x 라이브러리의 아키텍처상의 이유

비동기/대기 및 인스턴스 메소드를 사용하지 않는 이유가 있습니까? 라이브러리가 사실async 호출을하지 않기 때문에

+0

라이브러리에서 비동기가 지원됩니다. 예를 들어 MessageResource.Create 대신 MessageResource.CreateAsync를 호출하십시오. – dprothero

답변

0

도서관에서 async 방법을 사용하지 않는 주된 이유입니다. 사실 나는 입출력 작업을 의미하며 어떤 CPU 바운드 코드는 Task.Run()에 래핑되지 않습니다. 웹 앱이 있고 타사 라이브러리가 Task.Run() 작업의 힙을 시작한다고 가정 할 수 있습니다. 메서드가 async이라고 가정하면 앱의 성능과 처리량에 좋지 않습니다.

+1

그건 의미가 없습니다. 비동기 적으로 래핑 된 "CPU 바운드 코드"가 필요없는 비동기 적으로 코드를 실행할 수 있습니다. 예를 들어, HttpClient와 같은 REST API에 요청하면 완벽하게 정상적으로 처리됩니다. –

+0

HttpClient가 _true_' async' 호출을합니다. 그것은 CPU 바운드 코드가 아닙니다. – JohanP

+0

@JLuisEstrada'HttpClient'는'async' 구현에서'Task.Run()'을 사용하지 않습니다. – JohanP

2

Twilio 개발자 교육자는 여기에 있습니다. 이는 우리가 듣는 것이 어렵더라도 개발자 커뮤니티에서 정말로 듣고 싶은 소중한 의견입니다. 질문의 두 부분을 처리해 드리겠습니다.

1. 비동기/지원을 기다리는 것에 관해서.

라이브러리는 실제로 .NET 4.5.1 이상을 대상으로한다고 가정 할 때이를 지원합니다. 이 플랫폼의 경우 실제 비동기를 지원하는 HttpClient을 사용합니다. 예를 들어 MessageResource.Create을 호출하는 대신 MessageResource.CreateAsync을 호출하십시오. 여기에 대한 문서의 참고 사항은 다음과 같습니다. https://www.twilio.com/docs/libraries/csharp/migrating-your-csharp-dot-net-application-twilio-sdk-4x-5x#asynchronous-methods

2. 리소스의 정적 특성에 관해서.

우리는 개발자가 응용 프로그램 전체에 클라이언트 객체를 전달할 필요가 없도록 개발자가 생각하고 싶었습니다. 모두가 의존성 주입 프레임 워크를 사용하는 것은 아니며 가능한 한 많은 마찰을 제거하려고했습니다. 그렇게하는 사람들은 자신의 클라이언트 객체를 삽입하는 것이 좋습니다.

우리는 단위 테스트의 스토리가 이상적이지 않으며이를 쉽게 처리 할 수 ​​있음을 인정합니다. 먼저 자신의 클라이언트를 조롱하고 다양한 응답을 보내는 방법을 설명하는 블로그 게시물을 작성하는 것으로 시작하겠습니다. 라이브러리를 업데이트하고 가능한 한 쉽게이 작업을 수행 할 수있는 도구를 추가하여 계속하겠습니다.

업데이트 : Twilio API 요청을 조롱하는 방법에 대한 예를 정리했습니다. 우리는 이것을 더욱 쉽게하기 위해 업데이트를 발표 할 것입니다. https://github.com/dprothero/twilio-mock-example

관련 문제