第一步、建立WCF服务库

点击确定,将建立一个WCF 服务库示例程序,自动生成一个包括IService1.cs和Service1.cs两个类文件。我们可以直接对其修改开发我们的服务,但一般直接删除。

第二步:开发实体类

在解决方案中,添加新类Module.cs

在类中要首先引入using System.Runtime.Serialization命名空间

实体类具体代码如下:

 1 namespace WcfServiceLib.model
 2 {
 3
 4     /// <summary>
 5
 6     /// 模块实体
 7
 8     /// </summary>
 9
10     [DataContract]
11
12     class Module
13
14     {
15         [DataMember]
16         public string ModuleNO;
17         [DataMember]
18         public string ModuleName;
19      }
20 }

为使在WCF服务被调用过程中科被序列化,在实体类前加[DataContract]标签,实体类每个成员前加[DataMember]标签

第三步:创建WCF服务接口

WCF服务要对外提供服务,需要创建服务的接口,声明对外服务的内容。

在解决方案中添加新的接口类imoduleservice.cs,然后引入名门空间using System.ServiceModel;

具体代码如下:

 1 using System;2 using System.Collections.Generic;3 using System.Linq; using System.Text;4 using System.ServiceModel;5 using WcfServiceLib.model;6 7 namespace WcfServiceLib.iservice {8       /// <summary>9       /// 接口类
10     /// </summary>
11      [ServiceContract]
12      public interface imoduleservice
13      {
14          [OperationContract]
15          void AddModules(Module book);
16
17         [OperationContract]
18          Module GetModuleByID(string id);
19
20         [OperationContract]
21          void RemoveModule(string id);
22
23         [OperationContract]
24          void ModuleUpdate(Module book);
25      }
26 }

WcfServiceLib.iservice

接口类前要加[ServiceContract]标签,每个成员前要加[OperationContract]标签,标签的作用是保证外部调用可以访问到该方法。

第四步:接口类的实现

实现第三步中声明的接口类,只有这样WCF服务才会正在提供服务。

在解决方案中添加接口实现类moduleservice,引入名称空间using System.ServiceModel;

具体代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using WcfServiceLib.iservice;
using System.ServiceModel;
using WcfServiceLib.model;namespace WcfServiceLib.service
{ /// <summary> /// 接口类实现 /// </summary> [ServiceBehavior(InstanceContextMode = InstanceContextMode.Single)] class moduleservice : imoduleservice { #region imoduleservice 成员 List<Module> _Modules = new List<Module>();public void AddModules(Module m) { m.ModuleNO = Guid.NewGuid().ToString(); _Modules.Add(m); }public Module GetModuleByID(string id) { Module m = _Modules.Find(p => p.ModuleNO == id); return m; }public void RemoveModule(string id) { Module m = _Modules.Find(p => p.ModuleNO == id); _Modules.Remove(m); }public void ModuleUpdate(Module module) { Module m = _Modules.Find(p => p.ModuleNO == module.ModuleNO); m.ModuleName = module.ModuleName; }#endregion }
}

WcfServiceLib.model

到此为止,WCF服务的主体就开发完成了,那么如何才可以让调用者使用这个服务呢?我们就需要吧WCF服务注册并发布一下。

第五步:WCF服务发布

在VS2008以上的版本中都提供了对WCF服务可视化注册和发布的工具。

出现如下界面:

可以看到有两个终结点,第一个是服务节点,第二个是元数据节点。由于我们是用VS自带的服务库项目来创建的,配置文件中还没有删除这些信息,所以第一个节点里还保留着自带的服务信息Iservice.下面我们把这个服务更改为我们上文编写的服务的信息。

单击左侧的“Services”-“Services.Service1”在右侧的Name,弹出“服务类型浏览器”对话框,在此类型中我们找到此WCF服务项目编译出来的dll文件,双击它就可以出现此服务中的对外公布的服务,点击选中它单击确定。

然后,我们展开左侧“Services”->“WcfServiceLib.service.moduleservice”->“Endpoints”,单击第一个“Empty Name”,从右边的“EmptyProperties”中的Contract中我们可以看到,这里的Contract仍然用的是Services.IService1。按照上文的步骤在走一遍,找到DLL后确定。

最后关闭配置窗口,保存。

到此为止,服务就开发并发布完成了。接下来我们将WCF进行托管后就可以使用了。WCF服务托管有三种方式,最常用的是IIS托管。我们看一下WCF服务是如何进行IIS托管的。

第六步:WCF服务IIS发布

1、在解决方案上右键添加网站,类型选择WCF服务。

2、建立起来的新的WCF服务站点中在App_Code文件中自动为我们生成两个类文件:IService.cs和Service.cs。这两个文件对我们来说没有用,我们删掉。

3、然后添加对WCF服务库项目的引用。结果如下:

4、然后修改Service.svc文件,代码如下:

<%@ ServiceHost Language="C#" Debug="true" Service="WcfServiceLib.service.moduleservice" %>

5、在web.config上右击选择“编辑WCF配置”。

关闭WCF编辑工具,保存即完成了服务的发布配置。

6、在Service.svc上右击,选择“在浏览器中查看”,在IE中运行此服务。

7、在IIS中部署站点,建立虚拟目录指向该站点。然后浏览界面如下。

