我能否以编程方式连接到我的 Web 服务中的不同 WCF 端点?

Can I programmatically connect to a different WCF endpoint in my web service?

现在,我在一台机器上有一个 WCF Web 服务,该服务连接到另一台机器上的 WCF windows 服务,该服务执行所有数据处理。 Web 服务直接引用 windows 服务,所有配置信息都在 Web 和 app.config 文件中设置。

为了使其具有可扩展性,我希望 Web 服务能够连接到不同计算机上的多个 WCF windows 服务。例如,客户端 1 到 3 将在一个 windows service/machine 上处理所有数据处理,而客户端 4 到 6 将在单独的 windows service/machine.

我正在考虑这样实现;有一个 SQL 数据库将 WCF 端点存储到 clientID,Web 服务接收 clientID 并在 return 中获取 WCF 端点,然后 Web 服务连接到特定的 windows 服务使用该 WCF 端点。

这可行吗,或者有更好的方法来处理这个问题吗?我没有太多 WCF 经验,所以我可能走错了路。

谢谢。

WCF 支持管理客户端配置(通过配置文件)和编程客户端配置。你需要第二个。

这里是编程配置的例子:

Binding wsBinding = new WSHttpBinding();
EndpointAddress endpointAddress = new EndpointAddress("http://localhost:8000/SomeService");
SomeServiceClient proxy = new SomeServiceClient(wsBinding, endpointAddress);

proxy.SomeMethod();

proxy.Close();

通过 BindingEndpointAddress 类 进行程序配置,您可以获得与配置文件相同的灵活性。

如需进一步帮助,请参阅:

Binding Class

EndpointAddress Class

ClientBase Class