最初の問題を理解する:Asp.netコア、私はいけない基本的な問題は、
services.AddMemoryCache(); // in Startup config
public class AController
{
public AController(IMemoryCache cacheA) { }
}
public class BController
{
public BController(IMemoryCache cacheB) { }
}
問題ははCacheAがCacheBのと同じであるということである
私はプライベートAPIを持っているしたいと思います(クラスタ接続)と公共API(フロントエンドに公開) どのようにDIパターンを親しみやすく保ちながらそれらを分けるか?
第2の問題。
iは、外部のサーバに照会HTTP を経由して、いくつかの外部のウェブサーバを要求し、その結果も、その後DBを照会ので、我々が最初なLocalCacheを問い合わせるDB に格納されているサービスにキャッシュされることになるサービスを持つようにしたい
そのサービスの結果はコントローラで使用され、フロントエンドに送信されます
どのようにすべてのファンシーasp.netcoreパターンでそのようなものを実装するには? キャッシュはONE(シングルトン)である必要がありますので、DBリクエストを無駄にする必要はありません。
?サービスとしてサービスを追加します.SCOPED <>それでは、すべてのインスタンスでキャッシュを同じに保つ方法(シングルトンDIか静的なMemoryCacheインスタンスか) 助けを乞う気がありません。
.js私は数分でそれをすべて行っているだろうが、そのマイクロソフトちょっと
ソースで一つ見ては、あなたの質問のすべてに答えています:https://github.com/aspnet/Caching/blob/efbbdc5e0a8c8a664ea34cd41220d084b6906f57/src/Microsoft.Extensions.Caching.Memory/MemoryCacheServiceCollectionExtensions.cs#L76-L86 – Tseng
VSの(Peek Definition - Alt F12)があなたにソースを見せてくれるのならいいでしょう。 – gdpm