Creating WCF Data Service from scratch and Hosting in Console Application

No.of Views3222
Bookmarked1 times
Downloads 
Votes0
By  Dhananjay Kumar   On  26 Jun 2010 00:06:12
Tag : WCF , REST Services
in this article,Creating WCF Data Service from scratch and Hosting in Console Application
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

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 

Image Loading

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.

Image Loading

 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. Image Loading
  4. Since we have table in data base. So we are going to choose option, select from database.
  5. Image Loading
  6. Either choose the data base from drop down or create a new data connection.
  7. Image Loading

    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.

    Image Loading

     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?

  8. 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.
  9. Image Loading

     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.

  10. Now we can see that StudentDataModel.edmx has been created in the designer.
  11. Image Loading

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

Image Loading

 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.

Image Loading

 Step 5

Add the below namespaces in the class MyDataService

Image Loading

 Step 6

In this step we will create WCF Data Service class.

Image Loading

 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

Image Loading

 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

Image Loading

 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.

 
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
By:JamesDate Of Posted:1/11/2011 4:56:02 AM
it looks like general wcf only
Hi ,the sample program looks like normal wcf service only, if im wrong explain wcf and wcf dataservices. Regards JAMes
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