具有可配置的WCF服务代理

本文关键字:WCF 服务 代理 配置 | 更新日期: 2023-09-27 18:23:57

我正在编写一个基本的WPF GUI来连接到WCF服务并使用一个接口。到目前为止,我已经通过创建服务引用连接到测试系统,输入我想要使用的测试服务的URI,它找到接口并通过服务引用为我创建代理。

当你运行GUI应用程序时,我希望它能让用户选择一个环境——开发、测试或生产,然后让GUI根据所选的环境连接到适当的WCF服务。

我该怎么做?

具有可配置的WCF服务代理

您可以这样覆盖Endpoint

client.Endpoint.Address = new EndpointAddress(GetAddressForCurrentMode())

另一种方法是编写一个方法,可能是一个扩展方法,接受服务契约和实现类。此外,它要么接受配置名称,要么接受端点:

public static TClient GetServiceClient<TClient, TContract>(string endpoint)
    where TClient : ClientBase<TContract>
{
   // Construct client
}

要构建客户端,请使用BaseClient<T>重载之一(来自MSDN)。

要消费客户端,只需正常使用上面的方法:

using(var client = ServiceInterop.
    GetServiceClient<MyClient, IMyContract>("http://foo.bar"))
{
    // Consume client
}