1

在一个数据库中,我有 30k 个用户,每个用户都有一个指定的电话号码。对于每个电话号码,我将调用一个 Web 服务,该服务会为用户提取一些信息。很多用户没有在webservice中呈现,所以我只会收到null,但我不知道哪些用户,并且可以不时呈现新用户。网络服务会实时更新,所以新的结果会时不时出现。如果响应不为空,并且收到的文件与上次收到的文件不同,我会从收到的 XML 文件创建一个 PDF 文档。

Web 服务调用由计划任务启动,该任务启动具有以下伪代码的 .aspx 站点:

Foreach phonenumber {
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create("webservice/phonenumber");

using (StreamReader reader = new StreamReader(webResponse.GetResponseStream()))
    {
        makePdf();
    }
}

当然,问题是请求需要很长时间。对于 30k 用户来说,大约需要 7 个小时。我曾尝试查看异步 Web 服务调用,但无法正常工作。有人可以指出我正确的方向 - 如果可能的话 - 或者告诉我应该如何去做?

谢谢

4

2 回答 2

0

首先,您应该检查时间是在 Web 服务中还是在 PDF 创建中。如果它在网络服务中,请检查您是否缺少索引等。为了改进网络服务,您可以同时获取多个电话号码。如果您的问题出在 PDF 创建中,请找到一种方法来改进 pdf 的创建。目前尚不清楚您使用什么工具来创建 pdf。

于 2012-05-29T08:08:10.033 回答
0

为什么您的服务不能只实现一个接受时间戳参数并返回自该时间戳以来更改的用户列表(或数组)的方法。这样,您应该只能为这些用户发送请求。

于 2012-05-30T08:56:35.953 回答