Hosting WCF Service with netTcpBinding in Windows Service

No.of Views1332
Bookmarked0 times
Downloads 
Votes0
By  Dhananjay Kumar   On  25 Jun 2010 23:06:31
Tag : WCF , Utilities
Hosting WCF Service with netTcpBinding in Windows Service
emailbookmarkadd commentsprint

Images in this article missing? We recently lost them in a site migration. We're working to restore these as you read this. Should you need an image in an emergency, please contact us at info@codegain.com

 

Objective

This article will explain

1.    How to create a WCF service with netTcpBinding ?
2.    How to host the WCF service in Windows service ?
3.    How to start windows service ?
4.    How to consume the service ?

You can see video of this article Here

Create WCF Service

Step 1

Create a WCF Library project. 

Image Loading

Step 2

Create Contract.  Delete all the default code generated by WCF for you. And create a contract as below,

Image Loading

 Step 3

Implement the Service .

Image Loading

 Step 4

Configure End Point for the service on netTcp Binding.

  • Configure Service Behavior
  • Image Loading
  • Configure  end point with netTcpBinding
  • Image Loading
  • Configure the meta data exchange end point
  • Image Loading

Note: Make sure, you are providing name of the endpoints. Else you will catch up with run time exception   while adding the service at client side.

Full App.Config of WCF library project will look like,

<?xml version="1.0" encoding="utf-8" ?><configuration><system.web><compilation debug="true" /></system.web><system.serviceModel><services><service name="NetTcpServicetoHostinWindowsServices.Service1" behaviorConfiguration ="MyBehavior"><host><baseAddresses><add baseAddress = "net.tcp://localhost:9999/Service1/" /></baseAddresses></host><endpoint name ="NetTcpEndPoint"address =""binding="netTcpBinding"contract="NetTcpServicetoHostinWindowsServices.IService1"></endpoint><endpoint name ="NetTcpMetadataPoint"address="mex"binding="mexTcpBinding"contract="IMetadataExchange"/></service></services><behaviors><serviceBehaviors><behavior name ="MyBehavior"><serviceMetadata httpGetEnabled="False"/><serviceDebug includeExceptionDetailInFaults="False" /></behavior></serviceBehaviors></behaviors></system.serviceModel></configuration>

Create Windows Service

Step 1

Right click and add a new project in same solution. Choose the project type Windows Services from windows tab.

Image Loading

 Step 2

Right click on Windows service project and add reference of

  1. System.ServiceModel
  2. Project reference of WCF Library project created in previous step
Image Loading

 

Image Loading

 

Step 3

Copy App.Config from WCF Service Library project and paste in Windows service project. To do so right click on App.config in WCF Library project and select copy then right click on Windows Service project and click on paste.

Image Loading

 

Image Loading

 After copy and paste of APP.Config , we can see App.Config file in Windows Service Project also.

Image Loading

Step 4

Add Service Installer. To do so right click on Service1.cs in windows service project and click on view designer.

Image Loading

 Once designer page is open, right click on designer page and click on add installer

Image Loading

 Once we will right click on design surface of Service.cs file and click add Installer, it will add ProjectInstaller.cs file.

Image Loading

 Right click on the ProjectInstaller.cs file and select view designer.

Image Loading

 On designer page, we can see there is ServiceProcessInstaller1 and serviceInstaller1 is there. Right click on ServiceProcessInstaller1 and select properties. In properties set the Account attribute to NetworkServices

Image Loading

 Right click on ServiceInstaller1 and select properties. In properties set the Start Type attribute to Automatic

Image Loading

 

Step 5

Modify Window service to host the WCF service. To do, open Service1.cs file in Windows service project.

  1. Add the below name spaces
  2. Image Loading
  3. Declare a variable
  4. Image Loading
    Image Loading
  5. On Start method of Window service
  6. Image Loading
  7. On Stop method of Window service
  8. Image Loading
  9. On  the event of back ground worker
  10. Image Loading

