C# WCF入门

一、什么是WCF

WCF是使用托管代码建立和运行面向服务(Service Oriented)应用程序的统一框架。它使得开发者能够建立一个跨平台的、安全、可信赖、事务性的解决方案,且能与已有系统兼容协作。WCF是微软分布 式应用程序开发的集大成者,它整合了.Net平台下所有的和分布式系统有关的技术,例如.Net Remoting、ASMX、WSE和MSMQ(消息队列)。以通信(Communiation)范围而论,它可以跨进程、跨机器、跨子网、企业网乃至于 Internet;以宿主程序而论,可以以ASP.NET,EXE,WPF,Windows Forms,NT Service,COM+作为宿主(Host)。WCF可以支持的协议包括TCP,HTTP,跨进程以及自定义,安全模式则包括SAML, Kerberos,X509,用户/密码,自定义等多种标准与模式。也就是说,在WCF框架下,开发基于SOA的分布式系统变得容易了,微软将所有与此相 关的技术要素都包含在内,掌握了WCF,就相当于掌握了叩开SOA大门的钥匙。

最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。

二、第一个WCF程序

1.我们先新建一个项目,选择WCF中的WCF服务应用程序新建:

在这里插入图片描述
2.系统生成了两个默认文件:IService1.cs和Service1.svc,其中IService1.cs是定义接口的,Service1.svc用来实现该接口。在这两个文件中可以看到如下的代码:

// 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的接口名“IService1”。
    [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; }
        }
    }
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;
        }

可以看到接口文件IService1.cs里有几个特性分别是:[ServiceContract]、[OperationContract]、[DataContract]、[DataMember],大致的用途如下:

[ServiceContract]:指明该接口是一个WCF的服务契约,可以被外部的调用,不加则无法被外部调用。

[OperationContract]:指明该方法是一个WCF的方法契约,可以被外部的调用,不加则无法被外部调用。

[DataContract]:数据契约,指明该类是可供服务端和客户端相互传递自定义数据的类型,声明后该类型就可以被序列化在服务端和客户端之间传送。

[DataMember]:数据成员,声明后的属性可以参与到客户端和服务器端的类的属性的序列化,没有声明的不参与序列化。

在Service1.svc中已经实现了接口中的方法,将Service1.svc设置为启动项,后调试会如下所示,这是vs自带的服务测试的工具,不过无法测试异步的服务。
  在这里插入图片描述
双击左侧树状图中的方法GetData(),在上方输入值后点击调用可以下方看到方法返回值,则说明我们的接口成功了。在这里插入图片描述

三、WCF服务的使用

1.接下来对我们的WCF程序进行发布到本地文件,发布的过程和WEB的项目发布类似,发布后我们部署到IIS上面。右键浏览Service1.svc出现如下的页面后表明发布成功。http://192.168.3.30:7358/Service1.svc?wsdl就是我们需要引用的服务地址。在这里插入图片描述
 注意如果无法发布成功,可能是部分的Windows功能没有开启,如下所示。在这里插入图片描述
2.新建一个新的控制台应用程序,右键引用->添加服务引用->将WCF服务引用地址输入点击确认即可引用成功。在这里插入图片描述
引用成功后在Service References文件夹下出现了一个ServiceReference1服务,在控制台程序中引用WCF服务的命名空间using ConsoleApplication2.ServiceReference1;使用如下代码即可访问服务接口。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//添加WCF的服务命名空间
using ConsoleApplication2.ServiceReference1;

namespace ConsoleApplication2
{
    class Program
    {
        static void Main(string[] args)
        {
            //Service1Client是在添加服务引用后服务器端的Service1在客户端的代理类,一般的格式都是"*Client"这种格式的
            Service1Client sercive = new Service1Client();
            string str = sercive.GetData(666);
            Console.WriteLine("WCF服务返回值为:" + str);
            Console.ReadKey();
        }
    }
}

返回结果如下:
在这里插入图片描述

