SOA/Web服务分页

cmd*_*tos 11 session soa pagination web-services

在SOA中,我们不应该在客户端和服务器之间构建或保持状态(或设计依赖关系).这是理解的.但是,如果客户想要使用可能返回开放式数量的"行"的实时服务,可以遵循哪些模式?

类似于SOA但允许状态(会话)的Web应用程序已经通过分页解决了这个问题.分页需要(在大多数情况下,特别是使用SQL)服务器保存数据并且客户端以块的形式请求数据.

如果我们在哪里考虑用于Web服务的类似分页的场景,那么这些将遵循哪些模式仍然允许遵循SOA的原则(或尽可能接近).

思想家的一些规则:1)由SQL数据库支持(因此在选择集中没有行号的概念)2)在分页期间不跳过一行或复制一行中的一行很重要3)数据可以随时插入和删除其他客户端进入数据库4)没有必要将数据集视为实时(可更新)数据集

就个人而言,我认为上面的1和2已经通过约束解决方案空间满足要求来拼写我们的解决方案.

我提出的解决方案将数据(选择的数量)存储在只读存储/缓存中,在该存储/缓存中可以为结果集中的行号分配,并允许在此数据快照上进行分页.我将拥有存储快照的基础设施(服务器,外部缓存,memcached或ehcache - 这必须扩展得非常大).此类查询的结果将是快照ID,客户端可以使用快照API(Web服务)和快照ID从快照中检索数据.在x是合理的时间,结果将以只读,仅向前的方式处理x记录.

非常感谢竞争的想法和想法,批评或赞誉.

Jus*_*ner 1

Web 服务中的分页结果实际上很容易实现。

您所要做的就是向 Web 服务调用添加两个参数:页面大小、页码。

页面大小是页面中包含的结果数。页码是您要查找的结果的页码。

然后,您的 Web 服务返回到数据库(或缓存),检索结果,找出哪些结果适合请求的页面,然后仅返回这些结果。

然后,客户端必须对他们想要从服务中获得的每页结果发出一个请求。