我有一个Web应用程序使用代理来对从AS400返回的数据,像我们的公司,不同的商店,我们在该领域拥有了等,这些销售相关的不同销售区域WCF服务调用的操作地区和房屋不经常改变,商店只可以加入每年两次和地区一直是几年不变。

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

如果我设置InstanceContextMode单,并有地区和门店的任何服务操作调用初始化和填充之前,以任何方式将这种帮助?基本上,现在,它做的每一个电话查询数据库,我不认为有必要。

所以到Web应用程序用户登录 - > Web应用程序页面 - >已加载地区降下来 - > Web开发者调用代理获得的区域...但是当每一个用户使用Web应用程序所以基本上这是发生每一次用户访问的Web应用程序,代理使得对DB打电话,我相信这是愚蠢和我建立了业务运营的方式错误,或者有我完全误解的东西吗?

更新 - 服务是IIS托管,所以这整个问题可能会变得毫无意义。

有帮助吗?

解决方案

在基本最佳实践的建议是使用每个呼叫,单一实例服务。这是最简单的创建,没有并发恶梦等。

BUT:当然的每次调用的服务,创建了一个服务实例和数据库后端时间被查询

如果有可能,尽量坚持这一点。尝试把高速缓存逻辑到数据库 - 如果你有足够的内存,最多你经常请求的数据将保存在内存

去一个ConcurrencyMode =多在你的WCF服务使各种并发问题显示出来,你需要与非常小心。尽量避免这种只要有可能。

首先每个呼叫尝试,单实例和ONLY优化,如果你真的有!

马克

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top