Giả sử tôi có giao diện như sau:Thực hiện Async Giao diện đồng bộ
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();
}
tôi có thể thực hiện các nhà cung cấp bộ nhớ cache khác nhau. Tôi thực hiện nó hai lần cho hai lưu trữ khác nhau:
a) redis xanh b) bộ nhớ cache
Đối redis xanh này hoạt động hoàn toàn tốt đẹp kể từ StackExchange.Redis cung cấp tất cả các phương pháp async đối với tôi vì vậy tôi có thể ở lại hoàn toàn async .
Bây giờ tôi thực hiện một số khác cho bộ nhớ cache không cung cấp api không đồng bộ cho tôi. Bây giờ, cách tốt nhất để triển khai giao diện này là gì? Triển khai thực hiện như vậy nhưng chỉ làm mọi thứ đồng bộ hóa? Warp các cuộc gọi nội bộ đến một Task.Run
(không phải là một ý tưởng tốt cho các cuộc gọi bộ nhớ cache nhanh mem tôi nghĩ).
Tôi đồng ý với đề xuất của bạn. Ngoài ra, bạn có thể chạy tất cả mọi thứ đồng bộ và trả lại Task.FromResult để làm cho nó trông giống như nó không đồng bộ. – hbulens