如果您构建的系统的业务流程取决于现在是什么时间[1],那么您不能DateTime.Now
在代码中使用或类似的,因为您将不得不处理测试,例如,未来的月末或年末场景。当您使用 SSL 证书时,更改操作系统时间通常不是一种选择,因为对分布式系统进行更正很复杂。
一种选择是创建一个所有系统都可以访问的单例服务,该服务返回当前时间。在生产中它可能会返回DateTime.Now
,在测试中它可能会在月底场景中返回像 2 月 28 日这样的游戏时间。
但是有更好的方法吗?喜欢更面向数据库的方法,因为它可以带来更好的性能?还是您会放入分布式缓存?是否有一些众所周知的设计模式?
[1]典型例子:保险系统、核心银行系统、...