如何在SOA中处理操作返回的大列表

时间:2011-03-27 06:15:23

标签: .net wcf soa

我正在尝试遵循SOA方法来实现某些服务。我正在使用WCF,我想知道在操作中处理长列表的最佳方法/实践是什么。 例如,我有一个用户列表要返回UI(桌面客户端,而不是Web)。 如果我返回每个记录,列表可能会变得太大而无法从服务转移到客户端,并且可能发生许多错误(例如超出消息大小或连接丢失)。

有没有一种众所周知的方法来处理这种情况?

非常感谢 亚历克斯,

3 个答案:

答案 0 :(得分:0)

如果您对将要发送的数量有所了解,可以在客户端的app.config中增加消息大小限制,然后坚持下去。但是,如果没有理由,您不应该向每个客户发送50MB的客户记录。

如果用户一次只能浏览其中的一些,您可以抓取一些记录,然后在用户滚动列表时抓取更多记录。或者,您可以向用户询问搜索模式(如前两个字母),并且仅获取这些搜索模式。

答案 1 :(得分:0)

客户端是否需要所有数据(但您认为单个消息是大型的)还是只需要部分数据?

如果他不需要所有数据,更好的方法可能是为用户提供能够过滤的服务。

如果用户需要所有数据,那么“经典”解决方案将返回所有数据。 但是,当客户端是Web客户端等瘦客户端时,这可能会出现问题。

如果服务应该是通用服务(适用于其他客户端),我会使用自定义服务来包装它,该服务允许在每次调用中获得小的“数据块”。如果该服务不是通用的,并且是为该客户端定制的 - 我会更改基本服务以允许数据分块。

通常 - 具有“面向会话”的服务不是一种好方法,但客户端服务器与应用程序的交互不是典型服务,并且它通常在一般服务提供者和服务使用者之间具有更强的耦合。

答案 2 :(得分:0)

感谢大家的反馈。

我想我需要分页结果。该服务是一般用途。它旨在被任何应用程序(作为API)使用。

因此,最合适的方法应该是按块/页获取数据。 我可以在客户端应用程序(WPF)中读取一定数量的行。

亚历。