似乎有两种实例化WCF服务代理的方法,描述在这里。我的问题是为什么要使用ChannelFactory来实例化WCF代理,以及采用这种方法的好处是什么?
我遇到过对第二个选项有强烈看法的人,但我无法理解他们的清晰论证。
似乎有两种实例化WCF服务代理的方法,描述在这里。我的问题是为什么要使用ChannelFactory来实例化WCF代理,以及采用这种方法的好处是什么?
我遇到过对第二个选项有强烈看法的人,但我无法理解他们的清晰论证。
web.config
/ app.config
文件中提供的配置设置来实例化代理,但在某些情况下,在该文件中放置这些设置是不可行的。例如,如果您的应用程序需要根据场景使用不同的绑定(例如HTTP与命名管道),或者可能您的应用程序甚至没有.config文件。
第二种选项在创建代理时通过编程方式指定要使用的配置,从而提供了更多的灵活性。
为了给出更具体的示例,假设您希望在与本地机器通信时使用命名管道进行通信,而在与远程主机通信时使用HTTP:
if (UseNamedPipes())
{
EndpointAddress address = new EndpointAddress("net.pipe://localhost/Simple/BankService");
return ChannelFactory<IBank>.CreateChannel(new NetNamedPipeBinding(), address);
}
else
{
EndpointAddress address = new EndpointAddress("http://localhost:8000/Simple/BankService");
return ChannelFactory<IBank>.CreateChannel(new BasicHttpBinding(), address);
}
在开发任何办公室插件或Visual Studio插件项目时,可能会遇到没有app.config文件的特定情况。
此外,在组织中,您希望标准化某些绑定和某些端点安全模式。您希望创建一个API,使开发人员可以轻松地使用它来创建代理,在这种情况下,您将使用channelfactory封装所有绑定信息。