我是 WCF 和服务开发的新手,有以下问题。
我想编写一个依赖于某些数据(例如来自数据库)的服务来处理客户端请求并回复。 我不想在数据库中查找每个调用。我的问题是,是否有任何技术或方法可以让我预先加载此类数据或仅加载一次,这样它就不需要为每个请求都获取这些数据?
我读到将 InstanceContextMode 设置为 Single 可能不是一个好主意(不确定原因)。有人能解释一下处理这种情况的最佳方法是什么吗。
谢谢
最佳答案
BCL 有一个 Lazy
类就是为此目的而制作的。不幸的是,如果出现暂时性异常(网络问题、超时……),它会永远存储异常。这意味着如果发生这种情况,您的服务将永远中断。这是 Not Acceptable 。 Lazy
类因此不可用。 Microsoft 已声明他们不愿意解决此问题。
处理这个问题的最好方法是编写自己的惰性程序或使用等效的东西。
您也可以使用 LazyInitializer
。请参阅文档。
我不知道实例模式 Single
在发生异常时的行为。在任何情况下,将惰性资源放入服务类在架构上都是不明智的。如果您想与多个服务共享这些资源,那就有问题了。服务类也没有责任这样做。
关于c# - WCF - 在调用之间共享/缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661864/