WCF Interview Questions – Part 2

By | September 15, 2012

This WCF tutorial is part-2 in series of WCF Interview Questions. Other parts in this series can be found here.

  1. WCF Service Interview Questions – Part 1
  2. WCF Service Interview Questions – Part 2
  3. WCF Service Interview Questions – Part 3
  4. WCF Service Interview Questions – Part 4

MCSD Exam: 70-487

WCF Interview Questions List – Part 2

What are the different ways to expose WCF Metadata?

By default, WCF doesn’t expose metadata. We can expose it by choosing one of the following ways:
1.    In configuration file, by enabling metadata exchange as follows:Expose WCF Service Metadata
2.  ServiceHost can expose a metadata exchange endpoint to access metadata at runtime.

   using (ServiceHost host = new ServiceHost(typeof(WcfService1)))
   {
              ServiceMetadataBehavior behavior = new ServiceMetadataBehavior();
              behavior.HttpGetEnabled = true;
              host.Description.Behaviors.Add(behavior);
              host.Open();
              Console.WriteLine(“My Service here……….”);              Console.ReadLine();
              host.Close();
   }

Back to top

What is mexHttpBinding in WCF?

In order to generate proxy, we need service metadata and mexHttpBinding is the binding that returns service metadata.

If we look into our configuration file, service will have an endpoint with mexHttpBinding as follows:mexHttpBinding

and service metadata behavior will be configured as follows:httpGetEnabled

Before deployment of application to production machine, it should be disabled.
In order to support other protocols, related bindings are:

  • mexHttpBinding
  • mexHttpsBinding
  • mexTcpBinding

Back to top

What is a Service Proxy in Windows Communication Foundation?

A service proxy or simply proxy in WCF enables application(s) to interact with WCF Service by sending and receiving messages. It’s basically a class that encapsulates service details i.e. service path, service implementation technology, platform and communication protocol etc. It contains all the methods of service contract (signature only, not the implementation). So, when the application interact the service through proxy, it gives the impression that it’s communicating a local object.
WCF Service ProxyWe can create proxy for a service by using Visual Studio or SvcUtil.exe.
Back to top

What are the different ways to generate proxy in WCF?

Generating proxy using Visual Studio is simple and straight forward.

  • Right click References and choose “Add Service Reference”.
  • Provide base address of the service on “Add Service Reference” dialog box and click “Go” button. Service will be listed below.
  • Provide namespace and click OK.

Visual studio will generate a proxy automatically.

We can generate proxy using svcutil.exe utility using command line. This utility requires few parameters like HTTP-GET address or the metadata exchange endpoint address and a proxy filename i.e. optional.
svcutil http://localhost/MyService/Service1.svc /out:MyServiceProxy.cs

If we are hosting the service at a different port(other than default for IIS which is 80), we need to provide port number in base address.
svcutil http://localhost:8080/MyService/Service1.svc /out:MyServiceProxy.cs
For parameter details regarding svcutil, please follow the MSDN link
http://msdn.microsoft.com/en-us/library/aa347733.aspx

Please follow here for a complete detailed WCF Tutorial on creating Service Proxy

Back to top

Difference between using ChannelFactory and Proxies in WCF?

A ChannelFactory creates a kind of Channel used by clients to communicate with service endpoints. If we have control over Server and Client, then ChannelFactory is a good option because it relies on having local interfaces that actually describes the service i.e. service contract.

On the other hand, If we don’t have control over server and only have WSDL/URL, then it’s better to generate proxy using Visual Studio or SvcUtil. SvcUtil is better option as compared to Visual Studio because we have more control in case of SvcUtil.

Back to top

How to create proxy for Non-WCF Services?

In case of Non-WCF Services, we can create proxy by either using Visual Studio or svcUtil.exe tool by pointing to WSDL of the non-WCF service. In this scenario, we can’t create proxy through ChannelFactory or manually developing proxy class because we don’t have local interfaces i.e. service contract.

Back to top

Breifly explain Automatic Activation in WCF?

Automatic activation means service starts and serves the request when a message request is received, but service doesn’t need to be running in advance.

Both IIS (Internet Information Services) and WAS (Windows Activation Service) supports automatic activation. It means if your service is hosted in IIS or WAS, then it will be activated automatically as a new message
arrives. But there are few scenarios in which service needs to be running in advance, for example, in case of Self-
Hosting.Automatic Activation in WCF

Note: WAS (Windows Activation Service) is a process activation mechanism introduced in IIS 7.0 that supports other protocols (e.g. TCP, NamedPipes etc.) along with existing HTTP.

If you want to go into details and see the implementation of different available hosting options in WCF, you can follow the below WCF Service Hosting Tutorials.

Back to top

What are the different WCF Instance Activation Methods available?

WCF supports three different types of Instance Activation methods:

  • Per Call: A new instance is created against each incoming request from client and later disposed off  as response generated.WCF PerCall
  • Per Session: an instance for each session.WCF Per Session
  • Singleton: All incoming requests are served by only one instance.WCF Singleton mode

For details on WCF Instance Management, please refer other article “3 techniques for Instance Management in WCF”.

Back to top

What are the different ways to handle concurrency in WCF?

There are three different ways to handle concurrency in WCF that are:

  • Single
  • Multiple
  • Reentrant

Single: means at a given time, only a single request can be processed by WCF service instance. Other requests will be waiting until the first one is fully served.
Multiple: means multiple requests can be served by multiple threads of a single WCF service instance.
Reentrant: means a single WCF service instance can process one request at a given time but the thread can exit the service to call another service.
We can apply these concurrency settings by putting ConcurrencyMode property in ServiceBehavior as follows:

[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple] public class MyService : IMyService
{
}

Back to top

What is WCF throttling?

WCF throttling enables us to regulate the maximum number of WCF instances, concurrent calls and concurrent sessions. Basic purpose is to control our WCF service performance by using Service throttling behavior.

In configuration file we can set this behavior as follows:

   <serviceBehavior>
        <behavior name=”MyServiceBehavior”>
                    <serviceThrottling
                                     maxConcurrentInstances=”2147483647”
                                     maxConcurrentCalls=”16″
                                     maxConcurrentSessions=”10″
         </behavior>
   </serviceBehavior>

Above given values are the default ones, but we can update it after looking into the requirements of our application.

Back to top

Previous: WCF Service FAQs Part-1                                    Next: WCF Service FAQs Part-3

Top 10 Interview Questions and Answers Series: