C# を使用する場合の .Net アプリケーションでは、サード パーティの API にデータを取得するために高価な呼び出しを行う必要があり、これに依存する場合があります。
つまり、そのデータは正確ですが、自分で計算すると精度が低くなります。そのため、過去 5 分間の平均リクエスト時間を追跡するにはどうすればよいか、それが自分の実装を使用するためのしきい値の変更よりも大きいかどうかを考えていました。
メソッドのスケッチは次のようになります。
public int GetMyData()
{
return isTooSlow() ? _ownImplementation.GetData() : thirdParty.GetData();
}
理想的には、私が実装するインターフェースでサードパーティをラップし、実行時にそれを変更できるようにしたい場合でも、それはあればいいことです。
しかし、主な問題は、その状態をメモリに保持する方法です。静的クラスの使用しか考えられず、ApplicationState について読んだことがありますが、それらのいずれかが最良のアプローチであるかどうかはわかりません。
その上、私の小さなプロジェクトではありませんが、これらのソリューションはどのようにスケールアウトしますか? 実行中のアプリケーションの複数のインスタンスについて考える必要がある場合、唯一の解決策は、外部ストレージ (redis など?) を使用して、チェックを行うときにクエリを実行することだと思います。
質問が一般的すぎて申し訳ありませんが、解決するのが興味深い問題であり、最適なアプローチ方法が正確にはわかりません
ありがとう