Angenommen ich habe die folgende Schnittstelle:Async-Schnittstelle Synchron-
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();
}
ich verschiedene Cache-Provider implementieren kann. Ich setzte sie zweimal für zwei verschiedene Caches:
a) azur redis b) Speicher-Cache
Dazu zu redis arbeitet absolut in Ordnung, da StackExchange.Redis bietet all Asynchron-Methoden für mich, so kann ich bleiben vollständig asynchron .
Jetzt implementiere ich eine andere für den Speicher-Cache, die nicht async API für mich bietet. Nun, was ist die beste Praxis, um diese Schnittstelle zu implementieren? Implementieren Sie es wie es ist, aber nur alles synchronisieren? Warp die internen Anrufe zu einem Task.Run
(keine gute Idee für schnelle Mem-Cache-Anrufe, denke ich).
Ich stimme Ihrem Vorschlag zu. Alternativ können Sie alles synchron ausführen und Task.FromResult zurückgeben, damit es so aussieht, als wäre es asynchron. – hbulens