一、WCF学习之旅-创建第一个服务

时间:2022-09-04 20:27:46

WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfGeBEfyQL9XlTMy_aW4Zno3HEkKa

WCF有三种通信模式:单向、请求-响应、双工。这些通信模式留待后面再继续学习和讲解。

今天要学习的是创建一个测试的demo,所谓的hello world入门级程序。OK,let's start!

1、创建解决方案和项目

打开vs2015,文件》新建》项目,选中WCF服务应用程序。如下图:

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

我们一般习惯在IStudentService.cs接口文件中定义服务契约和操作契约,然后让StudentService.svc中的服务类StudentService继承该接口。

在开始编码之前,我们需要先创建操作的基本模型类。在模型类中定义数据契约。定义数据契约的目的,是让模型类可以在通信中被序列化传输。

新建一个文件夹Model来存放模型类。其实模型类可以通过其他类库的方式建立,然后让该项目引用,类似三层架构模式。这里只是为了演示和初步学习。

一、WCF学习之旅-创建第一个服务

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,选中在浏览器中查看。如下图:

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

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

一、WCF学习之旅-创建第一个服务

服务打开后如下图所示:

一、WCF学习之旅-创建第一个服务

到此,我们就可以测试刚才建立的服务是否能够正常运行。

左键双击左侧面板的GetStudentByID()项,然后在右侧"请求"面板中输入ID值,点击"调用"按钮,则"响应"面板中会显示出服务的响应数据。如下图:

一、WCF学习之旅-创建第一个服务

本篇文章讲述了从创建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. 手把手教你在Ubuntu上安装Apache、MySql和PHP

    1:首先安装apache:打开终端(ctrl+Alt+t), 输入命令:sudo apt-get install apache2即可安装, 安装完后,打开浏览器,在地址栏输入:localhost或者h ...

  2. 粒子拼字效果(getImageData方法)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. mysql&colon;添加索引

    ALTER TABLE tb_user_type ADD INDEX user_type_index3 (report_type_id) ALTER TABLE tb_user_type ADD IN ...

  4. 深入理解java虚拟机【Java虚拟机类生命周期】

    C/C++等纯编译语言从源码到最终执行一般要经历:编译.连接和运行三个阶段,连接是在编译期间完成,而java在编译期间仅仅是将源码编译为Java虚拟机可以识别的字节码Class类文件,Java虚拟机对 ...

  5. HDU&lowbar;2051——十进制到二进制转换

    Problem Description Give you a number on base ten,you should output it on base two.(0 < n < 10 ...

  6. windows做时间服务器,linux和windows时间同步

    找了很多的资料,都没有windows做时间服务,linux同步windows的时间的,最后自己找了一些软件,终于搞定了,写出来给大家共享,以免大家多走弯路 首先在http://www.meinberg ...

  7. 在Unity中对Lua进行调试

    前言 接我之前的文章,讲到使用IntelliJ IDEA(做为Lua的编辑器)+EmmlyLua(插件),当然EmmlyLua也提供调试功能的. Lua代码提示和方法跳转 在Lua中提示UnityEn ...

  8. PHP的UTF-8中文转拼音处理类

    <?php /** * PHP 汉字转拼音 * @author Jerryli(hzjerry@gmail.com) * @version V0.20140715 * @package SPFW ...

  9. python之线程相关操作&lpar;补充&rpar;

    1 线程的其他方法 import threading import time from threading import Thread, current_thread def f1(n): time. ...

  10. C&num;控制台下的AO程序

    好几年没写过控制台程序了(上一次是大二时写坐标转换时用过),因为我觉得用户难以接受没有良好操作界面的应用程序,我不想偷懒,今天来将应用程序改写为控制台程序,记录一下,忘记的内容: 1.数据的交互 不管 ...