我应该使用单身人士吗?

the*_*rrs 1 c# singleton design-patterns

这是一个与我刚刚提出的以下问题有关的半相关问题:

公用事业班..好还是坏?

在确定一个类充当存储在XML文件中的Url解析规则的缓存之后,我认为单例可以解决我的问题,但是引入了全局状态(尽管它只是向一个方向传播XML - >解析器)和静态依赖项.

导致我考虑单例的设计考虑因素是:(请注意,这是一个使用模块来捕获和解析使用相同解析器的所有请求的Web应用程序)

  • 我需要缓存存储在XML中的url解析规则,因此类需要在请求之间徘徊.我还有一个解析Url的方法,给定规则,它确定HttpModule级别的请求路由.

在这种情况下单身是否有效?你怎么解决这个问题?

zac*_*zac 5

我会考虑将规则存储在HttpContext.Cache中,该规则可供所有会话使用.您可以在卸载缓存时重建缓存(由于缺乏使用).


Jef*_*nal 5

不需要具有所有相关缺点的单例(习惯性反单例链接).

我喜欢存储它的建议HttpContext.Cache.一些类似的选择:

  • 存放在 HttpApplication.Application

  • 将属性添加到应用程序类以存储它,然后在相关的属性中存储对应用程序的类HttpModule级别引用.

  • 当数据必须存储较长时间时,HttpContext.Cache可能会出现不可预测的行为,因为它会自动刷新.这时HttpApplication.Application将保留应用程序请求的整个生命周期的数据. (2认同)