This文章描述了使用TCP的Windows服务中的主机WCF热门
在机器上安装服务后,我构建了简单的Console Application Project
和Add Service Reference
。
直到这里它都清晰,即使从同一网络上的另一台计算机也能正常工作。
我的问题是,如果我在几台机器上安装我的服务,每台机器使用不同的IP地址,当然我如何测试我的客户端应用程序?
我是否需要多个Console Application Projects
并且每个Add Service Reference
使用不同的IP地址(App.config)?
答案 0 :(得分:3)
这取决于你想要完成的事情。如果它是部署到所有计算机的相同服务,那么您可以使用相同的服务引用,因为您将使用相同的生成合同。您需要更改的是要连接到哪台计算机,您将在app.config的服务客户端部分中更改这些计算机。只要所有服务使用相同版本的合同,您就可以将连接交换到您喜欢的任何一个。您确实需要指定一个,而不是几个。如果要进行负载平衡,则需要单独执行此操作。
如果您部署的服务在合同中不相同,那么您需要添加更多服务引用,每个服务引用用于合同中的每个变体。
编辑:鉴于我们要在运行时设置客户端端点地址,但假设我们已使用服务引用工具生成了客户端代理(MyServiceClient
):
using
一个完整的例子,正确处理客户端:
void MakeCall(Uri serviceEndpoint) {
var address = new EndpointAddress(serviceEndpoint);
using(var client = new MyServiceClient(address)) {
client.MakeCallToSomeServiceFunction();
}
}
然后,您可以使用类似MakeCall(new Uri("http://mymachine:8080"))
的内容来调用它,或者从某个UI获取输入。