【发布时间】:2014-07-20 15:39:41
【问题描述】:
我有一个 wcf 网络服务,我想在调用之间共享信息(不同的客户端调用)。
例如在客户端调用之间共享字典。字典可以通过调用(添加/删除项目等)进行更改,但我不能为每次调用删除或更新它(它应该像一个静态数据库)。
有没有办法解决这个问题?
已经尝试了一些建议,但似乎没有任何效果。
【问题讨论】:
我有一个 wcf 网络服务,我想在调用之间共享信息(不同的客户端调用)。
例如在客户端调用之间共享字典。字典可以通过调用(添加/删除项目等)进行更改,但我不能为每次调用删除或更新它(它应该像一个静态数据库)。
有没有办法解决这个问题?
已经尝试了一些建议,但似乎没有任何效果。
【问题讨论】:
您基本上需要在服务类之外定义singleton - 您需要处理多个调用同时访问/修改信息的可能性很大,因此可能需要使用ReaderWriteLock 或 ReaderWriterLockSlim。
假设您使用的是 .net 4.0,一个更好的方法是使用包含内置线程安全的 MemoryCache。如果您是 .net 4.0 之前的版本,那么 System.Web 命名空间link 中有一个缓存对象 - 如果您想在编写 Windows 应用程序时使用它,那么必须添加对 system.web 的引用有点痛苦,所以.net 4.0 中的 MemoryCache 实现是一个受欢迎的补充。
【讨论】: