c# - WCF - 在调用之间共享/缓存数据

标签 c# wcf

我是 WCF 和服务开发的新手,有以下问题。

我想编写一个依赖于某些数据(例如来自数据库)的服务来处理客户端请求并回复。 我不想在数据库中查找每个调用。我的问题是,是否有任何技术或方法可以让我预先加载此类数据或仅加载一次,这样它就不需要为每个请求都获取这些数据?

我读到将 InstanceContextMode 设置为 Single 可能不是一个好主意(不确定原因)。有人能解释一下处理这种情况的最佳方法是什么吗。

谢谢

最佳答案

BCL 有一个 Lazy 类就是为此目的而制作的。不幸的是,如果出现暂时性异常(网络问题、超时……),它会永远存储异常。这意味着如果发生这种情况,您的服务将永远中断。这是 Not Acceptable 。 Lazy 类因此不可用。 Microsoft 已声明他们不愿意解决此问题。

处理这个问题的最好方法是编写自己的惰性程序或使用等效的东西。

您也可以使用 LazyInitializer。请参阅文档。

我不知道实例模式 Single 在发生异常时的行为。在任何情况下,将惰性资源放入服务类在架构上都是不明智的。如果您想与多个服务共享这些资源,那就有问题了。服务类也没有责任这样做。

关于c# - WCF - 在调用之间共享/缓存数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32661864/

相关文章:

c# - 在 C# 中,如何定义自己的异常?

c# - 在计算机休眠或 sleep 后恢复后,在 WPF 中使用什么事件来更新应用程序?

c# - App.xaml 找不到命名空间 IocContainter MVVM

wcf - 何时/为什么我不应该在我的 DataContracts 上使用 IsReference=true?

wcf - 在 IIS 中托管 WCF net.pipe 绑定(bind)时控制命名管道的名称

c# - 我如何知道 ListBoxItem 是否是 Wpf 的 ListBox 中的最后一项?

c# - AutoMapper AutoMapper.AutoMapperMappingException : Error mapping types

wcf - 通过 MSMQ 将日志缓冲到 WCF Web 服务

c# - WCF 能否处理对同一终结点的同时调用?

c# - WCF 错误 : Cannot find a token authenticator