New Features in WCF 4.5 - Part 5





0/5 (0 vote)
New features in WCF 4.5
"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 ChannelFactory
instance.
Before moving forward, let's first summarize what we have covered so far in this WCF 4.5 Tutorial Series.
- New Features in WCF 4.5 - Part 1
- Simplified Generated Configuration
- Validating WCF Configuration
- New Features in WCF 4.5 - Part 2
- Single WSDL file
- Tooltip and Intellisense Support
- New Features in WCF 4.5 - Part 3
- ASP.NET Compatibility Mode default change
BasicHttpsBinding
- New Features in WCF 4.5 - Part 4
- Task-based Programming Model
Using 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 ChannelFactory
:
static void Main(string[] args)
{
BasicHttpBinding cacheTestBinding = new BasicHttpBinding();
EndpointAddress cacheTestEndpoint = new
EndpointAddress("http://localhost:XXX/CacheTestService.svc");
ChannelFactory<ICacheTestService> cacheTestChannelFac = new
ChannelFactory<ICacheTestService>
(cacheTestBinding, cacheTestEndpoint);
var objChannel = cacheTestChannelFac.CreateChannel();
Console.WriteLine(objChannel.MethodA());
objChannel.Close();
}
Although using 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 ChannelFactory
.
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:
System.ServiceModel.CacheSetting.AlwaysOn
System.ServiceModel.CacheSetting.Default
System.ServiceModel.CacheSetting.AlwaysOff
CacheSetting.AlwaysOn
Caching is always ON meaning all instances of ClientBase<TChannel>
within same app-domain will be using same ChannelFactory
.
ClientBase<ICacheTestService>.CacheSetting = System.ServiceModel.CacheSetting.AlwaysOn;
CacheSetting.AlwaysDefault
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;
CacheSetting.AlwaysOff
No caching for all instances of ClientBase<TChannel>
.
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 ChannelFactory
instances.
Previous <<< New Features in WCF 4.5 - Part 4
Other Related Tutorials That Might Be Of Interest
- Top 10 WCF Interview Questions and Answers
- MVC3 Vs MVC4 Vs MVC5
- Step by Step creating WCF REST service
- Consuming a WCF RESTful service using jQuery
- Top 10 HTML5 Interview Questions and Answers
- Practical guide to WCF RESTful Service
- ASP.NET Interview Questions and Answers
- Difference between ASP.NET WebForms and ASP.NET MVC
- Top 10 ASP.NET MVC Interview Questions