考虑以下代码,它是许多ChannelFactory示例的典型代表:
是否应该关闭ChannelFactory呢?我没有在许多示例中看到这一点。此外,如果可能的话,请解释一下打开通道和打开通道工厂之间的区别。
另外,我知道IDisposable问题,所以可以忽略它对答案的直接影响。
WSHttpBinding myBinding = new WSHttpBinding();
EndpointAddress myEndpoint = new EndpointAddress(
ConfigurationSettings.AppSettings["HelloWorldServiceURL"]);
ChannelFactory<IHelloWorldService> myChannelFactory =
new ChannelFactory<IHelloWorldService>(myBinding, myEndpoint);
IHelloWorldService proxy = myChannelFactory.CreateChannel();
((IClientChannel)proxy).Open();
HelloWorldDataContract dc = proxy.SayHello();
((IClientChannel)proxy).Close();
请注意,当调用proxy.Open()时,通道的状态和ChannelFactory的状态都会变为"Opened"。当调用proxy.Close()时,通道的状态变为"closed",但ChannelFactory的状态仍然是"Opened"。是否应该关闭ChannelFactory呢?我没有在许多示例中看到这一点。此外,如果可能的话,请解释一下打开通道和打开通道工厂之间的区别。
另外,我知道IDisposable问题,所以可以忽略它对答案的直接影响。