是否有使用新的async / await功能编写.NET API的指南

时间:2011-10-26 13:54:38

标签: c# .net api naming-conventions async-ctp

我目前正在设计一些内部API,我使用Async CTP及其新的await / async关键字。

是否有关于如何设计这些API的指南或最佳实践?

具体做法是:

  • 我应该提供同步和异步版本的方法吗? (即Task DoStuffAsync() void DoStuff()
  • 我公开的所有异步方法都应该采用async Task<T> GetStuffAsync()形式(即方法名称以Async结尾),还是可以等待名为GetStuff()的东西?

我明白这里不是全黑或白,而是取决于所讨论的方法,但我正在寻找一般指导方针。

3 个答案:

答案 0 :(得分:9)

很难找到掘金,大多数出版物都专注于客户端编程方面。好东西是:

  • 一份名为“基于任务的异步模式”的白皮书。下载is here(注意:今天上午回复缓慢)。
  • Stephen Toub在Windows Build上发表演讲,谈论优化模式,许多重要提示。有a video,也可用in print

请记住这是全部预览,重要细节可能会在发布之前发生变化。

答案 1 :(得分:3)

答案 2 :(得分:1)

我认为现在没有针对CTP的最佳做法。

您可以提供这两种方法,但您应该问自己: 是否可以调用方法异步?

我只会将它限制在time-expensiv方法。如果你需要创建另一个方法async,它没有返回任务的方法,你仍然可以在方法周围创建一个小包装器。