SIGN UP MEMBER LOGIN:    
ARTICLE

Creating WCF Data Service from scratch and Hosting in Console Application

Posted by Dhananjay Kumar Articles | WCF with C# June 23, 2010
In this article, I will show how to WCF Service can be created from the scratch and how WCF Service can be hosted in Console Application.
Reader Level:
Download Files:
 

Objective 

In this article, I will show how 
  1. WCF Service can be created from the scratch 
  2. WCF  Service can be hosted in Console Application 
You can see video of this article here.

Let us say, we have a table called Student of below structure below in our database 

1.gif
 
In Student table RollNumber is a primary key. 

Let us create WCF Data Service which will expose the above table as REST service 

Step 1

Create a new project. Select the project template Console Application from Windows tab. 

2.gif 

Step 2: Create a Data Model 

We can create a Data Model, which can be exposed as WCF Data Service in three ways 
  1. Using ADO.Net Entity model.
  2. Using LINQ to SQL class. 
  3. Custom Data Model. 
For our purpose, I am going to use ADO.Net Entity model to create the data model.  So to create an entity model 
  1. Right click on Console application and add a new item 
  2. Select ADO.Net Entity model from Data tab. 

    3.gif
  3. Since we have table in data base. So we are going to choose option, select from database. 

    4.gif
  4. Either choose the data base from drop down or create a new data connection. 

    5.gif

    In above connection string StudentDBEntities is name of the connection string. If we want, we can change this connection string as per our requirement. 

    If your required data base is not listed in drop down then, you can create a new data connection. To create new data connection click on New Connection 

    6.gif

    You can give the data base server name and press refresh.  After pressing Refresh, you can choose the data base from the drop down.  After selecting the data base click on Test Connection to test connection established successfully or not? 
  5. Select tables, views and stored procedure from data base you want to make as the part of your data model. Since we are having only one table so we are selecting one table. 

    7.gif

    If you want you can change name of the data model. By default it is name of the data base appended by the term model.  Click on Finish button to complete and create the data model. 
  6. Now we can see that StudentDataModel.edmx has been created in the designer. 

    8.gif

    Since there is only one table, so there is only one table model at design surface. 

    Now we have created the data model which can be exposed as WCF Data Service.  Now you can see in solution explorer, you have  StudentModel.edmx and StdentModel.Designer.cs  files. 

    9.gif
Step 3

Add reference of 

System.ServiceModel;
System.ServiceModel.Web;
System.Data.Services;
System.Data.Services.Client

Step 4

Right click and add a class in console application. I am giving name here MyDataService to the class. 

10.gif
 
Step 5

Add the below namespaces in the class MyDataService 

11.gif 

Step 6 

In this step we will create WCF Data Service class.  

12.gif
  1. Make the class as public. 
  2. Inherit DataService class. 
  3. Create a public method InitializeService 
  4. Pass the input parameter of the type DataServiceConfiguration 
  5. Set the protocol version to DataServiceProtocol version 2.0 
MyDataService.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Data.Services;
using System.Data.Services.Common;

namespace SelfHosted
{
   public class MyDataService :DataService<StudentDBEntities>
    {
       public static void InitializeService(DataServiceConfiguration config)
       {
           config.SetEntitySetAccessRule("*", EntitySetRights.All);
           config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
       }
    }
}

Step 7

Host the WCF Data Service in Console application. So to do that , write the below code in Program.cs 

13.gif
  1. Create instance of WebServiceHost. 
  2. Create instance of WebHttpBinding.
  3. Add service end point with Contract IRequestHandler
  4. Open the host
Full source code for hosting program is as below, 

Programs.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Data.Services;
using System.Data.Services.Common;

namespace SelfHosted
{
    class Program
    {
        static void Main(string[] args)
        {
            WebServiceHost host = new WebServiceHost(typeof(DataService),
                                  new Uri("http://localhost:9999/DataService"));
            WebHttpBinding binding = new WebHttpBinding();
            host.AddServiceEndpoint(typeof(IRequestHandler),
                                    binding, "WebServiceHost");
            host.Open();
            Console.WriteLine("Service at http://localhost:9999/DataService ");
            Console.WriteLine("Press any key to stop the Service ");
            Console.Read();
            host.Close();
        }
    }
}

Step 8

Just press F5 to run the WCF Data Service. Data Service will be hosted in the console application.

On running you can see, one table is listed. That table is Student 

14.gif
 
So, we are able to run the WCF Data Service and this service Is hosted in console application.  We can consume the service in any client in the same way; we consume WCF Data service hosted in any other web server. 

I hope this post was useful, thanks for reading. Happy coding. 

Login to add your contents and source code to this article
share this article :
post comment
 

HI ,

WCF DATA Service is REST based service and it only can work on webHttpBinding. so answer is we can not use other bidings :

Posted by Dhananjay Kumar Jul 02, 2010

Thank you for the article.
I wish to ask a question about wcf services: Can we use wshttpbinding and basichttpbinding at the same time  in a solution? That a tough problem i was looking for a solution.But nothing so far :(

Posted by Ibrahim Ersoy Jul 01, 2010

Thanking_you_for_posting_article

Posted by shiva kumar Jun 23, 2010
Nevron Gauge for SharePoint
Become a Sponsor
PREMIUM SPONSORS
  • Finally – a virtual platform that delivers next-generation Windows Server 2008 Hyper-V virtualization technology from a managed hosting partner you can truly depend on. Visit www.maximumasp.com/max for a FREE 30 day trial. Hurry offer ends soon. Climb aboard the MaxV platform and take advantage of High Availability, Intelligent Monitoring, Recurrent Backups, and Scalability – with no hassle or hidden fees. As a managed hosting partner focused solely on Microsoft technologies since 2000, MaximumASP is uniquely qualified to provide the superior support that our business is built on. Unparalleled expertise with Microsoft technologies lead to working directly with Microsoft as first to offer IIS 7 and SQL 2008 betas in a hosted environment; partnering in the Go Live Program for Hyper-V; and product co-launches built on WS 2008 with Hyper-V technology.
    ceTE software specializes in components for dynamic PDF generation and manipulation. The DynamicPDF™ product line allows you to dynamically generate PDF documents, merge PDF documents and new content to existing PDF documents from within your applications. Visit DynamicPDF here
Team Foundation Server Hosting
Become a Sponsor