服务和存储库是否应该总是单例,因为它们始终是无状态的?

时间:2019-03-10 02:48:40

标签: c# .net asp.net-core .net-core autofac

根据REST的原理,API应该是无状态的。因此,如果每个请求都有其所需的上下文,那么服务,存储库是否应始终为单例并且可以重复使用同一实例?

有了这个,就没有必要为每个请求一次又一次地连接并创建新实例的框架了。如果它们是无状态的,那么即使在多线程中也没有问题。

那么,在这种情况下推荐的做法是什么?

Spring框架也是以这种方式设计的。

1 个答案:

答案 0 :(得分:0)

无状态的东西在编程中很棒。有很多好处。但是,有时候使您的存储库成为有状态是合理的(例如,简单的缓存或重试逻辑或缓冲-取决于您要处理的具体情况)。

所以答案是:使您的代码通常保持无状态,但不要害怕在适当的时候引入状态。

P.S。有一些智能FP技术可以以无状态方式处理状态。 Checout Haskell的State monad是一个经典示例。