动态地与多个Web服务通信

时间:2016-07-26 09:15:29

标签: c# web-services wcf asmx svc

我正在寻找一些关于如何完成一项工作的建议。基本上我有多个web服务,它们采用相同的方法和参数。总是必须获得代理类,并在接受新的提供程序时更改代码并且我正在寻找能够在我的配置中和运行时添加web服务URL的方法,能够编译生成代理是一件痛苦的事。类和动态地与远程机器通信。

作为一个例子:我必须将数据发送到一个名为UpdateCustomers(int id,string name,string surname,DateTime DateofBirth)的方法给提供者,如果我们决定使用提供者A能够在配置中更改webservice url指向A,或者我们决定改为B等......

网络服务是.asmx或.svc

我正在寻找提示和建议。

此致

1 个答案:

答案 0 :(得分:1)

听起来像是WCF Routing的工作。

根据您希望如何路由呼叫,您可以定义message filters,您可以使用它来评估来电是否符合一组条件,例如,soap有效负载中的某个值设置为特定值:

<filters>
    <filter name="myXPathFilter1" 
            filterType="XPath" 
            filterData="//valueIWantToFilterOn = somevalue"/>
</filters>

然后,您可以注册过滤器以映射到特定端点:

<filterTables>
    <table name="myRoutingTable">
        <filters>
           <add filterName="myXPathFilter1" endpointName="UpdateCustomers1" />
           <add filterName="myXPathFilter2" endpointName="UpdateCustomers2" />
           ...
        </filters>
    </table>
</filterTables>