如何从多台计算机添加服务引用

时间:2013-10-21 20:33:10

标签: c# wcf

This文章描述了使用TCP的Windows服务中的主机WCF热门 在机器上安装服务后,我构建了简单的Console Application ProjectAdd Service Reference。 直到这里它都清晰,即使从同一网络上的另一台计算机也能正常工作。 我的问题是,如果我在几台机器上安装我的服务,每台机器使用不同的IP地址,当然我如何测试我的客户端应用程序? 我是否需要多个Console Application Projects并且每个Add Service Reference使用不同的IP地址(App.config)?

1 个答案:

答案 0 :(得分:3)

这取决于你想要完成的事情。如果它是部署到所有计算机的相同服务,那么您可以使用相同的服务引用,因为您将使用相同的生成合同。您需要更改的是要连接到哪台计算机,您将在app.config的服务客户端部分中更改这些计算机。只要所有服务使用相同版本的合同,您就可以将连接交换到您喜欢的任何一个。您确实需要指定一个,而不是几个。如果要进行负载平衡,则需要单独执行此操作。

如果您部署的服务在合同中不相同,那么您需要添加更多服务引用,每个服务引用用于合同中的每个变体。

编辑:鉴于我们要在运行时设置客户端端点地址,但假设我们已使用服务引用工具生成了客户端代理(MyServiceClient):

  1. 使用您的输入
  2. 创建端点地址
  3. 让客户到达该地址
  4. 拨打电话,确保之后关闭您的客户,或者最好包裹using
  5. 一个完整的例子,正确处理客户端:

    void MakeCall(Uri serviceEndpoint) {
        var address = new EndpointAddress(serviceEndpoint);
        using(var client = new MyServiceClient(address)) {
            client.MakeCallToSomeServiceFunction();
        }
    }
    

    然后,您可以使用类似MakeCall(new Uri("http://mymachine:8080"))的内容来调用它,或者从某个UI获取输入。