2014-09-23 115 views
0

我正在编写一个基本的WPF GUI来连接到WCF服务并使用一个接口。到目前为止,我通过创建服务引用连接到测试系统,为我想要使用的测试服务添加URI,它找到了接口并通过服务引用为我创建了代理。拥有WCF服务代理可配置

当我运行GUI应用程序时,我希望这样做是为了让用户能够选择环境 - 开发,测试或生产,然后根据所选环境连接到相应的WCF服务。

我该怎么做?

+0

你有什么环境之间的区别是什么?只是服务的网址? GUI是否知道URL和环境之间的连接? – nvoigt 2014-09-23 09:25:29

+0

只是服务URL是,它只会知道URL和环境之间的连接,如果我在配置中某处定义它 – NZJames 2014-09-23 09:26:46

回答

0

可以覆盖Endpoint这样的:

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

,你可以给它的另一种方式,就是写一个方法,也许扩展方法,接受服务合同和实现类。进一步,要么接受一个配置名称,或端点:

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

为了构建客户端,使用BaseClient<T>重载(from MSDN)之一。

要那么消耗的客户端,只需使用上述正常的方法:

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