Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提高从web服务加载列表的速度_C#_Asp.net_Rest - Fatal编程技术网

C# 提高从web服务加载列表的速度

C# 提高从web服务加载列表的速度,c#,asp.net,rest,C#,Asp.net,Rest,这是: 问题很简单。我需要从控制多个表的RESTWeb服务调用方法。一个表是快照表,其中包含包含大量XML文件的记录。每个XML文件基本上都是另一个数据库的备份。然后将此备份XML发送给在其他产品中将数据用作只读信息的客户。基本上,XML中的数据是公司、产品、业务规则等的列表。不,这些客户大部分时间都是离线工作,因此无法实时获取数据。 浏览快照列表很棘手:XMLData.snapshots.Skip(N).Take(1.First()但它工作得非常好。这是上一个问题的答案。 但我还需要浏览另外三

这是:
问题很简单。我需要从控制多个表的RESTWeb服务调用方法。一个表是快照表,其中包含包含大量XML文件的记录。每个XML文件基本上都是另一个数据库的备份。然后将此备份XML发送给在其他产品中将数据用作只读信息的客户。基本上,XML中的数据是公司、产品、业务规则等的列表。不,这些客户大部分时间都是离线工作,因此无法实时获取数据。
浏览快照列表很棘手:
XMLData.snapshots.Skip(N).Take(1.First()但它工作得非常好。这是上一个问题的答案。
但我还需要浏览另外三个数据列表。这些被称为更改、错误和消息。它们包含(1)对数据的更改,(2)修改数据期间发生的错误和(3)一般消息。所有这些记录都链接到快照记录。因此,一个快照可以包含多个更改、错误和消息。
我仍然无法访问服务器代码,但由于实体框架周围有一个REST服务,公开了大部分功能,所以我仍然可以使用该服务。(这项服务只能在内部网络上访问。这基本上是我必须处理的。虽然更改、错误和消息的列表相对较小,但快照仍然很大


问题是,我现在想生成一个关于更改、错误和消息的客户端报告,但不想按快照对它们进行分组!它们需要按日期分组。但每个记录还需要显示快照的标题,这让我感到非常头疼…
例如,当使用常规foreach指令浏览更改时,我可以使用
XMLData.LoadProperty(更改,“快照”);
加载快照数据,但由于快照记录本身通常约为300 MB,这只会将整个过程拖慢到爬行状态。(总共有成千上万条这样的记录!)因此,我需要一个更快的解决方案,而无需修改服务器代码。

有什么建议吗?

是的,好的。修改服务器是正确的方法,但这是不可能的。它正在生产中,此列表不重要,不需要升级服务器。基本上,目前不允许我修改任何服务器代码。(但他们仍然需要此列表。)



一些额外的复杂性…我正在处理的应用程序每周或每月只需要运行一次。但根据当前的记录量,我估计需要两天以上才能完成。数据本身将在每个办公日更新几次,并且每周左右在服务器上创建快照。错误总是可以在用户开始浏览维护数据的网站时生成,但一般来说,每周大约会有50个更改和4个错误,并且在服务器再次宕机或生成快照时会出现一些消息。

您可以让另一个web服务缓存第一个站点的数据,或访问同一数据源吗

一个选项是维护另一个客户端数据文件,该文件包含相同的数据,但按日期排序。这可以在单独的线程中异步生成和更新,以免影响您的主应用程序。每当用户想要生成rport时,您都需要检查该数据文件是否可用于读取和perhaps锁定了它


这应该能够处理数以万计的记录。但您必须确保输入健壮的代码以保持两组数据同步,如果您不确定,请将来自服务器的数据视为“黄金副本”.

我无法创建另一个访问原始数据源的服务。要缓存数据,我不需要第二个web服务。只能通过连接到服务器上实体模型的REST服务。问题是,尽管我可以获取快照表的主键,但在检索错误、消息或更改时,我不需要快照记录的外键,但与快照本身的直接链接!服务以某种方式为我隐藏了此键。如果我有该键值,我确实可以将所有内容发送给客户端。不幸的是,我有更改。快照、错误。快照和消息。快照,所有快照类型…您将需要迭代确实返回的数据建立你自己的DateTime/值对集合,其中值是你自己设计的一个类,包含该日期的数据,专门为你的报告设计。这可能是一个字典。这将是计算密集型的,这就是为什么我建议你在数据到达bac后立即在单独的线程中启动它k。发布一些类定义可能会让您有所收获。