我为Twilio C#升级了最新的nuget包,并注意到大部分用法都是基于静态方法而没有异步调用。
是否有理由不使用async / await和instance方法?
答案 0 :(得分: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
答案 1 :(得分:0)
在库中不使用async
方法的主要原因是该库未进行 true async
调用。通过 true 我的意思是I / O操作,而不是Task.Run()
中包含的一些CPU绑定代码。您可以想象,如果您有一个Web应用程序,并且第三方lib以方法为Task.Run()
的幌子启动了大量async
操作,这对您的应用程序的性能不利和吞吐量。