Twilio C# 용 최신 너겟 패키지를 업그레이드하고 대부분의 사용법이 정적 메서드 및 비동기 호출을 기반으로한다는 것을 알게되었습니다.Twilio C# 5.x 라이브러리의 아키텍처상의 이유
비동기/대기 및 인스턴스 메소드를 사용하지 않는 이유가 있습니까? 라이브러리가 사실async
호출을하지 않기 때문에
Twilio C# 용 최신 너겟 패키지를 업그레이드하고 대부분의 사용법이 정적 메서드 및 비동기 호출을 기반으로한다는 것을 알게되었습니다.Twilio C# 5.x 라이브러리의 아키텍처상의 이유
비동기/대기 및 인스턴스 메소드를 사용하지 않는 이유가 있습니까? 라이브러리가 사실async
호출을하지 않기 때문에
도서관에서 async
방법을 사용하지 않는 주된 이유입니다. 사실 나는 입출력 작업을 의미하며 어떤 CPU 바운드 코드는 Task.Run()
에 래핑되지 않습니다. 웹 앱이 있고 타사 라이브러리가 Task.Run()
작업의 힙을 시작한다고 가정 할 수 있습니다. 메서드가 async
이라고 가정하면 앱의 성능과 처리량에 좋지 않습니다.
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
라이브러리에서 비동기가 지원됩니다. 예를 들어 MessageResource.Create 대신 MessageResource.CreateAsync를 호출하십시오. – dprothero