.Net WCF RIA服务:转到页面还是不转到页面?以及要向管道发送多少数据

.Net WCF RIA服务:转到页面还是不转到页面?以及要向管道发送多少数据,.net,wcf,silverlight-4.0,wcf-ria-services,.net,Wcf,Silverlight 4.0,Wcf Ria Services,因此,我与同事就WCF RIA服务以及我们在给定请求中向客户发送多少数据进行了辩论。以下是设置: 我们正在Silverlight中创建一个报告应用程序,并从WCF RIA服务获取数据,以填充各种网格和图表。关于如何实现该服务,我们有两种不同的想法。有几个注意事项对做出这个决定很重要 警告1:一份报告可以是任意数量的表格/图表,但很可能每个都只包含几个 警告2:数据表的完整大小可能是数千行 警告3:有些表将包含50多个列,这不是我们的想法。。。。用户需要能够显示隐藏列,因为老实说,谁能一次吸收这么

因此,我与同事就WCF RIA服务以及我们在给定请求中向客户发送多少数据进行了辩论。以下是设置:

我们正在Silverlight中创建一个报告应用程序,并从WCF RIA服务获取数据,以填充各种网格和图表。关于如何实现该服务,我们有两种不同的想法。有几个注意事项对做出这个决定很重要

警告1:一份报告可以是任意数量的表格/图表,但很可能每个都只包含几个

警告2:数据表的完整大小可能是数千行

警告3:有些表将包含50多个列,这不是我们的想法。。。。用户需要能够显示隐藏列,因为老实说,谁能一次吸收这么多数据

我们有两个不同的想法:

为每个表/图表创建一个数据协定,并为每个表/图表创建一个单独的GetTableX/GetChartX服务方法。我们将为此使用域服务,以便在服务器上处理过滤/排序/分页,并且只返回一定数量的对象

因为一个报表可能包含n个表/图表,这意味着每次加载报表时都会发送n个请求,并为表上的每个页面发送一个额外的请求

该服务也会有些冗长,15个报告不可避免地会增加,每个报告可能有3-5个方法,这意味着45到75个方法

由于用户可以隐藏某些列,而某些列在默认情况下是隐藏的,因此可能会有相当数量的数据发送到客户端,而这些数据没有被事件查看。据我所知,没有办法用域名服务来限制这一点

为每个报表创建一个报表对象,其中包含网格/图表的集合,以及每个图表/表格的数据,并根据每个报表的通用条件进行筛选。序列化报表对象并将其传递回客户端,让Silverlight处理分页/排序/筛选

这意味着对服务器的请求会显著减少,但消息负载也会更大

我不确定,因为我还没有进行足够的调查,但我们可能必须深入研究WCF RIA服务,以使其发挥作用,否则我们最好还是放弃RIA,在WCF之上做我们自己的事情。然而,这将使我们能够灵活地选择在隐藏/显示列场景中需要发送到浏览器的列,这将降低整个行的总负载

tl;dr=一次将所有数据通过网络发送,还是分页发送

答案似乎很大程度上取决于有多少数据,但你们是如何做出决定的

请求中要发送多少数据?分页何时变得更高效?或者至少表面上对用户更有效**

从业务的角度来看,什么时候使用内置工具比使用自己的工具更好。假设你自己的效率更高,你如何衡量效率与额外工作的价值


在我们的应用程序中,我们有时会进行RIA调用,返回高达10Mb的数据,但从最简单的意义上讲是有效的,但在我们部署时确实会对我们造成不利影响,因为整个Web服务器HTTP浏览器堆栈中存在各种各样的限制,导致了问题。我说的是超时、缓冲区大小、最大请求大小等等。顺便说一句,增加RIA调用的超时不是一件简单的事情

为了减轻这些痛苦,我们开始在RIA中以较小的块获取大型调用。我们将有一个服务器端查询,执行时返回所需行的所有主键,例如10000个guid。然后在客户机上,我们使用RIA通过主键一次提取500个块中的对象

这给我们带来的最大好处是用户体验,因为我们可以显示加载了多少数据的进度条。分块也很有用,因为它使服务器的响应性更强。在一次调用中加载10mb数据会独占服务器,但在多个块中加载会使资源共享更加顺畅


希望这能有所帮助。

在我们的应用程序中,我们有时会进行RIA调用,返回高达10Mb的数据,但从最简单的意义上说,这是可行的,但在我们部署时,确实会对我们造成不利影响,因为整个Web服务器HTTP浏览器堆栈中存在各种限制,导致了问题。我说的是超时、缓冲区大小、最大请求大小等等。顺便说一句,增加RIA调用的超时不是一件简单的事情

为了减轻这些痛苦,我们开始在RIA中以较小的块获取大型调用。我们将有一个服务器端查询,执行时返回所需行的所有主键,例如10000个guid。然后在客户端上,我们使用RIA获取sa中的对象 一次按主键创建500个y块

这给我们带来的最大好处是用户体验,因为我们可以显示加载了多少数据的进度条。分块也很有用,因为它使服务器的响应性更强。在一次调用中加载10mb数据会独占服务器,但在多个块中加载会使资源共享更加顺畅

希望有帮助