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

.net 如何在SOA中处理操作返回的大列表,.net,wcf,soa,.net,Wcf,Soa,我试图遵循SOA方法来实现一些服务。我正在使用WCF,我想知道在操作中处理长列表的最佳方法/实践是什么。 例如,我有一个要返回UI的用户列表(桌面客户端,而不是Web)。 如果我返回每一条记录,列表可能会变得太大,无法从服务传输到客户机,并且可能会发生许多错误(如超过消息大小或连接中断) 有没有一种众所周知的方法来处理这种情况 非常感谢 Alex,如果你知道要发送多少,你可以增加客户端app.config中的消息大小限制,然后发疯。但你不应该无缘无故地向每个客户发送50MB的客户记录 如果用户一

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

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

非常感谢
Alex,

如果你知道要发送多少,你可以增加客户端app.config中的消息大小限制,然后发疯。但你不应该无缘无故地向每个客户发送50MB的客户记录


如果用户一次只能浏览其中的一些记录,那么您可以获取一些记录,然后在用户滚动列表时获取更多记录。或者,您可以要求用户提供搜索模式(如前两个字母),然后只抓取它们。

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

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

如果用户需要所有数据,那么“经典”解决方案就是返回所有数据。 但是,当客户机是一个瘦客户机(如web应用程序)时,这可能会有问题

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


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

谢谢大家的反馈

我想我需要公布结果。这项服务是通用的。任何应用程序都可以使用它(作为API)

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


Alex。

应用程序是否需要每次调用的完整列表?有一种方法:按页返回结果。您能回答吗?