我的公司有一个第三方web服务,我们正在为其设计前端。此web服务使用的"对象"非常大(并且根据所创建的子实体的数量而变化)。web服务不公开提交/加载子实体的方法,只公开完整的对象层次结构。
UI本身被分成许多子屏幕,以及主/详细视图,以便能够高效/轻松地编辑大量数据。
问题是在哪里存储你目前没有看到的所有数据。
对于大型记录,执行web服务提交最多需要30秒,因此使用web服务进行间歇性数据存储是不可行的。
如前所述,数据可能非常大(多个兆字节,在边缘情况下可能达到千兆字节)
这是用于ASP的。Net 4.0,带有MS-SQL后端和第三方SOAP web服务。
不能修改web服务契约
这是我们的一些想法。帮我选择,或者找出更好的东西!
1)最初的开发人员将序列化的XML扔到会话(机器会话)中。我很快发现这是一个问题,因为以这种方式使用会话可能会由于内存占用以及负载平衡问题等而严重影响性能。
2)会话服务器-可能,但需要额外的硬件购买这可能不是一个选项
3) SQL会话-存储如此大的对象的性能?
4)写入XML到磁盘/共享(压缩?)
5)写XML到SQL(压缩?)
SQL关系数据库-为每个实体类型创建表。这将允许单独的子实体加载/保存,这可能对性能有很大的帮助。我们担心脆弱性和维护,因为我们不控制第三方服务(尽管我们确实有这个问题,因为GUI也会很脆弱)7) viewstate - too big, perf hit
选项6可能是您最好的选择。听起来,您无论如何都必须处理维护服务数据结构的更改。你也可以想出一个模式,你可以从服务中"拉"数据到你的数据存储,让用户玩它,然后在他们完成时"推"数据回来。
您可能还对学习非sql数据存储感兴趣。无模式或基于文档的数据存储可以降低维护成本,同时仍然允许您存储整个模型,并在事后根据查询检索其中的部分。