web-services - 聚合来自 Windows Azure 中不同 Web 服务的并行结果

标签 web-services azure parallel-processing

Webservice1 可以接收一组经度/纬度变量。根据这些变量,它返回附近项目的结果集。

为了创建结果集,Webservice1 必须将变量传递给我们自己的多个 Web 服务和多个外部 Web 服务。所有这些 Web 服务都会返回一个结果集。这些辅助Webservices的结果集的组合就是Webservice1要返回的结果集。

Windows Azure 中考虑到成本和性能的最佳设计方法是什么?

我们是否应该按顺序从 Webservice1 向其他 Web 服务发送请求,等待响应并继续?或者我们可以使用一个队列来发布要由辅助 Web 服务拾取的变量吗?

最佳答案

我认为您已经在标题中回答了自己的问题。

我不担心使用队列。当处理时间长短无关紧要时,队列非常适合发送信息以供其他处理处理。由于您有一个正在等待返回结果的 Web 服务,因此这并不理想。

每次向其他每个 Web 服务发送一个请求是可行的,并且从技术上来说是最简单的选择,但它不会为您提供最佳性能。

在这种情况下,我将使用 Task Parallel Library 并行向每个其他 Web 服务发送请求。 。假设您返回的项目的顺序并不重要,您的代码可能看起来有点像这样。

    public List<LocationResult> PlacesOfInterest(LocationParameters parameters)
    {
        WebService[] webServices = GetArrayOfAllWebServices();

        LocationResult[][] results = new LocationResult[webServices.Count()][];

        // Call all of the webservices parallel
        Parallel.For((long)0,
                        webServices.Count(),
                        i =>
                        {
                            results[i] = webServices[i].PlacesOfInterest(parameters);
                        });

        var finalResults = new List<LocationResult>();

// Put all the results together
        for (int i = 0; i < webServices.Count(); i++)
        {
            finalResults.AddRange(results[i]);
        }

        return finalResults;
    }

关于web-services - 聚合来自 Windows Azure 中不同 Web 服务的并行结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5639321/

相关文章:

java - 当 XML 无法解析时,如何在 JBoss EAP 5 中捕获 JAX-RS 异常?

postgresql - 在 Azure PostgreSQL 灵活服务器中恢复数据库时出错 : 'extension "azure"is not allow-listed'

python-3.x - python-3.x中for循环的多核并行计算

r - 与 R 并行置换矩阵列

asp.net - 增加 IIS7 中 Web 服务的最大并发连接数(负载测试)

web-services - 为什么基于 SOAP 的 Web 服务不是 RESTful?

azure - 在 Azure DocumentDb 中,如何使用 LINQ to SQL 编写 "IN"语句

php - 在 azure web 应用程序上使用 laravel

parallel-processing - 多个接收器的 Spark 流并行处理

java - WrapperBeanGenerator 错误 : Not creating ASM Type for type