我正在使用一个定期从Web服务获取数据的应用程序。问题是,Web服务不会公开一种方法来获取一段时间内的数据。所以我必须获取所有数据并删除过时的条目。我认为当返回数据的规模变大时,这将是一个问题。反正有没有提高性能?提前谢谢!
答案 0 :(得分:1)
增强应该发生在Web服务方面。 您只能调用服务公开的方法,如果服务总是返回所有数据,那么如果您使用SOAP,所有数据都将被包装到SOAP enveloppe中,并通过线路传输,您无法做到最后据我所知,提高这方面的表现。
另请注意,由于这一点,您将获得2次性能点击,首先是因为需要传输的数据会随着时间的推移而增长,导致下载时间更长,其次您需要解析更多数据。
答案 1 :(得分:1)
如果可能,您应该有一个重载方法,您可以通过startDate和endDate。
如果无法做到这一点,那么最好的办法就是找到获取数据并过滤数据的最快方法。 如果我假设您从WS方法获取数据表,您可以编写一个LINQ查询来根据日期范围列进行过滤,然后批量加载到您的目的地。如果它是MS Sql Server,您在其中加载数据,您可以在第一步中执行SQLBulkCopy。必须有类似的方法来做这个批量加载。
初始加载完成后,您可以通过对源表进行适当的索引来将数据加载到表中。
问题非常关注您可能从WS获得的数据量,您将加载数据的目的地是什么,可以用于数据区/写入的最优化驱动程序是什么以及是否可以修改WS与否(我不是从你的问题中推测)。 如果你让我更多地了解这些事情,我可以给出一个具体的答案,以提高你的负载性能。