什么是wcf?
wcf, 英文全称(windows communication foundation) , 即为windows通讯平台。
windows想到这里大家都知道了 , wcf也正是由微软公司推出的这个一个玩意, 基于soa的一个分布式应用程序框架和编程模型
(wcf 编程模型的目标实现也就是 :wcf服务、wcf客户端)
描述: wcf的特点
- 1. 支持多种消息模式 (单向模式、请求/回复、双工)
- 2. 支持多种传输协议和编码 (http,tcp ,msmq等。)
- 3. 支持事务,持久化。
- 4. 统一,安全,可扩展。
关于wcf的基础知识
> wcf的服务结构
- 协定: 确定消息格式, 服务类型及安全策略和网络协议。
- 服务运行时: 处理服务运行中发生的各种行为
- 消息传递: 描述消息的数据格式和交换模型。
- 激活和承载: 用于发布wcf服务的寄主。
> 如何创建wcf 服务
打开visual studio 新建一个项目, 选择wcf 服务库创建并命名为 hellowcf。
可以看到, 在创建该项目时, 系统默认为我们添加了一个iservice1(接口) 和一个 service1(实现类)。
在iservice1中, 可以看到该接口定义了 servicecontract 特性, 接口方法中定义了 operationcontract 特性
这两类特性则归属于wcf中的服务协定。
*特性:
【
用来声明服务端定义的所有协定。 在c#中,所有特性类都是从attribute类继承而来的,而且其名称都有attribute后缀。用c#编写代码时,
一律用中括号来声明特性类,在servicecontract定义中, 会发现后面跟着attribute后缀,声明时省略attribute后缀,这是建议的用法。
特性类的用途是为紧跟在它后面的目标元素提供设计行为。比如对某个字段声明了某个特性,则该特性的目标元素就是这个字段。目标元素可以是
程序集、类、构造函数、委托、枚举、事件、字段、接口、方法、可移植模块、参数、属性(property)、返回值以及结构等。另外,目标元素还可以是其他特性类。】
在compositetype类中, 可以看到该类定义了datacontract特性, 与属性中定义了datamember 特性 ,
而这类则属于wcf中的数据消息协定。
在我们的实际开发过程中, 需要用于数据交互的实体类, 则必须声明类及成员的数据协定, 声明的意义则表示该实体可以序列化。
注: 在wcf定义了datamember的类成员, 无论是public、private, 它都可以被访问。
打开service1 类文件, 集成于iservice1 的接口并且有具体实现, 在我们测试中, 则是利用客户端进行访问进行演示, 而下面,
要讲的技术一个关于终结点的概念。
> 终结点(endpoint)
终结点用于指定网络通信的目标, 在应用程序中,可通过config文件配置
在终结点中, 含有3个很重要的概念, 俗称abc, 也就是由地址(address)、协定(binding)、绑定(contract)所组成。
- address : 用于发布服务的位置
- binding: 确定的某种通讯方式
- contact: 公开服务的指定类型
在刚才新建的wcf服务库中, 打开配置文件, 可以看到endpoint节点, 该节点则是用于发布wcf服务。
到现在为止, 只是介绍了wcf服务的一个简单组成, 那么既然是服务,肯定是要给别人用, 所以下一步就是, 需要一个寄主,
举个例子 : 就像地铁卡充值服务, 一般这个服务是独立的, 我们要去便利店也好, 药店或者地铁里面充值, 他们都提供
地铁卡充值服务,而这些充值地铁卡的地方, 可以简称为宿主(服务的承载)。
所以, 我们下一步就是为这个wcf服务创建一个寄主, 简单的例子, 我们以控制台的形式进行创建。
注: 实际上,wcf支持多种寄宿模式, windows应用程序, 控制台应用程序,iis等。
> 选择右键, 新建一个控制台应用程序, 并命名为 wcfservice
然后添加对hellowcf的项目引用, 以及system.servicemodel程序集的引用。
注:该编程模型封装在.net框架的system.servicemodel命名空间中。
将hellowcf中的app.config的 system.servicemodel节点复制到控制台的配置文件中。
打开program文件, 编写以下代码, 用于启动wcf服务。
服务端的构建以及完成, 运行控制台项目, 打开此服务, 不要关闭, 下一步则是建立客户端应用程序,并且访问该wcf服务。
> 创建wcf客户端
1.打开visual studio , 新建一个windows窗体应用程序, 命名为: wcfclient
2. 选择项目引用, 右键添加服务引用, 此时回到kb88凯时官网登录的服务应用程序中, 找到服务的基地址, 在配置文件中复制该地址。
3.添加该地址的服用引用, 命名使用默认(实际开发过程中可根据服务的类型进行定义), 点击确定, 此时我们在form1中
添加一个按钮, 用于测试访问服务,
4.双击进入, 创建该服务的实例, 调用接口实现的方法, 弹窗的形式显示结果。
5.测试结果, 成功的调用了wcf服务中的getdata()方法。
到此这篇关于wcf基础介绍并创建简单应用程序的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。