有状态的经验7比较维持状态的方式

时间:2013-05-22 06:16:09

标签: asp.net session

我的公司有第三方网络服务,我们正在设计前端。此Web服务使用的“对象”非常大(并且根据创建的子实体的数量而变化)。 Web服务不公开提交/加载子实体的方法,只公开完整的对象层次结构。

UI本身被分成许多子屏幕,主视图/详细视图可以高效/轻松地编辑大量数据。

问题在于存储您当前未查看的所有数据。

对于大型记录,执行Web服务提交最多需要30秒,因此将Web服务用于间歇性数据存储是不可行的。

1 个答案:

答案 0 :(得分:0)

您可以考虑使用.Net的SessionState开箱即用,SQL persistence mode可以缓存Web服务数据,但您需要确保有策略清除数据库中过期的数据。存储在SessionState中的所有对象都需要Serializable

此外,您还应该使用外部Web服务的实体结构(例如.Net添加的服务引用生成的可序列化代理实体),而不是 考虑为您的屏幕构建自己的自定义类层次结构(即自定义视图模型),然后构建桥接,以便在从Web服务进行初始提取后将Web服务图形映射/投影到您的viewmodel,然后再返回到Web服务用户完成图表更新后的实体。如果您没有偏离Web服务类和属性命名标准,LINQ非常适用于此目的,或者可能AutoMapper