WCF基础教程——vs2013创办wcf应用程序

WCF基础教程——vs2013创建wcf应用程序

      引言

  最近在项目中见到了师哥们经常谈到的WCF这方面的知识,当时在敲代码的时候也没有理解wcf到底是个什么东西?

以及我们为什么在项目中会采用这样的框架来实现,只是按照师哥他们写好的代码编写相同格式的代码,随着代码敲

的越来越多就慢慢的懂得了怎样实现客户端和服务端的连同,但是wcf真正的运行机制还是一点也不懂,最近在听师

哥们讲课的时候有讲解了一些关于WCF的知识,自己感觉应该好好理解这方面的知识了,并且这个东西在项目中是非

常常见的,下面就结合我实现的一个小Demo来和大家分享一下。

 其中一些最基本的概念,大家可以参考百度百科关于wcf的介绍,在这里给大家两张图对比一下,能很好的体现出

wcf的用途:

    基于ASP.net的应用程序与面向服务开发
                    WCF基础教程——vs2013创办wcf应用程序
在基于Asp.net 的应用程序开发中,我们由客户机的浏览器访问应用程序服务器,然后通过应用程序服务器中的数据

库连接去连接数据库服务器,读取或是操作数据,有时候可能会多一个文件服务器。大家可以观察到,基本上所有的

应用都放在了一台服务器上,但对于一个,由于业务上的需要(如:与外部系统交互),一台服务器很难支持所有的

应用。下面来看这样一张图
                     WCF基础教程——vs2013创办wcf应用程序
客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D....再通过WCF技术互相

通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性..

    下面我们就开始创建一个客户端和服务端分离的wcf应用程序:

  1、创建我们的wcf的服务端——在新建项目的时候选择WCF服务应用程序

     WCF基础教程——vs2013创办wcf应用程序

                          WCF基础教程——vs2013创办wcf应用程序

   2、从图中我们可以看出,在我们建立好的解决方案中有默认的两个service.svc和Iservice.cs文件,我们可以将

这两个文件删除,然后添加我们自己的wcf服务,步骤如图:

WCF基础教程——vs2013创办wcf应用程序

                     WCF基础教程——vs2013创办wcf应用程序

  3、在解决方案里面我们可以看见,当我们添加了一个User.svc后,vs会自动生成WCF借口IUser.cs,这是我们需要

在IUser.cs定义WCF方法ShowName,在User.svc.cs对该接口的方法进行实现。代码如下
  
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace DemoServiceWCF
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IUser”。
    [ServiceContract]
    public interface IUser
    {
        [OperationContract]
        string ShowName(string name);
    }
}

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;

namespace DemoServiceWCF
{
    // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“User”。
    // 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 User  .svc 或 User  .svc.cs,然后开始调试。
    public class User : IUser
    {
        public string ShowName(string name)
        {
            string wcfName = string.Format("WCF服务,显示姓名:{0}", name);
            return wcfName;

        }
    }
}


  大家在wcf接口中看到与平时我们不同的就是它多了两个标签,其余的和我们正常的学习的接口是一样的,添加这

个标签是依赖System.ServiceModel的引用。

[ServiceContract],来说明接口是一个WCF的接口,如果不加的话,将不能被外部调用。

[OperationContract],来说明该方法是一个WCF接口的方法,不加的话同上。 

其实简单来说这两个标签就是区分普通接口和普通方法的一个标示,就像我们提高班的第十期和第十一期还有十二期

一样,例如现在十期有一个叫张三的同学,十一期也有一个叫张三的同学,这样我们找人的时候必须得有这个不同的

期号来区分。

 4、下面来看一下运行的效果,将User.svc设为起始页后运行。

       WCF基础教程——vs2013创办wcf应用程序

 这样我们的wcf服务端基本上就可以用了,剩下的就是将这个服务端发布然后部署到IIS上,就可以供客户端使用

了,在这我就不给大家详解怎样在IIS上发布wcf,我们就使用一个简单的办法就是直接预览user.svc,如图:
    WCF基础教程——vs2013创办wcf应用程序
  
  其实WCF的应用场景可以大概可以这样简单的描述一下:我们设计的场景是在生产中经常应用的场景,把WCF程序寄

宿在IIS之上。假设场景如下:A服务器和B服务器。我们把我们刚刚建立的WCF程序“部署”在B服务器上(本教程的

A,B服务器都放是我自己的一台机器),我们的目标是在A服务器的应用程序来访问B服务器的WCF程序,实现服务器端

的应用程序通讯。

 下面来看我们客户端的创建

  1、首先我在客户端创建了一个web应用程序;
                  WCF基础教程——vs2013创办wcf应用程序

 2、下面我们需要添加一个服务引用如图,填写好地址后点击转到按钮,然后点击确定

            WCF基础教程——vs2013创办wcf应用程序

 引用完成后,我们在解决方案中会发现多出一个文件:

                      WCF基础教程——vs2013创办wcf应用程序
  3、页面中的代码如下
 
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="User.aspx.cs" Inherits="DemoClientWCF.User" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
     <form id="form1" runat="server">
     <asp:TextBox ID="txtName" runat="server"></asp:TextBox><br />
     <asp:Button ID="btnSubmit" runat="server" Text="测试WCF服务" OnClick="btnClick" />
     </form>
</body>
</html>

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DemoClientWCF.ServiceReference;

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

        }

        protected void btnClick(object sender, EventArgs e)
        {
            UserClient user = new UserClient();
            string result = user.ShowName(this.txtName.Text);
            Response.Write(result);
        }
    }
}

  4、下面给大家解释几个比较重要的代码

  1、using DemoClientWCF.ServiceReference;这个引用中 DemoClientWCF为我们客户端的命名空间,

ServiceReference为我们在添加服务引用的时候,需要我们记住的那个名称。

 2 UserClient user = new UserClient();UserClient就是我们在添加引用的时候生成的服务端User类的客户端代理

类,一般客户端的代理类名称都会是***Client。其中User就是我们服务端添加的那个wcf服务(user.svc)的名称。
  
 到这我们就完成了一个很简单的WCF的小Demo,同时完成了由A服务器的应用小B服务器中WCF提供的方法的调用。

 小结

 这个小Demo算是我们学习WCF的最基础的入门,在我看来对于刚入门的读者们来说应该是很容易接受的,也算是完成

了一个基础的教程,随着对wcf的更深入的学习,我会继续更新此类博客来和大家交流,如果此博客有什么不懂的地

方可以留言交流。

  

版权声明:本文为博主原创文章,未经博主允许不得转载。

3楼u013067402昨天 21:57
看看 提前预习一下。
2楼u013044000昨天 17:13
过来了解了解。
1楼u013034889昨天 16:42
看起来好困难