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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

WCF基础教程——vs2013创建wcf应⽤程序引⾔
近期在项⽬中见到了师哥们常常谈到的WCF这⽅⾯的知识。

当时在写程序的时候也没有理解wcf究竟是个什么东西?以及我们为什么在项⽬中会採⽤这种框架来实现,仅仅是依照师哥他们写好的代码编写同样格式的代码。

随着代码敲
的越来越多就慢慢的懂得了如何实现client和服务端的连同,可是wcf真正的执⾏机制还是⼀点也不懂,近期在听师
哥们讲课的时候有解说了⼀些关于WCF的知识,⾃⼰感觉应该好好理解这⽅⾯的知识了,⽽且这个东西在项⽬中是⾮经常见的,以下就结合我实现的⼀个⼩Demo来和⼤家分享⼀下。

当中⼀些最主要的概念。

⼤家能够參考关于wcf的介绍。

在这⾥给⼤家两张图对照⼀下,能⾮常好的体现出
wcf的⽤途:
基于的应⽤程序与⾯向服务开发
在基于 的应⽤程序开发中,我们由客户机的浏览器訪问应⽤程序server,然后通过应⽤程序server中的数据
库连接去连接数据库server,读取或是操作数据,有时候可能会多⼀个⽂件server。

⼤家能够观察到,基本上全部的
应⽤都放在了⼀台server上,但对于⼀个,因为业务上的须要(如:与外部系统交互),⼀台server⾮常难⽀持全部的应⽤。

以下来看这样⼀张图
客户机使⽤浏览器訪问serverA,serverA为了业务须要与其它各种应⽤部署在serverB、C、D....再通过WCF技术互相通信,相互訪问...然⽽⾯向服务的优点不只在此。

他还提供了不同语⾔不同操作系统的可交互性..
以下我们就開始创建⼀个client和服务端分离的wcf应⽤程序:
1、创建我们的wcf的服务端——在新建项⽬的时候选择WCF服务应⽤程序
2、从图中我们能够看出,在我们建⽴好的解决⽅式中有默认的两个service.svc和Iservice.cs⽂件。

我们能够将
这两个⽂件删除。

然后加⼊我们⾃⼰的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 測试client以測试此服务,请在解决⽅式资源管理器中选择 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服务端基本上就能够⽤了。

剩下的就是将这个服务端公布然后部署到IIS上,就能够供client使⽤
了,在这我就不给⼤家具体解释如何在IIS上公布wcf,我们就使⽤⼀个简单的办法就是直接预览user.svc,如图:
事实上WCF的应⽤场景能够⼤概能够这样简单的描写叙述⼀下:我们设计的场景是在⽣产中常常应⽤的场景。

把WCF程序寄
宿在IIS之上。

如果场景例如以下:Aserver和Bserver。

我们把我们刚刚建⽴的WCF程序“部署”在Bserver上(本教程的
A,Bserver都放是我⾃⼰的⼀台机器),我们的⽬标是在Aserver的应⽤程序来訪问Bserver的WCF程序,实现server端
的应⽤程序通讯。

以下来看我们client的创建
1、⾸先我在client创建了⼀个web应⽤程序;
2、以下我们须要加⼊⼀个服务引⽤如图,填写好地址后点击转到button,然后点击确定
引⽤完毕后,我们在解决⽅式中会发现多出⼀个⽂件:
3、页⾯中的代码例如以下
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="User.aspx.cs" Inherits="er" %>
<!DOCTYPE html>
<html xmlns="/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为我们client的命名空间。

ServiceReference为我们在加⼊服务引⽤的时候。

须要我们记住的那个名称。

2 UserClient user = new UserClient();UserClient就是我们在加⼊引⽤的时候⽣成的服务端User类的client代理类,⼀般client的代理类名称都会是***Client。

当中User就是我们服务端加⼊的那个wcf服务(user.svc)的名称。

到这我们就完毕了⼀个⾮常easy的WCF的⼩Demo,同⼀时候完毕了由Aserver的应⽤⼩Bserver中WCF提供的⽅法的调⽤。

⼩结
这个⼩Demo算是我们学习WCF的最基础的⼊门,在我看来对于刚⼊门的读者们来说应该是⾮常easy接受的,也算是完毕了⼀个基础的教程。

随着对wcf的更深⼊的学习,我会继续更新此类博客来和⼤家交流,假设此博客有什么不懂的地
⽅能够留⾔交流。

相关文档
最新文档