使用C#创建简单的WCF服务
本文属于原创,转载请注明出处,谢谢!
一、开发环境
操作系统:Windows 10
开发环境:VS2015
编程语言:C#
IIS版本:10.0.0.0
二、添加WCF服务、Internet Information Services(IIS)
1、进入“控制面板”,打开“程序和功能”,点击左上角的“启用或关闭Windows功能”后,在“.NET Framework 4.6 高级服务”中的子节点选中“WCF 服务”,如下图所示:
2、再找到“Internet Information Services”,同样选中该节点,如下图所示:
3、点击“确定”按钮以便安装这些服务与组件,等待完成安装即可。
三、新建一个WCF服务库
1、使用VS2015新建一个WCF服务库,并将项目名称改为“MyWCFService”,如下图所示:
2、在解决方案资源管理器里将“IService1”接口、“Service1”类分别重命名为“IMyWCFService”与“MyWCFService”,如下图所示:
VS2015将会分别创建“IService1”接口、“Service1”类,“IService1”接口含GetData、GetDataUsingDataContract方法,并使用“Service1”类实现了该接口,代码如下:
“IService1”接口:
- // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IMyWCFService”。
- [ServiceContract]
- public interface IService1
- {
- [OperationContract]
- string GetData(int value);
- [OperationContract]
- CompositeType GetDataUsingDataContract(CompositeType composite);
- // TODO: 在此添加您的服务操作
- }
- // 使用下面示例中说明的数据约定将复合类型添加到服务操作。
- [DataContract]
- public class CompositeType
- {
- bool boolValue = true;
- string stringValue = "Hello ";
- [DataMember]
- public bool BoolValue
- {
- get { return boolValue; }
- set { boolValue = value; }
- }
- [DataMember]
- public string StringValue
- {
- get { return stringValue; }
- set { stringValue = value; }
- }
- }
“Service1”类:
- // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“Service1”。
- public class Service1 : IService1
- {
- public string GetData(int value)
- {
- return string.Format("You entered: {0}", value);
- }
- public CompositeType GetDataUsingDataContract(CompositeType composite)
- {
- if (composite == null)
- {
- throw new ArgumentNullException("composite");
- }
- if (composite.BoolValue)
- {
- composite.StringValue += "Suffix";
- }
- return composite;
- }
- }
3、将鼠标移到解决方案资源管理器中项目“MyWCFService”上并右击鼠标,弹出上下文菜单,在菜单中选中“发布”后,弹出下图所示的“发布 WCF服务”对话框,如下图所示:
在目标位置选择“D:\WCF”,其他按默认,点击“发布”按钮,即可在“D:\WCF”文件夹里生成如下图所示的文件:
四、新建一个WCF服务网站
1、点击打开IIS,新建一个网站,网站名称设置为“MyWCFService”,物理地址选择“D:\WCF”,端口从默认的80改为81,如下图所示:
2、点击确定后,即新建一个WCF服务网站,我们可以在浏览器输入“http://localhost:81/MyWCFService.MyWCFService.svc”进行验证,如下图所示:
五、新建一个控制台客户端测试WCF服务
1、在原来的解决方案里新建一个项目名为“WCFTestClient”的控制台程序,如下图所示:
2、鼠标右键点击项目“WCFTestClient”,在弹出的上下文菜单中选择“设为启动项目”,如下图所示:
3、鼠标右键点击项目“WCFTestClient”子节点“引用”,在弹出的上下文菜单中选择“添加服务引用”,如下图所示:
4、将弹出“添加服务引用”对话框,在“地址”输入刚刚建的WCF服务网站地址(http://localhost:81/MyWCFService.MyWCFService.svc),点击“转到”按钮之后,将会在“服务”列表里列出刚才建的服务,选择“IMyWCFService”后,将会在“操作”列表里列出GetData、GetDataUsingDataContract方法,如下图所示:
5、将命名空间改为“MyWCFReference”后点击“确定”按钮之后,将会在项目“WCFTestClient”子节点增加“Service References”等,如下图所示:
6、在Program类上方添加对WCF服务引用,并在Main主函数里输入以下代码:
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using WCFTestClient.MyWCFReference;
- namespace WCFTestClient
- {
- class Program
- {
- static void Main(string[] args)
- {
- MyWCFServiceClient client = new MyWCFServiceClient();
- Console.WriteLine(client.GetData());
- CompositeType cType = new CompositeType() { StringValue = "Hello World!", BoolValue = true };
- Console.WriteLine(client.GetDataUsingDataContract(cType).StringValue);
- }
- }
- }
六、运行客户端控制台程序
运行“WCFTestClient”客户端控制台程序,如下图所示:
使用C#创建简单的WCF服务的更多相关文章
- 1.WCF学习--创建简单的WCF服务
一.基本了解WCF 1.面向服务代表的是一种设计理念,和面向对象.面向组件一样,体现的是一种对关注点进行分解的思想,面向服务是和技术无关的 2.WCF需要依存一个运行着的宿主进程,服务寄宿就是为服务指 ...
- 通过VS创建简单的WCF服务
http://www.cnblogs.com/artech/archive/2007/09/15/893838.html http://www.topwcftutorials.net/2013/09/ ...
- WCF学习系列一_创建第一个WCF服务
原创作者:灰灰虫的家http://hi.baidu.com/grayworm WCF开发实战系列一:创建第一个WCF服务 在这个实战中我们将使用DataContract,ServiceContract ...
- WCF开发实战系列一:创建第一个WCF服务
WCF开发实战系列一:创建第一个WCF服务 (原创:灰灰虫的家http://hi.baidu.com/grayworm) 在这个实战中我们将使用DataContract,ServiceContract ...
- WCF开发实战系列一:创建第一个WCF服务 转
转 http://www.cnblogs.com/poissonnotes/archive/2010/08/28/1811064.html 在这个实战中我们将使用DataContract,Servic ...
- 创建第一个WCF服务
创建WCF服务 1. 新建立空白解决方案,并在解决方案中新建项目,项目类型为:WCF服务应用程序. 2.建立完成后如下图所示: 3.删除系统生成的两个文件IService1.cs与Service1.s ...
- 1 学习wcf 编写简单的WCF服务流程 并发布在IIS上
学习笔记 学习大佬的博客 https://www.cnblogs.com/iamlilinfeng/archive/2012/09/25/2700049.html 写一遍加深印象 图片看不清楚的 可 ...
- 学习构建一个简单的wcf服务
入门,构建第一个WCF程序 1.服务端 建立一个控制台应用程序作为Server,新建一个接口IData作为服务契约.这个契约接口一会儿也要放到Client端,这样双方才能遵循相同的标准.别忘了添加对 ...
- 使用nomad && consul && fabio 创建简单的微服务系统
具体每个组件的功能就不详细说明了 nomad 一个调度工具,consul 一个服务发现,健康检查多数据中心支持的工具 fabio 一个基于consul的负载均衡&&动态路由工具,对于集 ...
随机推荐
- python 发包爬取中国移动充值页面---可判断手机号是否异常
1.用requests.Session()的方式,可以实现自动化管理cookie.session等. 2.具体流程可以抓包分析. 所有请求的参数如要搞清楚需要分析js源码.只能提示一下,一共分为三步: ...
- JVM-1.编译
目录 一.编译器概述 二.编译器组成 三.示例 四.深入理解JVM中的编译器 五.语法糖 六.补充 一.编译器概述 1.编译器实质 编译器的实质是将一种语言规范转化为另一种语言规范:由人容易理 ...
- TypeScript 零基础入门
前言 2015 年末看过一篇文章<ES2015 & babel 实战:开发 npm 模块>,那时刚接触 ES6 不久,发觉新的 ES6 语法大大简化了 JavaScript 程序的 ...
- 测序分析软件-trimmomatic的记录
1.下载相关软件,网址:http://www.usadellab.org/cms/index.php?page=trimmomatic,它有源代码和二进制两种文件(建议都下载,然后合并成一个文件,因为 ...
- HTTP协议入门
1.概述 (1)HTTP是应用层协议,是从Web服务器传输超文本到本地浏览器的传送协议,端口号为80.(2)默认情况下HTTP使用TCP,但是也可以基于以后存在的其他可靠传输协议.由于UDP无法提供可 ...
- influxdb + Grafana可视化监控平台
在centos6.5上influxdb + Grafana监控平台配置: 1.RedHat and CentOS users can install the latest stable version ...
- golang 浮点数 取精度的效率对比
需求 浮点数取2位精度输出 实现 代码 package main import ( "time" "log" "strconv" " ...
- 没有main方法真的不能执行代码了吗?
今天看北大慕课遇到一段代码,于是下载下来跑了一下,奇葩的是,没有main方法既没报错,还出了结果. 下面贴出代码: class InitialTest { public static void mai ...
- 关于getHTML()方法和getHtmlAjax()方法 GetHttpLength, 清除HTML标签
public string getHtml(string Url, string type = "UTF-8") { try { System.Net.WebRequest wRe ...
- OFFICE 文档转换为html在线预览
OFFICE 文档在线预览方案很多: 服务器先转换为PDF,再转换为SWF,最后通过网页加载Flash预览,比如flexpaper Office文档直接转换为SWF,通过网页加载Flash预览 微软的 ...