我有一个方法Insert
的存储库,它返回int
(这里的方法和类型不相关)。我正在考虑为此存储库创建synchronous
和asynchronous
插入方法。对于asynchronous
方法,最好将synchronous
Insert
方法括在task
中以避免代码重复?
答案 0 :(得分:4)
不,这不是一个好习惯,正如微软的Stephen Toub所详述的那样:
......和Stephen Cleary在这里:
http://blog.stephencleary.com/2013/11/taskrun-etiquette-examples-dont-use.html
长话短说,如果你所有的方法都是在Task.Run
包裹一个同步电话,这是微不足道的,我确信来电者完全有能力自己做。除非你有一个自然的异步操作,否则不需要增加API的表面积(或者除非你知道将来你能够提供一个,因此希望消费者定位{{1从第一天开始的方法。
作为奖励,这里是从流行的库中删除异步包装器方法的真实例子:
JSON.NET过去常常使用XxxAsync
提供SerializeAsync
和DeserializeAsync
方法,这些方法只是围绕同步对应方的包装器。这些最终被淘汰,因为它们没有为API增加价值,并被认为是潜在的可扩展性问题。可以在此处找到导致此更改的完整讨论: