WCF InstanceContextMode

WCF InstanceContextMode,wcf,instancecontextmode,Wcf,Instancecontextmode,我有一个web应用程序使用代理调用WCF服务上的操作,该服务从AS400返回数据,如与我们公司相关的不同销售区域、我们在现场的不同门店等。这些销售区域和门店不会经常更改,商店每年可能只增加两次,而地区在几年内都是一样的 我想我的困惑在于InstanceContextMode。当代理客户端调用GetRegions()或GetStoresForRegion(int regionNumber)时,我只是返回一个“区域”和“存储”列表 如果我将InstanceContextMode设置为single,并

我有一个web应用程序使用代理调用WCF服务上的操作,该服务从AS400返回数据,如与我们公司相关的不同销售区域、我们在现场的不同门店等。这些销售区域和门店不会经常更改,商店每年可能只增加两次,而地区在几年内都是一样的

我想我的困惑在于InstanceContextMode。当代理客户端调用GetRegions()或GetStoresForRegion(int regionNumber)时,我只是返回一个“区域”和“存储”列表

如果我将InstanceContextMode设置为single,并在任何服务操作调用之前将区域和存储初始化并填充到,这会有任何帮助吗?基本上现在,它对每个调用都进行DB查找,我认为没有必要这样做

所以用户登录到web应用->web应用页面->必须加载区域下拉列表->web开发人员调用代理以获取区域。。。但是,当每个用户都使用web应用时,就会发生这种情况。因此,基本上,每次用户访问web应用时,代理都会调用DB,我认为这是愚蠢的,是我设置服务操作的错误,还是我完全误解了什么


更新-服务由IIS托管,因此整个问题可能没有实际意义。基本的最佳实践建议是使用每次调用的单实例服务。这是最容易创建的,没有并发性噩梦等

但是:当然,每次调用服务时,都会创建一个服务实例并查询数据库后端

如果可能的话,试着坚持下去。尝试将缓存逻辑放入数据库-如果您有足够的RAM,大多数频繁请求的数据将保留在内存中

在WCF服务中转到ConcurrencyMode=multiple会导致出现各种各样的并发问题,您需要非常小心。尽可能避免这种情况

每次调用尝试一次,首先是单个实例,只有在必要时才进行优化


Marc

InstanceContextMode=多个不存在,我想您指的是并发模式。Multiple@PB:当然-我会更新我的答案-谢谢你指出!