"A ChannelFactory basically creates a Channel for WCF clients to communicate with WCF service endpoint".
In one of my previous WCF Interview Questions Tutorial Series, we discussed about the difference between using ChannelFactory and Windows Communication Foundation Proxy. Here in this WCF Tutorial, we are going to discuss about a new feature of Windows Communication Foundation v 4.5, i.e., "ChannelFactory Cache". WCF 4.5 now supports for caching Channel Factories to reduce overhead associated while creating a new
Before moving forward, let's first summarize what we have covered so far in this WCF 4.5 Tutorial Series.
ChannelFactory is a good option, if we have control over Client as well as Server because in case of
ChannelFactory, we have local interfaces (WCF Contract) on client to describe our WCF service.
Following is a simple code for creating a
static void Main(string args)
BasicHttpBinding cacheTestBinding = new BasicHttpBinding();
EndpointAddress cacheTestEndpoint = new
ChannelFactory<ICacheTestService> cacheTestChannelFac = new
var objChannel = cacheTestChannelFac.CreateChannel();
ChannelFactory in Windows Communication Foundation is a nice approach, there is resource overhead involved in creating
ChannelFactory instance. To avoid this overhead and boost performance, WCF developers were using some custom caching approach for
Now with WCF 4.5, built-in support available for
ChannelFactory Cache through
CacheSetting property of
ClientBase<T> class. Possible values of
CacheSetting property are:
Caching is always ON meaning all instances of
ClientBase<TChannel> within same app-domain will be using same
ClientBase<ICacheTestService>.CacheSetting = System.ServiceModel.CacheSetting.AlwaysOn;
With default means that only instances of
ClientBase<TChannel> created from configuration file endpoint will participate in caching. Others created programmatically will not participate. Also condition of same app-domain is applicable here.
ClientBase<ICacheTestService>.CacheSetting = System.ServiceModel.CacheSetting.Default;
No caching for all instances of
ClientBase<ICacheTestService>.CacheSetting = System.ServiceModel.CacheSetting.AlwaysOff;
Undoubtedly, this new feature in Windows Communication Foundation v4.5 is really helpful for WCF developers to manage support for caching
Previous <<< New Features in WCF 4.5 - Part 4
Other Related Tutorials That Might Be Of Interest