我对如何完成这项任务感兴趣。问题是,如何从Multiples托管服务器调用WCF服务。所有托管应用程序的WCF都是相同的。相同的合同,相同的绑定类型等等。我试图以这种方式调用它,因为我将在多个服务器中托管服务,我需要服务在所有这些服务中执行相同的操作。我必须从一个客户端调用它。 VS 2010,.Net Framework 4.0。,C#。
谢谢,
答案 0 :(得分:2)
这取决于您计划在客户端应用程序中创建服务代理的方式。如果要添加服务引用,只需从一个服务器添加它,然后为其他服务器创建单独的端点配置 - 除地址外,所有端点配置都完全相同(您可以在代码中执行相同操作)。当您调用服务时,您将为每个服务器创建代理实例,并且您将为每个服务器传递端点的名称(在配置中定义),如:
foreach(var endpointName in myStoredEndpointNames)
{
var proxy = new MyServiceProxy(endpointName);
proxy.CallSomeOperation();
}
另一种方法是不使用添加服务引用。在这种情况下,您必须在服务器和客户端应用程序之间共享合同,并且可以使用ChannelFactory。此类是通过调用CreateChannel
创建的客户端代理的工厂。调用此方法时,您可以传递端点配置名称endpoint address或binding 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”