WCF入门, 到创建一个简单的WCF应用程序

时间:2021-08-27 14:56:00

什么是WCF? 

WCF, 英文全称(windows Communication Foundation) , 即为windows通讯平台。

windows想到这里大家都知道了 , WCF也正是由微软公司推出的这个一个玩意, 基于SOA的一个分布式应用程序框架和编程模型

(WCF 编程模型的目标实现也就是 :  WCF服务 、 WCF客户端)

描述: WCF的特点

1. 支持多种消息模式 (单向模式、请求/回复、双工)

2. 支持多种传输协议和编码   (Http,tcp ,msmq等。)

3. 支持事务,持久化。

4. 统一,安全,可扩展。

————————————————————————————————————————

关于WCF的基础知识

> WCF的服务结构

WCF入门, 到创建一个简单的WCF应用程序

协定: 确定消息格式, 服务类型及安全策略和网络协议。

服务运行时: 处理服务运行中发生的各种行为

消息传递:  描述消息的数据格式和交换模型。

激活和承载: 用于发布WCF服务的寄主。

> 如何创建WCF 服务

打开Visual Studio 新建一个项目, 选择WCF 服务库创建并命名为 HelloWCF。

WCF入门, 到创建一个简单的WCF应用程序

可以看到, 在创建该项目时, 系统默认为我们添加了一个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文件配置<endpoint>节点进行指定。

在终结点中, 含有3个很重要的概念, 俗称ABC, 也就是由地址(Address)、协定(Binding)、绑定(Contract)所组成。

Address : 用于发布服务的位置

Binding: 确定的某种通讯方式

Contact: 公开服务的指定类型

在刚才新建的WCF服务库中, 打开配置文件, 可以看到endpoint节点, 该节点则是用于发布WCF服务。

WCF入门, 到创建一个简单的WCF应用程序

到现在为止, 只是介绍了WCF服务的一个简单组成, 那么既然是服务,肯定是要给别人用, 所以下一步就是, 需要一个寄主, 

举个例子 : 就像地铁卡充值服务,  一般这个服务是独立的, 我们要去便利店也好, 药店或者地铁里面充值, 他们都提供

地铁卡充值服务, 而这些充值地铁卡的地方, 可以简称为宿主(服务的承载)。

所以, 我们下一步就是为这个WCF服务创建一个寄主, 简单的例子, 我们以控制台的形式进行创建。

注: 实际上,WCF支持多种寄宿模式, windows应用程序, 控制台应用程序,IIS等。

> 选择右键, 新建一个控制台应用程序, 并命名为  WCFService

WCF入门, 到创建一个简单的WCF应用程序

然后添加对HelloWCF的项目引用, 以及System.ServiceModel程序集的引用。

注: 该编程模型封装在.NET框架的System.ServiceModel命名空间中。

WCF入门, 到创建一个简单的WCF应用程序

将HelloWCF中的APP.config的 system.serviceModel节点复制到控制台的配置文件中。

WCF入门, 到创建一个简单的WCF应用程序

打开Program文件, 编写以下代码, 用于启动WCF服务。

WCF入门, 到创建一个简单的WCF应用程序

WCF入门, 到创建一个简单的WCF应用程序

~~~

服务端的构建以及完成, 运行控制台项目, 打开此服务, 不要关闭, 下一步则是建立客户端应用程序,并且访问该WCF服务。

> 创建WCF客户端

1.打开Visual Studio , 新建一个windows窗体应用程序, 命名为: WcfClient

WCF入门, 到创建一个简单的WCF应用程序

2. 选择项目引用, 右键添加服务引用, 此时回到我们的服务应用程序中, 找到服务的基地址, 在配置文件中复制该地址。

WCF入门, 到创建一个简单的WCF应用程序

3.添加该地址的服用引用, 命名使用默认(实际开发过程中可根据服务的类型进行定义), 点击确定, 此时我们在Form1中

添加一个按钮, 用于测试访问服务, 

WCF入门, 到创建一个简单的WCF应用程序

4.双击进入, 创建该服务的实例, 调用接口实现的方法, 弹窗的形式显示结果。

WCF入门, 到创建一个简单的WCF应用程序

5.测试结果, 成功的调用了WCF服务中的GetData()方法。

WCF入门, 到创建一个简单的WCF应用程序

到此结束, 一个简单的演示WCF服务发布到WCF客户端访问。