So full source code of Service1.cs in windows service project will be like below,

Service1.cs

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.ServiceModel;
using NetTcpServicetoHostinWindowsServices; 

namespace HostingWindowsService
{public partial class Service1 : ServiceBase
    {internal static ServiceHost myHost = null;
        BackgroundWorker worker;public Service1()
        {
            InitializeComponent();
        }protected override void OnStart(string[] args)
        {
            
            worker = new BackgroundWorker();
            worker.DoWork += new DoWorkEventHandler(worker_DoWork);

        }void worker_DoWork(object sender, DoWorkEventArgs e)
        {if (myHost != null)
            {
                myHost.Close();
            }

            myHost = new ServiceHost(typeof(NetTcpServicetoHostinWindowsServices.Service1));
            myHost.Open();



        }protected override void OnStop()
        {if (myHost != null)
            {
                myHost.Close();
                myHost = null; 
            }

        }
    }
}

 Step 6

Build the solution. After successful built of solution, you can see exe file in debug folder of bin folder.  After building the solution, right click on solution and select open folder in Windows Explorer.  Once folder is open Windows service project folder.  Inside that open bin folder. Inside that open Debug folder.  Inside Debug folder you should able to see windows service exe file.

Image Loading

Click on the address bar of the folder and copy the full path of this exe file.

Step 7

Install the windows service.

1.    First search what is the path of InstallUtil in your machine. To search this path , click on start  and open find and if you are using Windows 7 then browse to your C drive and type InstallUtil , in top right corner search text box.
2.    Once you get the full path of InstallUtil , Open your command prompt  ad change directory to full path of InstallUtil.
3.    Now just type InstallUtil.exe and press enter, you will get help details on how to use InstallUtil.exe.
4.     Now to install window service we created, type the below command on your command prompt. Make sure you are giving correct and full path of window service exe.

Image Loading

 5.    After successful installation, you will get below message.

Image Loading

 6.    Click on Start and type run and in run window type Service.msc

Image Loading

It will open all the services. We can see Service1 is listed there.  If you remember Service1 is name of the service class in Windows service project.

Image Loading

 

Image Loading

 

This service is automatic started. Right click on the service and click on the Start.
Now our WCF Service is up and hosted in Windows Services.

Step 8

Create the client.
1.    To create the client right click on solution and add a new project of type Console application. 
2.     Right click on the console application and add service reference.  Copy base address from App.config of windows services and paste it here.

Image Loading

 

3.    Now simply create the instance of Service1Client and call the service

Programs.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using ConsoleClient.ServiceReference1;

namespace ConsoleClient
{class Program
    {static void Main(string[] args)
        {
            Service1Client proxy = new Service1Client();
            Console.WriteLine(proxy.GetData(9));
            Console.Read();
        }
    }
}

 Press F5 to run the console application. Make sure client console application is set as startup project.

Image Loading

 

So it was all about, how to create a WCF Service with netTcpBinding and host in windows service. I hope this post was useful. Thanks for reading. Happy Coding.

 
Sign Up to vote for this article
 
About Author
 
Dhananjay Kumar
Occupation-Software Engineer
Company-Infosys Technolgies,Pune
Member Type-Gold
Location-India
Joined date-20 Jul 2009
Home Page-http://dhananjaykumar.net/
Blog Page-http://dhananjaykumar.net/
Dhananjay Kumar is Microsoft MVP on connected system. He blogs at http://dhananjaykumar.net/ . You can follow him http://twitter.com/debugmode_/ and reach him at dhananjay.25july@gmail.com
 
 
Other popularSectionarticles
Comments
There is no comments for this articles.
Leave a Reply
Title:
Display Name:
Email:
(not display in page for the security purphase)
Website:
Message:
Please refresh your screen using Ctrl+F5
If you can't read this number refresh your screen
Please input the anti-spam code that you can read in the image.
^ Scroll to Top