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学习之旅-创建第一个服务的更多相关文章

  1. WCF学习之旅—实现支持REST服务端应用(二十三)

    在上一篇(WCF学习之旅—实现REST服务(二十二))文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,本文讲解一下如何创建一个支持REST的WCF服务端程序. 四.在WCF中 ...

  2. WCF学习之旅—实现支持REST客户端应用(二十四)

    WCF学习之旅—实现REST服务(二十二) WCF学习之旅—实现支持REST服务端应用(二十三) 在上二篇文章中简单介绍了一下RestFul与WCF支持RestFul所提供的方法,及创建一个支持RES ...

  3. WCF学习之旅—第三个示例之二(二十八)

    上接WCF学习之旅—第三个示例之一(二十七) 五.在项目BookMgr.Model创建实体类数据 第一步,安装Entity Framework 1)  使用NuGet下载最新版的Entity Fram ...

  4. WCF学习之旅—第三个示例之三(二十九)

    上接WCF学习之旅—第三个示例之一(二十七) WCF学习之旅—第三个示例之二(二十八) 在上一篇文章中我们创建了实体对象与接口协定,在这一篇文章中我们来学习如何创建WCF的服务端代码.具体步骤见下面. ...

  5. WCF学习之旅—WCF服务部署到应用程序(十)

    上接  WCF学习之旅—WCF寄宿前的准备(八) WCF学习之旅—WCF服务部署到IIS7.5(九) 五.控制台应用程序宿主 (1) 在解决方案下新建控制台输出项目 ConsoleHosting.如下 ...

  6. WCF学习之旅—TcpTrace工具(二十六)

    止文(WCF学习之旅—TcpTrace工具(二十五))介绍了关于TcpTrance的一种使用方式,接下来介绍第二种使用方式. 三.通过ListenUri实现基于tcpTracer的消息路由 对于路由的 ...

  7. WCF学习之旅——第一个WCF示例(一)

    最近需要用到WCF,所以对WCF进行了解.在实践中学习新知识是最快的,接下来先做了一个简单的WCF服用应用示例. 本文的WCF服务应用功能很简单,却涵盖了一个完整WCF应用的基本结构.希望本文能对那些 ...

  8. WCF学习之旅—WCF第二个示例(五)

    二.WCF服务端应用程序 第一步,创建WCF服务应用程序项目 打开Visual Studio 2015,在菜单上点击文件—>新建—>项目—>WCF服务应用程序.在弹出界面的“名称”对 ...

  9. WCF学习之旅—WCF第二个示例(七)

    三.创建客户端应用程序 若要创建客户端应用程序,你将另外添加一个项目,添加对该项目的服务引用,配置数据源,并创建一个用户界面以显示服务中的数据. 在第一个步骤中,你将 Windows 窗体项目添加到解 ...

随机推荐

  1. JS ——DOM,BOM(包含盒模型,动画)总结

    JS盒模型 content: 通过计算后样式获取padding + content: box.clientWidth | box.clientHeightborder + padding + cont ...

  2. 微内核VS宏内核【转】

    本文转载自:https://segmentfault.com/a/1190000002711544 内核按照体系结构分为两类 : 微内核(microkernel)与宏内核(macrokernel). ...

  3. 在ubuntu16.04上搭建视频服务器

    推荐方案三:超级简单 方案一.hls (缺陷:需要花很多时间切片) 1.Distributor ID: Ubuntu  Description: Ubuntu 16.04.3 LTS  Release ...

  4. ACM/ICPC 2018亚洲区预选赛北京赛站网络赛 80 Days(尺取)题解

    题意:n个城市,初始能量c,进入i城市获得a[i]能量,可能负数,去i+1个城市失去b[i]能量,问你能不能完整走一圈. 思路:也就是走的路上能量不能小于0,尺取维护l,r指针,l代表出发点,r代表当 ...

  5. Luogu 2671 求和 NOIP2015T3

    题目链接 题解 20pts $O(n^3)$枚举$x,y,z$,根据题目要求判断 40pts $O(n^2)$枚举$x,z$,需要满足$x,z$奇偶相同 20~40pts的代码我都没有写过...就不贴 ...

  6. [luoguP1119]灾后重建

    题目链接 毒瘤题 卡spfa 可能dij也卡,没试过 然后放floyd过了 但其实spfa很好打,虽然只有60 让我们来分析一下spfa的效率,假设这个出题人极其毒瘤,出网格图 又因为是在线询问,所以 ...

  7. NS3 fifth.cc 拥塞窗口实例

    fifth.cc /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /* * This progr ...

  8. [CentOS_7.4]Linux编译安装mono环境

    一 安装mono 安装过程: 下载mono安装源,配置,编译,安装,设置环境变量. # wget http://download.mono-project.com/sources/mono/mono- ...

  9. sqlserver 存入DB中的中文乱码

    在war包中的appliation.properties中,配置的数据库连接做了修改,也不知道当初为什么这么改 导致存入DB中的中文是??? testaaa.jdbc.type=mssqltestaa ...

  10. (转)c++一些知识点

    异常详解: https://www.cnblogs.com/hdk1993/p/4357541.html#top 模版详解: https://blog.csdn.net/lezardfu/articl ...