0
我正在编写一个基本的WPF GUI来连接到WCF服务并使用一个接口。到目前为止,我通过创建服务引用连接到测试系统,为我想要使用的测试服务添加URI,它找到了接口并通过服务引用为我创建了代理。拥有WCF服务代理可配置
当我运行GUI应用程序时,我希望这样做是为了让用户能够选择环境 - 开发,测试或生产,然后根据所选环境连接到相应的WCF服务。
我该怎么做?
我正在编写一个基本的WPF GUI来连接到WCF服务并使用一个接口。到目前为止,我通过创建服务引用连接到测试系统,为我想要使用的测试服务添加URI,它找到了接口并通过服务引用为我创建了代理。拥有WCF服务代理可配置
当我运行GUI应用程序时,我希望这样做是为了让用户能够选择环境 - 开发,测试或生产,然后根据所选环境连接到相应的WCF服务。
我该怎么做?
可以覆盖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
}
你有什么环境之间的区别是什么?只是服务的网址? GUI是否知道URL和环境之间的连接? – nvoigt 2014-09-23 09:25:29
只是服务URL是,它只会知道URL和环境之间的连接,如果我在配置中某处定义它 – NZJames 2014-09-23 09:26:46