在我的应用程序中,我想从WCF服务(托管为Windows服务)返回一组对象,以填充WPF应用程序中的DataGrid。根据所调用的方法,集合中的对象数量范围从一到几百。
我很好奇是处理从服务中返回大型馆藏的“最佳”方式。
这些是我见过的建议:
yield
关键字做一些事情,但这已经过去了,我无法遵循它。 : - / 处理此任务的最佳方法是什么?为什么?
答案 0 :(得分:4)
增加最大邮件大小并将所有对象返回到一个中 走。这似乎是一个坏主意,因为可能会有一个 我需要返回2GB以上数据的时间。
绝对不是一个好的选择,除非您确定您的数据永远不会超过您设置的新限制。否则你只需将问题推回原处,并在几个月后再次使用。 2Gb已经很多了(想想你的用户会等多久)
重复记录并反复调用该方法直至全部 已检索到对象。我见过这个建议用于ASP.NET 项目,但我不知道它对桌面应用程序的效果如何。
最常见且最明显的方法是,您可以使用分页并仅查询每个页面上定义数量的元素。我无法理解你关于“桌面应用”的问题?这里的相关概念是客户端/服务器。 您的客户端(桌面应用程序)需要查询服务器以显示页面内容(如果使用分页)。如果您的客户是一个网页,那么这个概念仍然是相关的。
使用流。说实话,我不明白这是如何运作的 它似乎是用于转移大型单个物体 比许多小的。
我猜你读的是“管理你自己的流”。简而言之,您可以将任何流视为位流,并在您的客户端根据需要进行解释。我当然不会建议这样做,除非你确实有特定的转移问题(并且有大量的转移对象肯定不够具体)。有一些非常大的传输对象可能是特定的,但即使在这里,我也会以这种方式挑战实现。
使用yield关键字做一些事情,但这已经超出了我的想法 我无法遵循它。 : - /
对不起,我不在这里关注你,但产量只是语法糖,所以我不认为这与解决你的问题有关。仍然要看一下这个概念: What is the yield keyword used for in C#?