Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/294.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# 组合/聚合许多底层服务响应的WCF路由器_C#_.net_Wcf_Wcf Configuration_Wcf Routing - Fatal编程技术网

C# 组合/聚合许多底层服务响应的WCF路由器

C# 组合/聚合许多底层服务响应的WCF路由器,c#,.net,wcf,wcf-configuration,wcf-routing,C#,.net,Wcf,Wcf Configuration,Wcf Routing,我有一个WCF路由服务和两个底层服务。我想要做的是将来自两个后端服务的响应组合起来,并返回一个聚合响应(由路由器调用的两个服务中的每一个组成) 这两个服务都返回字符串数组。例如,如果第一个服务返回newstring[2]{“red”,“green”},第二个服务的结果是newstring[2]{“table”,“chair”},那么从路由器返回到客户端的整个最终响应是newstring[4]{“red”,“green”,“table”,“chair”} 提前谢谢 除非我在你的问题中遗漏了什么,否

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

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


提前谢谢

除非我在你的问题中遗漏了什么,否则以下是你正在寻找的东西吗

假设一个名为GetAggregatedResponse的WCF服务方法:

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路由服务实现的问题。这是WCF 4.0中的新功能。类
System.ServiceModel.Routing.RoutingService
负责此目的,我认为您不能使用内置RoutingService来实现此目的。从文档中可以看出:“通道形状不能是request-reply,因为客户端应用程序只能收到一个响应请求的回复。”我认为要包含这种逻辑,您需要编写自己的“路由”WCF服务,手动调用底层服务。