【发布时间】:2016-01-01 03:40:02
【问题描述】:
假设我有以下界面:
public interface IApiOutputCache
{
Task RemoveStartsWithAsync(string key);
Task<T> Get<T>(string key) where T : class;
Task RemoveAsync(string key);
Task<bool> ContainsAsync(string key);
Task Add(string key, object o, DateTimeOffset expiration, params string[] dependsOnKeys);
Task<IEnumerable<string>> GetAllKeys();
}
我可以实现不同的缓存提供程序。我为两个不同的缓存实现了两次:
a) 天蓝色的 redis b) 内存缓存
对于 azure redis,这绝对可以正常工作,因为 StackExchange.Redis 为我提供了所有异步方法,因此我可以保持完全异步。
现在我为内存缓存实现了另一个,它不为我提供异步 api。
现在实现这个接口的最佳实践是什么?
按原样实施,但只同步所有内容?将内部调用扭曲到Task.Run(我认为对于快速内存缓存调用来说不是一个好主意)。
【问题讨论】:
-
我同意你的建议。或者,您可以同步运行所有内容并返回 Task.FromResult 以使其看起来像异步。
标签: c# .net async-await task-parallel-library