WCF入门教材 C#
07-17
WCF入门教材,很适合初学者学习使用,写的很详细,很周到
WCF示例代码(C#.net)
01-15
在这个例子中,实现了一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。 •Contracts:一个类库项目,定义服务契约(Service Contract),引用System.ServiceMode程序集(WCF框架的绝大部分实现和API定义在该程序集中); •Services:一个类库项目,提供对WCF服务的实现。定义在该项目中的所有WCF服务实现了定义在Contracts中相应的服务契约,所以Services具有对Contracts项目的引用; •Hosting:一个控制台(Console)应用,实现对定义在Services项目中的服务的寄宿,该项目须要同时引用Contracts和Services两个项目和System.ServiceMode程序集; •Client:一个控制台应用模拟服务的客户端,该项目引用System.ServiceMode程序集。
C#-WCF协议通讯_Net5
最新发布
weixin_41073935的博客
08-02 70
一、前言  以前一直在用WebService,突发奇想能用WCF不再用WebServer,毕竟微软一直在推崇WCF。(当然具体情况具体分析,毕竟为了学习)  C#里的WebService可以理解为WCF的一个分支(没见过任何一篇文章表露过“WCF包含WebService”的意思,所以只能这样理解一下,大多数还是认为WebS...
无废话WCF入门教程一[什么是WCF]
weixin_33901641的博客
09-25 1286
一、概述   Windows Communication Foundation(WCF)是由微软发展的一组数据通信的应用程序开发接口,可以翻译为Windows通讯接口,它是.NET框架的一部分。由 .NET Framework 3.0 开始引入。   WCF的最终目标是通过进程或不同的系统、通过本地网络或是通过Internet收发客户和服务之间的消息。   WCF合并了Web服务、.ne...
C#学习之简单的WCF例子
weixin_34054931的博客
02-28 195
  学silverlight学到WCF,嗯,WCF的确有点难,不过没所谓,一点一点来,下面就尝试着实现一个最基本最简单的WCF例子,里面不涉及到EndPoint、Binding、Element、异步调用、序列化等等这些或者其他更难理解的概念,只是简单地按照默认设置用最简单的代码把WCF最基本的应用体现出来。 第一步:创建一个空的解决方案,新建一个WCF服务应用程序项目(使用默认名字) 来模拟服...
C#)一个WCF简单实例
weixin_34250434的博客
05-26 265
以订票为例简单应用wcf新建一个wcf服务应用程序      在IService1.cs定义服务契约  namespace WcfDemo{ // 注意: 如果更改此处的接口名称 "IService1",也必须更新 Web.config 中对 "IService1" 的引用。 [ServiceContract] // 服务合同 即提供服务的接口或类 pu...
C# WCF入门学习.doc
01-10
### C# WCF入门学习知识点概述 #### 一、什么是WCFWCF(Windows Communication Foundation)是由微软推出的一个统一的编程模型和技术框架,旨在帮助开发者构建和运行面向服务(Service Oriented Architecture, ...
WCF入门教程(很全,很简单)
05-14
如果你是新手相信对你会有很大的帮助,如果你是老手,那也会帮助你快速的捡起来!
C# WCF项目示例
02-23
WCF示例项目,c#...................................................................................................................................
WCF入门教程,我的第一个WCF
01-30
WCF 代码实例 简单入门 我的第一个HelloWCF ,自己写的,可以运行,在注意VS要以管理员的身份运行不然无法启动一个服务进程
C# WCF开发实例代码
04-23
一个C#实现的异常记录捕获工程,包含服务端所有源码
C# WCF架构创建过程 (C/S)
10-31
C# WCF架构创建过程 (C/S),c# winform .Net 架构 编程
VS2010版C# WCF入门教程:创建与配置服务
"C# WCF简单入门图文教程,基于VS2010,涵盖了创建WCF服务库、使用DataContract和服务Contract等特性的基础步骤,以及配置服务运行的方法,包括编辑WCF配置以对外发布服务和设置元数据终结点。教程通过删除默认示例...
C# WCF入门详解:构建SOA应用的微软框架
C# WCF经典资料是一份深入浅出的指南,旨在帮助初学者理解和掌握Windows Communication Foundation (WCF),这是微软针对Service-Oriented Architecture (SOA)开发的一款.NET框架。WCF的核心目标是提供一个统一的框架...
c# 开发WCF服务
zhangzhechun的专栏
03-31 1543
要自定义WCF服务中处理客户端POST请求数据的行为,您可以创建一个自定义的消息编码器(Message Encoder),并将其添加到服务终结点(Service Endpoint)的绑定(Binding)中。编译和部署WCF服务。总之,要自定义WCF服务中处理客户端POST请求数据的行为,您需要创建一个自定义消息编码器,并将其添加到服务终结点的绑定中。要将自定义消息编码器添加到服务终结点的绑定中,您可以在配置文件中指定一个自定义绑定(Custom Binding),并将自定义消息编码器添加到绑定中。
写文章

热门文章

  • C#调用接口Post提交数据 application/x-www-form-urlencoded 方式 7395
  • C# WCF入门 3713
  • C#调用WebService接口简单示例 2350
  • C# Lucene.Net 使用 2075
  • C# ASP.NET WebApi入门 1785

分类专栏

  • C# 分布式缓存 3篇
  • C# ORM、IOC 5篇
  • C# WebSerivce、WebApi、WCF 7篇
  • C# 4篇
  • C# Linq、Lamdba 7篇
  • C# Quartz.Net 1篇
  • C# 设计模式
  • C# Lucene 2篇
  • C# 封装的帮助类 1篇
  • C# 日志记录 2篇
  • SQL SERVER 2篇

最新评论

  • C# Linq 学习笔记二 Linq标准查询概述

    water___Wang: 挺好的,加油~

  • C# Cron在线生成

    water___Wang: 都是博主辛苦创作,我来支持一下!

  • C# Redis的使用和简单封装

    不吃西红柿丶: 写的挺不错的,要持续稳定输出哦~

大家在看

  • 树的结点计数
  • 9.网工入门篇--------关于实现VLAN间通信的介绍
  • 基于SpringBoot+Vue的原创歌曲分享平台系统+万字论文+PPT+Mp4演示
  • Flutter ElevatedButton组件 488
  • 基于SpringBoot+Vue的可盈保险合同管理系统+万字论文+Mp4演示

最新文章

  • Redis配置不同端口服务部署在同一台计算机服务器上
  • C# Redis的使用和简单封装
  • C# WCF通信
2021年1篇
2020年35篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家邯郸圣诞玻璃钢雕塑武汉校园玻璃钢雕塑定做价格郑州景观标识玻璃钢雕塑设计铜仁玻璃钢座椅雕塑质量佳的玻璃钢花盆定制玻璃钢雕塑价位二连浩特湖艺玻璃钢校园雕塑广东室内商场美陈哪家好漳州玻璃钢广场雕塑厂家蘑菇玻璃钢卡通雕塑订做信阳名人玻璃钢雕塑滁州人物玻璃钢雕塑公司儿童玻璃钢雕塑设计方案保定曲阳玻璃钢雕塑克拉玛依卡通玻璃钢雕塑宁夏玻璃钢公园雕塑广东玻璃钢花盆雕塑厂玻璃钢酒店雕塑厂家湛江欧式玻璃钢人物雕塑海南玻璃钢奶牛雕塑平凉玻璃钢雕塑厂家安阳玻璃钢市政广场雕塑定制梅州玻璃钢动物雕塑费用是多少城市玻璃钢雕塑专业团队在线服务江苏装饰商场美陈市场价潍坊玻璃钢雕塑定制价格玻璃钢卡通雕塑3d雕塑玻璃钢黄飞鸿造型雕塑阳春玻璃钢花盆厂家广东发光景观玻璃钢雕塑生产商香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化