[英]Caching WCF ChannelFactory or client proxy in ASP.NET on Azure?
正如问题所说。 目前,我们正在将WCF客户端代理(准确地说是ChannelFactory)缓存到每个会话的服务中。 这很好。 但是现在我们已移至Azure,并且有多个(会话)实例。 我现在正在使用AppFabric会话状态。 因此,会话是由Azure提供的,但是现在问题出在通道工厂的缓存上。 由于工厂不是[Serializable],因此似乎无法将其存储在Session []中。 有什么选择? 是否应在每次调用WCF服务方法时重新创建通道?
[1.以前的工作状态; 2.新尝试的解决方案; 3.后备选项]
更新 :我们已经确定,将无法缓存(共享)ChannelFactory。 因此,问题仍然存在,我如何共享因此现在不共享的凭据(UserNameCredentials),并且必须以某种方式在拆分实例之间进行分配。 最明显的选择是将加密的凭据存储在缓存中吗? 这是个好主意吗? 还有其他方法吗?
这继续作为一个新问题: 如何共享WCF客户端凭据...
如果要缓存ChannelFactory,则每个天蓝色角色实例的每个会话将需要一个。 您是正确的,不应在会话之间共享CacheFactories,因为它们可能支持不同的用户。
正确地说,CacheFactory不可序列化,因此您将无法将其放入分布式缓存中。
缓存的一半原因是避免了CacheFactory的建立时间(可能是10毫秒的毫秒数)。 由于CacheFactory的大小相当大,因此将其序列化进出缓存的时间可能甚至更长。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.