私は外部APIにアクセスするいくつかのサービスを作成したいと思います。そのサービス内のAPIからの共通要求をキャッシュしたいと思っています。それは3つの他のサービスに依存しますが、キャッシュは、MemoryDistributedCacheが後で他の何か私のコントローラから今正しいaspnetcoreの方法ですか?サービスと依存性注入
services.AddSingleton<ISomeApi, SomeApi>(provider => new SomeApi(
Configuration.Get<Options>(),
new MemoryDistributedCache(new MemoryCache(new MemoryCacheOptions())),
provider.GetService<ILogger<SomeApi>>()
));
私はDI経由でAPIにアクセスできるために変更される可能性があります、それはうまく動作しますが、より良いアンチパターンの場合、またはそのいくつかの並べ替えがある場合イムわかりませんそれを行う方法
実際の問題は内部キャッシュを分離していることを意味し、 IDistributedMemoryを1つのサービスからリクエストしていますw他のサービスから要求した場合と同じオブジェクトを私に与えてください。それらは分離する必要があります。
なぜ別のキャッシュにする必要がありますか?また、注記:GetService()は、サービスが見つからない場合はnullを返します。だからあなたのサービスが実際にロガーを必要とするなら、 'GetRequiredService ()'を使ってください。 –
juunas
は、1つのキャッシュが1つのデータベースシステムによってバックアップされ、2番目のキャッシュが別のデータベースシステムによってバックアップされているとします – gdpm