Infolink

 

Search This Blog

Oct 20, 2012

Configuring Multiple End points for WCF Service

Sample Service with multiple End Points

Step 1

Create a WCF Service Application. Open Visual studio and create new project selecting WCF Service Application project template. In VS2008, you will get WCF Service Application project template inside WEB tab whereas in VS2010, you will get WCF Service Application project template inside WCF tab.

Step 2

Delete the default code getting created for you by WCF. Delete all the code from IService1 and Service1. If you are using VS2008, comment out whole System.ServiceModel from Web.Config file. And if you are using VS2010 then comment out Multiple Host Binding.

Step 3


[ServiceContract]
public  interface IService1
{
    [OperationContract]
    string GreetingMessage (string Name);
}

Service implementation is

public class Service1 : IService1
{
    public string GreetingMessage(string Name)
    {
        return  "Hi Its ME.."+ Name;
    }
}
Step 4

To see the video tutorial of hosting WCF Service in Console Application Click Here

Create a console application to host the service.

For this,
  1. 1. Right click and add new project to your solution of Console type.
  2. 2. Add Reference of System.ServiceModel.
  3. 3. Add project reference of WCF Service Application created in Step 1.
  4. 4. Make this Console application as your startup project. To make this right click on console application and select make as startup project.
  5. 5. Right click on the console application then select add new item and then add new Application Configuration File.
Program.cs

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    using System.ServiceModel;

    using MultipleEndpoints;

    namespace ConsoleApplication1

    {

    class Program

    {

    static void Main(string[] args)

    {

    ServiceHost host = new ServiceHost(typeof(Service1));

    host.Open();

    Console.WriteLine(“Service is up and running”);

    Console.WriteLine(“To Close Service Press any Key “);

    Console.ReadKey();

    host.Close();

    }

    }

    }

Step 5

Configure the multiple end points here.

1. Add as many end points as you want in service tag.

2. Make sure none of the end points is having same address. Else you will get run time error.

3. Advisable is to use relative address. So for that add base address using Host tag.

So configuration file with multiple end points can look like,

 <services >

<service name =“MultipleEndpoints.Service1“

behaviorConfiguration =“Mg“>

<endpoint name=“firstBinding“

address =“/MyFirstBindingAddress“

binding =“basicHttpBinding“

contract =“MultipleEndpoints.IService1“ />

<endpoint name=“secondBinding“

address =“/MySecondBindingAddress“

binding =“basicHttpBinding“

contract =“MultipleEndpoints.IService1“/>

<endpoint contract=“IMetadataExchange“

binding=“mexHttpBinding“

address=“mex“ />

<host>

<baseAddresses >

<add baseAddress =“http://localhost:8181/Service1.svc“/>

</baseAddresses>

</host>

</service >

</services>

Explanation

1. There are two end points getting exposed.

2. Relative address is being used to expose the end points.

3. Two end points are having their respective names as firstBinding and secondBinding.

Press F5 to run the host (Console) application.

Keep open this console running window. Do not close this window.

Step 6

Create a Console client. To do, open visual studio and create a new console application. Add Service Reference. Copy the base address from app.config of host console application (created in Step 5) and paste as Service URL.

static void Main(string[] args)

{

Service1Client proxy1 = null;

proxy1 = new Service1Client(“firstBinding”);

Console.WriteLine(proxy1.GreetingMessage(“First End Point”));

proxy1 = new Service1Client(“secondBinding”);

Console.WriteLine(proxy1.GreetingMessage(“Second End Point”));

Service1Client proxy = null;

proxy = new Service1Client(“firstBinding”,

“http://localhost:8181/Service1.svc/MyFirstBindingAddress”);

Console.WriteLine(proxy.GreetingMessage(“First End Point calling with Address”));

proxy = new Service1Client(“secondBinding”,

“http://localhost:8181/Service1.svc/MySecondBindingAddress”);

Console.WriteLine(proxy.GreetingMessage(“Second End Point Calling with Address”));

Console.ReadLine();

}


No comments:

Post a Comment

Related Posts Plugin for WordPress, Blogger...