We can self-host a WCF service in any application, for example, in console application, windows forms, or windows service. And the coding is relatively simple.
(1) Run Visual Studio
(2) New Project - [Console Application]
(3) Add New Item - [WCF Service] item. Name it SimpleService.svc.
(4) Write a WCF interface in ISimpleService.cs.
namespace SimpleWcfService
{
using System.Runtime.Serialization;
using System.ServiceModel;
[ServiceContract]
public interface ISimpleService
{
[OperationContract]
string SayHello(string name);
}
}
(5) Write a WCF service class that implements the interface.
// SimpleService.svc.cs
namespace SimpleWcfService
{
public class SimpleService : ISimpleService
{
public string SayHello(string name)
{
string v = "Hello " + name;
return v;
}
}
}
(6) Write a self-hosting code in Program.cs
Basically we create System.ServiceModel.ServiceHost instance and call Open() method; and call Close() method once we are done.
using System;
using System.ServiceModel;
namespace SimpleWcfHost
{
class Program
{
static void Main(string[] args)
{
ServiceHost host = new ServiceHost(typeof(SimpleService));
host.Open();
Console.WriteLine("WCF Service Started. Press ENTER to stop.");
Console.ReadLine();
host.Close();
}
}
}
(7) Edit App.config file. As a base address, we specified http://localhost:8899/ as below.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="SimpleWcfHost.SimpleService">
<endpoint address="" binding="wsHttpBinding" contract="SimpleWcfHost.ISimpleService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8899/" />
</baseAddresses>
</host>
</service>
</services>
</system.serviceModel>
</configuration>
(8) To check to see if the WCF service is running, open web browser and type http://localhost:8899/

(9) To test WCF service from WCF client, first run self-hosting EXE application. And then you can run WcfTestClient.EXE client application. Specify service URL (http://localhost:8899/) and call a method by clicking [Invoke].

No comments:
Post a Comment