一、WCF学习之旅-创建第一个服务
WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfGeBEfyQL9XlTMy_aW4Zno3HEkKa
WCF有三种通信模式:单向、请求-响应、双工。这些通信模式留待后面再继续学习和讲解。
今天要学习的是创建一个测试的demo,所谓的hello world入门级程序。OK,let's start!
1、创建解决方案和项目
打开vs2015,文件》新建》项目,选中WCF服务应用程序。如下图:

项目成功创建之后出现的界面。如下图:

2、创建自己的服务StudentService。如下图:


在vs2015中,添加一个wcf服务,IDE会建立两个文件,一个是接口文件IStudentService.cs,另一个是服务类文件StudentService.svc。如下图:

我们一般习惯在IStudentService.cs接口文件中定义服务契约和操作契约,然后让StudentService.svc中的服务类StudentService继承该接口。
在开始编码之前,我们需要先创建操作的基本模型类。在模型类中定义数据契约。定义数据契约的目的,是让模型类可以在通信中被序列化传输。
新建一个文件夹Model来存放模型类。其实模型类可以通过其他类库的方式建立,然后让该项目引用,类似三层架构模式。这里只是为了演示和初步学习。

Student类如下定义。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Web; namespace FirstWcfDemo.Model {
[DataContract]
public class Student {
[DataMember]
public string ID { get; set; } //学号 [DataMember]
public string Name { get; set; }//姓名 [DataMember]
public int Age { get; set; } //年龄
}
}
做接口的目的,就是用来传送数据。接下来,我们定义一个数据库操作类DbService。可以在此类中模拟数据源。
using FirstWcfDemo.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web; namespace FirstWcfDemo {
public class DbService {
private List<Student> _students = new List<Student> {
new Student {ID="",Name="赵紫馨",Age= },
new Student {ID="",Name="李晓欢",Age= },
new Student {ID="",Name="张洪铭",Age= },
new Student {ID="",Name="封越",Age= },
new Student {ID="",Name="王琪乔",Age= }
}; public Student Select(string ID) {
return _students.Where(stu => stu.ID == ID).SingleOrDefault();
} public List<Student> SelectAll() {
return _students;
}
}
}
接下来操作IStudentService接口。代码如下:
using FirstWcfDemo.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text; namespace FirstWcfDemo {
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IStudentService”。
[ServiceContract]
public interface IStudentService {
[OperationContract]
void Add(Student student); [OperationContract]
Student GetStudentByID(string ID);
}
}
然后,在StudentService.svc服务文件中实现接口中的方法。代码如下:
using FirstWcfDemo.Model;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text; namespace FirstWcfDemo {
// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码、svc 和配置文件中的类名“StudentService”。
// 注意: 为了启动 WCF 测试客户端以测试此服务,请在解决方案资源管理器中选择 StudentService.svc 或 StudentService.svc.cs,然后开始调试。
public class StudentService : DbService,IStudentService { public void Add(Student student) { } public Student GetStudentByID(string ID) {
Student rc = null; try {
rc = Select(ID);
}
catch (Exception ex) {
//此处可以记录日志及相关异常操作
}
return rc;
}
}
}
OK!第一个服务应用程序的代码敲打完毕。接下来,就测试该服务。
3、测试服务
本次测试是一个很简单的测试。
第一步,右键单击服务文件StudentService.svc,选中在浏览器中查看。如下图:

然后在弹出的浏览器中显示如下图中相关服务的信息,说明服务正常开启。

在vs2015中,有一个专门用来测试WCF服务的测试客户端,名字叫WcfTestClient.exe。在vs2015之外,打开WcfTestClient.exe有两种方法:第一种是找到该应用程序所在目录,打开该应用程序;第二种是在"VS2015开发人员命令提示"打开,如下图:

打开WcfTestClient.exe应用程序后,其界面如下图所示:

