65.9K
CodeProject is changing. Read more.
Home

How to Create WCF Services - Beginner Code

starIconstarIconstarIconstarIconstarIcon

5.00/5 (2 votes)

Feb 27, 2015

CPOL

2 min read

viewsIcon

8892

Creating and consuming WCF

Introduction

This tip will help you understand the basic way of creating WCF services.

Background

I used to create web services but then I was once working on a migration application project where I was supposed to convert all web services to WCF services. I was new to it. I still am. But will little hands on experience. Let me share how I learned creating and consuming WCF services

Ok before that, my manager asked me a simple question “What do you know about message binding, contracts, and endpoints?” without which you cannot proceed with it.

I said “I don’t know technical definitions. What I know is you should know:

  • Where the service is located
  • How we can communicate or consume the service
  • And what the parameters the service seeks are.”

Now that suffices completely. You can now map it with technical jargons.

I learnt these things from .NET interview videos.

I thought of a simple webpage with functionality of doing mathematical calculation to learn WCF.

I created new Projects from Visual Studio 2013 of type WCF application.

Using the Code

Now I created a class (svc file) which was supposed to be an interface and define the methods to be implemented later called IMathService.svc.

[ServiceContract] 
    public interface IMathService
    {
        [OperationContract]
        Int32 Sum(Int32 a, Int32 b);

        [OperationContract]
        Int32 difference(Int32 a, Int32 b);

        [OperationContract]
        Int32 Product(Int32 a, Int32 b);
    }
}

Now I declared a class which can actually implement the interface class for maths operation:

public class MathService : IMathService
    {
      public  Int32 Sum(Int32 a, Int32 b)
    {
        return a+b;
    }

      public  Int32 difference(Int32 a, Int32 b)
    {
        return a-b;
    }

       public Int32 Product(Int32 a, Int32 b)
    { 
    return a * b;
    }
    }
}

Now my service is ready to use.

Let's see how we can consume this service. To do that, I created a Simple User Interface which holds UI controls to do maths calculation and display result.

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
      num1  <asp:TextBox ID="txt1Num1" runat="server"></asp:TextBox>

      num2  <asp:TextBox ID="txtNum2" runat="server"></asp:TextBox>

        <asp:DropDownList ID="DropDownList1" runat="server">
            <asp:ListItem>Add</asp:ListItem>
            <asp:ListItem>sub</asp:ListItem>
            <asp:ListItem>product</asp:ListItem>
        </asp:DropDownList>
     result   <asp:TextBox ID="txtResult" runat="server"></asp:TextBox>
        <asp:Button ID="btnDisplay" runat="server" 
Text="Display" OnClick="btnDisplay_Click" />
    </div>

    </form>
</body>
</html>

Now the most important thing is to add the web reference to consume it.

Now on the button click event, I implemented the corresponding functionality:

using MathApp.ServiceReference1;

namespace MathApp
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        MathServiceClient client = new MathServiceClient();
        protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void btnDisplay_Click(object sender, EventArgs e)
        {
            if(DropDownList1.SelectedItem.Text=="Add")
            {
                var res = client.Sum(Int32.Parse(txt1Num1.Text), Int32.Parse(txtNum2.Text));
                txtResult.Text=res.ToString();
            }
            else if (DropDownList1.SelectedItem.Text == "sub")
            {
                var res = client.difference(Int32.Parse(txt1Num1.Text), Int32.Parse(txtNum2.Text));
                txtResult.Text = res.ToString();
            }
           else
            {
                var res = client.Product(Int32.Parse(txt1Num1.Text), Int32.Parse(txtNum2.Text));
                txtResult.Text = res.ToString();
            }
        }
    }
}

That’s it. You are now ready to test the WCF service. Run the solution.

Points of Interest

So that’s how I tried to make it very simple to learn how to create WCF services.

By the way, the technically endpoint, binding and contract details are available in the web.config as below:

   <endpoint address="http://localhost:18647/MathService.svc" 
binding="basicHttpBinding"
        bindingConfiguration="BasicHttpBinding_IMathService" 
contract="ServiceReference1.IMathService"
        name="BasicHttpBinding_IMathService" />

I will post more on an advanced way of creating WCF service.