从Multiples托管服务器调用相同的WCF服务

时间:2011-02-15 20:50:27

标签: c# wcf

我对如何完成这项任务感兴趣。问题是,如何从Multiples托管服务器调用WCF服务。所有托管应用程序的WCF都是相同的。相同的合同,相同的绑定类型等等。我试图以这种方式调用它,因为我将在多个服务器中托管服务,我需要服务在所有这些服务中执行相同的操作。我必须从一个客户端调用它。 VS 2010,.Net Framework 4.0。,C#。

谢谢,

2 个答案:

答案 0 :(得分:2)

这取决于您计划在客户端应用程序中创建服务代理的方式。如果要添加服务引用,只需从一个服务器添加它,然后为其他服务器创建单独的端点配置 - 除地址外,所有端点配置都完全相同(您可以在代码中执行相同操作)。当您调用服务时,您将为每个服务器创建代理实例,并且您将为每个服务器传递端点的名称(在配置中定义),如:

 foreach(var endpointName in myStoredEndpointNames)
 {
   var proxy = new MyServiceProxy(endpointName);
   proxy.CallSomeOperation();
 }

另一种方法是不使用添加服务引用。在这种情况下,您必须在服务器和客户端应用程序之间共享合同,并且可以使用ChannelFactory。此类是通过调用CreateChannel创建的客户端代理的工厂。调用此方法时,您可以传递端点配置名称endpoint addressbinding and endpoint address

答案 1 :(得分:1)

我使用这样的函数:

public static MyWcfClientType GetWcFClient(string hostName)
{
    MyWcfClientType client = new MyWcfClientType();

    // Build a new URI object using the given hostname
    UriBuilder uriBld = new UriBuilder(client.Endpoint.Address.Uri);
    uriBld.Host = hostName;

    // Set a new endpoint address into the client
    client.Endpoint.Address = new EndpointAddress(uriBld.ToString());
    return client;
}

当然使用您自己的类型作为“MyWcfClientType”