【问题标题】:WCF Router that combines / aggregates many underlying service responses组合/聚合许多底层服务响应的 WCF 路由器
【发布时间】:2015-04-01 15:46:53
【问题描述】:

我有一个带有两个底层服务的 WCF 路由服务。我想要做的事情是结合来自两个后端服务的响应并返回一个聚合响应(由路由器调用的两个服务中的每一个组成)。

这两个服务中的每一个都返回字符串数组。例如,如果第一个服务返回new string[2] { "red", "green" },而第二个服务的结果是new string[2] { "table", "chair" },那么从路由器返回客户端的整个最终响应是new string[4] { "red", "green", "table", "chair" }

提前致谢!

【问题讨论】:

    标签: c# .net wcf wcf-configuration wcf-routing


    【解决方案1】:

    除非我从您的问题中遗漏了某些内容,否则您正在寻找以下内容吗?

    假设 WCF 服务方法名为 GetAggregatedResponse:

    public string[] GetAggregatedResponse()
    {
        string[] service1Response = callService1AndGetResult();
        string[] service2Response = callService2AndGetResult();
        string[] aggregatedResponse = service1Response.Concat(service2Response).ToArray();
        // Or if you would like to remove duplicates from the results:
        // string[] aggregatedResponse = service1Response.Union(service2Response).ToArray();
        return aggregatedResponse;
    }
    

    【讨论】:

    • 这正是我想做的事情。此外,如果没有 WCF 路由服务,我会这样做。这笔交易是强制 WCF 路由服务汇总/聚合/组合这两个请求。这是因为我有两个 WCF 服务和路由器作为前端。如果有任何误解,请告诉我。
    • 我不太明白。如果您的 WCF 路由服务是“面向客户端”的,那不能只调用其实现中的其他服务,然后将结果组合起来吗?
    • 没有WCF Routing service implementation的东西。这是 WCF 4.0 中的新功能。 System.ServiceModel.Routing.RoutingService 类负责这个目的,
    • 我不认为你可以使用内置的 RoutingService 来做到这一点。来自文档:“通道形状不能是请求-回复,因为客户端应用程序只能收到一个回复​​来响应请求。”我认为要包含这种逻辑,您需要编写自己的“路由”WCF 服务,该服务手动调用您的底层服务。
    猜你喜欢
    • 2012-05-23
    • 2018-08-23
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多