ビジネス プロセスが現在時刻に依存するシステムを構築する場合[1]、コードで使用することはできませんDateTime.Now
。たとえば、将来の月末または年末のシナリオでテストを処理する必要があるためです。オペレーティング システムの時刻を変更することは、一般に、SSL 証明書を使用する場合のオプションではありません。これは、分散システムで修正を行うのが複雑であるためです。
1 つのオプションは、現在の時刻を返すすべてのシステムからアクセスできるシングルトン サービスを作成することです。本番環境では返される可能性がDateTime.Now
あり、テストでは、月末のシナリオで 2 月 28 日のようなゲーム時間を返す可能性があります。
しかし、これを行うより良い方法はありますか? パフォーマンスの向上につながるため、よりデータベース指向のアプローチが好きですか? それとも、分散キャッシュを入れますか? このためのよく知られたデザインパターンはありますか?
[1]典型的な例: 保険システム、基幹銀行システムなどによって実装されるビジネス プロセス