Introduction
Windows Communication
Foundation (WCF) is a programming interface as part of .NET Framework.
Using 3 types we can host service
in WCF
1 1. Self-Hosting
2
2 .IIS
Hosting
3 3. WAS
In this article I will tell
you how to create WCF Service and how to host using self-hosting and how to consume
this service in Web Application. In this
article I will discuss about self-hosting your WCF Service, because it’s the
most flexible and easiest way to host WCF services. Another way to host WCF
Service is using Internet Information Services(IIS). IIS will be explained in
my other article.
Download Source Code
Part-1 Create
the Service
Open Visual Studio 2010
Step 1: Select the new Empty Solution and
give name WCFProject.
Step 2: Then add new Class Library Project
and give name SaleClassLibrary.
Step 3: Then add reference of System.ServiceModel and System.Runtime.Serialization
into that project.
Step 4: Then add new Interface ISaleService.
//
using System;
using
System.Collections.Generic;
using System.Linq;
using
System.Runtime.Serialization;
using
System.ServiceModel;
using
System.ServiceModel.Web;
using System.Text;
using
System.Collections.Generic;
using System.Runtime.Serialization;
using
System.ServiceModel;
[ServiceContract]
interface ISaleService
{
[OperationContract]
bool InsertCustomer(Customer obj);
[OperationContract]
List<Customer> GetAllCustomer();
[OperationContract]
bool DeleteCustomer(int Cid);
[OperationContract]
bool UpdateCustomer(Customer obj);
}
[DataContract]
public class Customer
{
[DataMember]
public int CustomerID;
[DataMember]
public string CustomerName;
[DataMember]
public string Address;
[DataMember]
public string EmailId;
}
Step 5: And write the following code in the SaleService.cs
file:
SaleService.cs page:
using System;
using
System.Collections.Generic;
using System.Linq;
using
System.Runtime.Serialization;
using
System.ServiceModel;
using
System.ServiceModel.Web;
using System.Text;
using
System.Collections.Generic;
using
System.Configuration;
using System.Data;
using System.Data.SqlClient;
public class
SaleService : ISaleService
{
public bool InsertCustomer(Customer
obj)
{
cutomerList.Add(obj);
return true;
}
public List<Customer>
GetAllCustomer()
{
return cutomerList;
}
public bool DeleteCustomer(int Cid)
{
var item = cutomerList.First(x
=> x.CustomerID == Cid);
cutomerList.Remove(item);
return true;
}
public bool UpdateCustomer(Customer
obj)
{
var list = cutomerList;
cutomerList.Where(p =>
p.CustomerID ==
obj.CustomerID).Update(p =>
p.CustomerName = obj.CustomerName);
return true;
}
public static List<Customer> cutomerList = new
List<Customer>()
{
new Customer {CustomerID = 1,
CustomerName="Sujeet",
Address="Pune", EmailId="test@yahoo.com"
},
new Customer {CustomerID = 2,
CustomerName="Rahul",
Address="Pune", EmailId="test@yahoo.com"
},
new Customer {CustomerID = 3,
CustomerName="Mayur",
Address="Pune", EmailId="test@yahoo.com"}
};
}
Step 6: Build your Class library.
Step 7: Add new Console
Application in the same solution SaleServiceSelfHosting
Step 8: In this project Add
reference of the WCF Class library project and Add reference of
System.ReferenceModel Namespace.
Step 9: Add below code on Console
Application
class Program
{
static void Main(string[] args)
{
Uri baseAddress = new Uri("http://localhost:6525/SaleService");
using (ServiceHost
host = new ServiceHost(typeof(SaleClassLibrary.SaleService),
baseAddress))
{
ServiceMetadataBehavior smb = new ServiceMetadataBehavior();
smb.HttpGetEnabled = true;
smb.MetadataExporter.PolicyVersion = PolicyVersion.Policy15;
host.Description.Behaviors.Add(smb);
host.Open();
Console.WriteLine("The service is ready at: {0}",
baseAddress);
Console.WriteLine("Press <Enter> to stop the service");
Console.ReadKey();
host.Close();
}
}
}
Step 10: Build your Console
application and set as startup project and run the project.
Your self-hosting WCF Service is now running
WCF Self-Hosting
WCF come with ServiceHost class
that makes you can host your services in your own application easily. With WCF
what you need to do is just configuring your service endpoint and calling the
.open() method of ServiceHost.
Advantages
& Disadvantage
To be able to host WCF service
you need WCF runtime and .NET application where you want to host your service.
Advantages:
• Easy:
This way of hosting don’t need many lines of code to successfully run
• Flexible:
You can easily decide when your service active by calling the .open() and
.close() method.
Disadvantage
However, this self-hosting method
has some disadvantage. This self-hosting service is reachable only when the application
that hosts the service is running. So, self-hosting is only suitable when the
development and demonstration phase of your system.
Happy Programming!!
If you have any query mail me
to Sujeet.bhujbal@gmail.com
Regards
Sujeet Bhujbal
------------------------------------------------------------------------------------------------------------
Personal Website :-http://sujitbhujbal.wordpress.com/
Facebook :-www.facebook.com/sujit.bhujbal
CodeProject:-http://www.codeproject.com/Members/Sujit-Bhujbal
Linkedin :-http://in.linkedin.com/in/sujitbhujbal
Stack-Exchange: http://stackexchange.com/users/469811/sujit-bhujbal
Twitter :-http://twitter.com/SujeetBhujbal
JavaTalks :-http://www.javatalks.com/Blogger/sujit9923/
------------------------------------------------------------------------------------------------------------
Very good article and example...
ReplyDeleteNow I understood WCF self hosting...
Thank you very much...
Also, in your article, add how to consume self-hosted service in a web application (as you consumed WCF service in sample code)
Thanks Kushal ...
ReplyDelete