到此,WCF服务在IIS中托管成功。接下来,我们看一下如何使用WCF服务。

第七步:WCF服务的使用

1、新建Asp.net应用程序

2、右键点击“引用”--->添加服务引用

添加成功后,解决方案中文件如下:

3、后台调用WCF服务,代码如下:

 1 protected void Page_Load(object sender, EventArgs e)
 2 {
 3      if (!IsPostBack)
 4         {
 5                 ServiceReference1.imoduleserviceClient c = new WCF_Cilent.ServiceReference1.imoduleserviceClient();
 6                 c.AddModules(new WCF_Cilent.ServiceReference1.Module());
 7
 8                 if (c.GetAllModule().Length > 0)
 9                 {
10                     Response.Write(c.GetAllModule()[0].ModuleNO.ToString());
11                     Response.End();
12                 }
13         }
14 }

4、运行程序,出现如下调用结果,调用成功。

转载于:https://www.cnblogs.com/powerzhang/p/3174822.html

WCF服务开发与调用的完整示例相关推荐

  1. VB.NET工作笔记008---vs2017创建使用WCF服务_并调用服务demo

    技术交流QQ群[JAVA,.NET,BigData,AI]:170933152 声明,找的例子,之前没有做过wcf,但是看了看例子感觉挺简单的,记一下吧 WCF的全称是Windows Communic ...

  2. 【Kotlin】Lambda 表达式 ( 简介 | 表达式语法 | 表达式类型 | 表达式返回值 | 调用方式 | 完整示例 )

    文章目录 I . Lambda 表达式 简介 II . Lambda 表达式语法 III . Lambda 表达式类型 IV . Lambda 表达式返回值 V . Lambda 表达式调用 VI . ...

  3. Android开发java调用C简单示例

    目录 下载NDK和CMake 新建NDK项目 写入C++代码,并运行 本文使用的Android Studio版本是windows版Android Studio Bumblebee | 2021.1.1 ...

  4. SharePoint 2013 调用WCF服务简单示例

    内容比较简单,主要记录自己使用SharePoint 2013WCF服务遇到的小问题和小经验,分享给大家,希望能够给需要的人有所帮助.好吧,进入正题! 第一部分 SharePoint 2013调用自带W ...

  5. WCF中常见的几种Host,承载WCF服务的方法详解

    1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...

  6. 部署承载于 Internet 信息服务中的 WCF 服务

    部署承载于 Internet 信息服务中的 WCF 服务 开发和部署承载于 Internet 信息服务 (IIS) 中的 Windows Communication Foundation (WCF) ...

  7. WCF中常见的几种Host,承载WCF服务的方法

    1:写在前面 我们都知道WCF在运行的时候必须自己提供宿主来承载服务.WCF 本身没有附带宿主,而是提供了一个 ServiceHost 的类,该类允许您在自己的应用程序中host WCF 服务.然后调 ...

  8. java调用wcf_详解JAVA调用WCF服务的示例代码

    这一篇将要解决java中调用WCF的问题,使用的依旧是上一篇中托管在IIS中的WCF服务,本来我是打算用axis来写这篇文章的,可就在我开始之前,无意中发现了在java包中自带的wsimport工具 ...

  9. WCF分布式开发常见错误(3):客户端调用服务出错

    我们手动编码使用客户端调用WCF服务的时候会出现服务不支持 .Net Framing的错误, 具体信息如下: You have tried to create a channel to a servi ...

最新文章

  1. request.form()和request()和request.data的区别
  2. new操作符具体干了啥
  3. 基于SSL的mysql(MariaDB)主从复制
  4. 那些年,程序员读错的英语
  5. 芋道 Spring Boot 自动配置原理
  6. 第六十九期:【学习分享】温水里的程序员,技术将成为温水
  7. Android中关于Volley的使用(四)利用NetworkImageView来加载图片
  8. 多个apple苹果设备(iphone,mac,pad,icloud)之间同步数据
  9. (17)DialogBox和DialogBoxParam函数
  10. RealSense D435i深度相机介绍
  11. 图像处理(一)bicubic解释推导
  12. oracle中算百分比,Oracle百分比分析函数RATIO_TO_REPORT() OVER()实例详解
  13. [转]破解无线路由器密码
  14. IDEA中Debugger的使用
  15. 判断听云是否正常嵌入及注意事项
  16. 怎么给领导做项目汇报
  17. Flutter 实现风车加载动画组件
  18. python爬取酷狗音乐_Python爬取酷狗音乐
  19. [译] APT分析报告:01.Linux系统下针对性的APT攻击概述
  20. 速途网范锋:重要合作可能决定网络企业生死

热门文章

  1. VigiBase中搜索和眼病相关的统计数据
  2. intellij中导入外部的依赖包+在当前的工程中使用
  3. 哑编码官方代码自己的注解
  4. ubuntu搜狗输入法突然无法使用(新解)
  5. OpenCV学习笔记五-图像混合
  6. 机器学习:正则化原理总结
  7. C/C++编程心得(三)
  8. 【数学基础】概率论——p(x|\theta)和p(x;\theta)的区别
  9. java获取服务器信息返回前端,java程序获取linux服务器进程信息
  10. 如何使用matlab得出pid控制参数值,基于MATLAB的PID控制器参数整定及仿真