zoukankan      html  css  js  c++  java
  • 一、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="2017001",Name="赵紫馨",Age=20 },
                new Student {ID="2017002",Name="李晓欢",Age=19 },
                new Student {ID="2017003",Name="张洪铭",Age=21 },
                new Student {ID="2017004",Name="封越",Age=22 },
                new Student {ID="2017005",Name="王琪乔",Age=18 }           
            };
    
            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初始学习结束。

  • 相关阅读:
    html
    头部标签
    ajax
    分辨率
    js 运动基础
    js DOM
    js定时器
    js数组
    js基础
    例子:js简易日历
  • 原文地址:https://www.cnblogs.com/williamwsj/p/7078067.html
Copyright © 2011-2022 走看看