选择 文件》添加服务,然后输入上面浏览器中该服务得地址,然后点击确定。如下图所示:

服务打开后如下图所示:

到此,我们就可以测试刚才建立的服务是否能够正常运行。
左键双击左侧面板的GetStudentByID()项,然后在右侧"请求"面板中输入ID值,点击"调用"按钮,则"响应"面板中会显示出服务的响应数据。如下图:

本篇文章讲述了从创建WCF解决方案和项目、创建服务页面、编码、创建服务程序和使用WcfTestClient.exe测试客户端的一整套过程。内容确实简单了一点。其中服务的创建还可以自己编写服务宿主程序,更可以部署到IIS上面,不过这些都是后话了。
至此,一个WCF初始学习结束。
一、WCF学习之旅-创建第一个服务的更多相关文章
- WCF学习之旅—实现支持REST服务端应用(二十三)
在上一篇(WCF学习之旅—实现REST服务(二十二))文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,本文讲解一下如何创建一个支持REST的WCF服务端程序. 四.在WCF中 ...
- WCF学习之旅—实现支持REST客户端应用(二十四)
WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持RES ...
- WCF学习之旅—第三个示例之二(二十八)
上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1) 使用NuGet下载最新版的Entity Fram ...
- WCF学习之旅—第三个示例之三(二十九)
上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...
- WCF学习之旅—WCF服务部署到应用程序(十)
上接 WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...
- WCF学习之旅—TcpTrace工具(二十六)
止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...
- WCF学习之旅——第一个WCF示例(一)
最近需要用到WCF,所以对WCF进行了解.在实践中学习新知识是最快的,接下来先做了一个简单的WCF服用应用示例. 本文的WCF服务应用功能很简单,却涵盖了一个完整WCF应用的基本结构.希望本文能对那些 ...
- WCF学习之旅—WCF第二个示例(五)
二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...
- WCF学习之旅—WCF第二个示例(七)
三.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据. 在第一个步骤中,你将 Windows 窗体项目添加到解 ...
随机推荐
- Chromosome coordinate systems: 0-based, 1-based
From: https://arnaudceol.wordpress.com/2014/09/18/chromosome-coordinate-systems-0-based-1-based/ I’v ...
- Windows 上安装 pip
1 从 https://pypi.python.org/pypi/pip#downloads 下载安装包 pip-9.0.1.tar.gz 2 解压 pip-9.0.1.tar.gz 3 用CMD ...
- npm教程_脚手架原理以及bootstrap引入
格式:vue init <templateName> <ProjectName> 例子:vue init webpack vue02 运行上面的命令后,脚手架帮忙按照webpa ...
- 深入理解Java面向对象三大特性 封装 继承 多态
1.封装 封装的定义: 首先是抽象,把事物抽象成一个类,其次才是封装,将事物拥有的属性和动作隐藏起来,只保留特定的方法与外界联系 为什么需要封装: 封装符合面向对象设计原则的第一条:单一性原则,一个类 ...
- java必背面试题
JAVA必背面试题和项目面试通关要点 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链接查询和优化问题,手写SQL语句,例如四个球队比赛,用SQL显示所有比赛组合:举例2:选 ...
- 03_Spark集群部署
[安装前的环境准备] Hadoop:2.6.1Java:jdk-1.7.0Spark: spark-1.6.0-bin-hadoop2.6.tgzScala: scala-2.11.4.tgz虚拟机: ...
- axios post请求报错
问题描述: vue中使用axios提交post请求, 请求地址及参数都对, 但是一直报缺少参数的错误 探索:对比post请求数据, 提交数据的方式不对 (1)axios的post请求(返回响应缺少参数 ...
- BZOJ4896 [Thu Summer Camp2016]补退选
本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...
- Croc Champ 2013 - Round 1 E. Copying Data 分块
E. Copying Data time limit per test 2 seconds memory limit per test 256 megabytes input standard inp ...
- js 字符串匹配
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...