WCF 分页结果和数据导出

问题描述 投票:0回答:2

我参与了一个在数据层使用 WCF 服务的项目。 目前,当网格需要数据时,将返回所有行,并将结果绑定到网格,并将数据集填充到会话变量中以进行分页/排序/重新绑定。 我们已经遇到了最大消息大小问题,所以我认为是时候从获取和缓存转换为仅获取当前页面了。

从表面上看,这似乎很容易,但有一个小问题。 用户可以随时导出整个结果集。 这意味着出于网格查看的目的,获取当前页面是可以的,但是当他们想要导出时,我仍然需要调用所有数据。

这让我又回到了最大消息大小问题。 对于这种类型的设置,推荐的方法是什么?

我们目前正在使用 wsHttpBinding...

感谢您的帮助。

wcf pagination export
2个回答
2
投票

我认为对于大文件的推荐方法是使用 WCF 流。 我不确定您的场景的确切细节,但您可以将此作为起点:

http://msdn.microsoft.com/en-us/library/ms789010.aspx


2
投票

在你的情况下我可能会做这样的事情

  • 使用“分页”GetData() 方法创建服务 - 您可以在其中指定页面索引和页面大小作为附加参数。这应该为您提供一个适合“常规”使用的漂亮干净的界面,并且不应达到 maxMessageSize 限制

  • 创建第二个服务(或方法)来发送所有数据 - 理想情况下,您可以在发送之前将其捆绑到服务器上的 ZIP 文件或其他内容中。如果该 ZIP 文件仍然太大,您可能需要检查 WCF 流来处理大文件,正如 Andy 已经指出的那样

设置 maxMessageSizeLimit 是有充分理由的:避免拒绝服务攻击,在这种情况下,WCF 服务会被大量消息淹没,从而瘫痪。如果可以的话,请始终牢记这一点,不要只是将 maxMessageSize 提高到 2 GB - 它可能会反过来咬你:-)

© www.soinside.com 2019 - 2024. All rights reserved.