首页 > 代码库 > 菜鸟级别的WCF入门学习

菜鸟级别的WCF入门学习

这两天学习WCF,看了MSDN上的入门教程,和查找了一些网上给的例子,简单的实现了一下,感觉应该很适合我这种菜鸟级的选手看了。

1、新建一个项目--WCF--WCF服务应用程序

用的是MSDN上的加减乘除,所以在名称部分写的是Calculator

删除自带的Service1和IService1两个文件,右键添加--新建项

由于左侧的选项里没有WCF,所以直接搜索WCF,添加WCF服务,名字为Cal

删除或注释掉Cal里的

//public void DoWork()
//{
//}

ICal里的

 // void DoWork();

因为用不到以上的内容

在ICal里写入以下代码

public interface ICal
    {
        [OperationContract]
        double Add(double n1, double n2);
        [OperationContract]
        double Subtract(double n1, double n2);
        [OperationContract]
        double Multiply(double n1, double n2);
        [OperationContract]
        double Divide(double n1, double n2);
    }

 

在Cal里写入

 public class Cal : ICal
    {
        public double Add(double n1,double n2)
        {
            double result = n1 + n2;
            return result;
        }
        public double Subtract(double n1,double n2)
        {
            double result = n1 - n2;
            return result;
        }
        public double Multiply(double n1,double n2)
        {
            double result = n1 * n2;
            return result;
        }
        public double Divide(double n1,double n2)
        {
            double result = n1 / n2;
            return result;
        }
    }

以上两部分内容,像我这种菜鸟都能写出来,相信大家也能看明白。就不写注释了

按F5运行,会出现以下界面

双击Add(),进行测试,当然,四个都可以测试

在n1处输入一个值,n2处输入一个值,点击调用,此处用简单的1+1来演示,出现值2,则证明成功了。

右键Cal.svc文件,选择在浏览器中查看

此网页尽量不要关闭,因为本文只在于测试,所以不在IIS上部署。如果在此页面没有打开的情况下,运行后面的客户端出错的话,可以尝试运行此页面

2、新建一个ASP.net项目,此处命名为WebCalculator

然后右键引用--添加服务引用

在地址部分输入上一张图片中划线的地址,然后点击转到,在服务列表里会有Cal的出现,点击确定即可

新建一个空白WEB窗体WebTest.aspx

前台代码如下

    <div>
        <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
        <br />
        <asp:Button ID="BtnAdd" runat="server" Text="加" OnClick="BtnAdd_Click" />
        <asp:Button ID="BtnSub" runat="server" Text="减" OnClick="BtnSub_Click" />
        <asp:Button ID="BtnMul" runat="server" Text="乘" OnClick="BtnMul_Click" />
        <asp:Button ID="Btndiv" runat="server" Text="除" OnClick="Btndiv_Click" />
    </div>

后台代码如下

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using WebCalculator.ServiceReference1;

namespace WebCalculator
{
    public partial class WebTest : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void BtnAdd_Click(object sender, EventArgs e)
        {
            CalClient cal = new CalClient();
            double result = cal.Add(double.Parse(TextBox1.Text.ToString()), double.Parse(TextBox2.Text.ToString()));
            Response.Write(result);
        }

        protected void BtnSub_Click(object sender, EventArgs e)
        {
            CalClient cal = new CalClient();
            double result = cal.Subtract(double.Parse(TextBox1.Text.ToString()), double.Parse(TextBox2.Text.ToString()));
            Response.Write(result);
        }

        protected void BtnMul_Click(object sender, EventArgs e)
        {
            CalClient cal = new CalClient();
            double result = cal.Multiply(double.Parse(TextBox1.Text.ToString()), double.Parse(TextBox2.Text.ToString()));
            Response.Write(result);
        }

        protected void Btndiv_Click(object sender, EventArgs e)
        {
            CalClient cal = new CalClient();
            double result = cal.Divide(double.Parse(TextBox1.Text.ToString()), double.Parse(TextBox2.Text.ToString()));
            Response.Write(result);
        }
    }
}

按F5,运行

在textbox中随意输入两个值,进行测试

 

注:

在代码中需要引用

using WebCalculator.ServiceReference1;
WebCalculator为项目的名字,
ServiceReference1为引用的命名空间

在代码中需要注意的是

CalClient 这类你会发现根本就不是用户自己写的,而是系统生成的,从命名上来看就能明白Cal是服务的名,Client是客服端,所以我们在写其他的代码的时候,就可以很容易写这个类的名字。