【发布时间】:2013-10-07 15:32:54
【问题描述】:
我想使用每个会话合同制作 wcf 服务。但我希望每个会话的所有实例都有一个对象,所有每个会话实例都可以访问它。
如果我不清楚,我想为每个客户端创建一个单独的服务实例,但它们都可以访问一个单独的公共内存。
我可以在服务类中使用静态变量来实现这一点,但是在 wcf 中没有另一种方法吗?
【问题讨论】:
-
呃...使用单例?
我想使用每个会话合同制作 wcf 服务。但我希望每个会话的所有实例都有一个对象,所有每个会话实例都可以访问它。
如果我不清楚,我想为每个客户端创建一个单独的服务实例,但它们都可以访问一个单独的公共内存。
我可以在服务类中使用静态变量来实现这一点,但是在 wcf 中没有另一种方法吗?
【问题讨论】:
您可以使用 System.Runtime.Caching 类来实现这一点。默认内存缓存的范围是进程级别,因此它应该满足您的需求。
【讨论】:
我认为您可以创建自己的服务主机工厂,它会以某种方式(例如,像 Jason 在 Memory Cash 中建议的那样)存储您对“单一对象”服务的引用,并参考您的“单一对象”服务创建新的服务主机对象”
【讨论】:
No WCF 不提供介于 PerSession 和 Single 之间的 InstanceContextMode。
要实现您需要的行为,您可以使用静态类或singleton。
【讨论】: