WCF基础介绍并创建简单应用程序

什么是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文件配置<endpoint>节点进行指定。

在终结点中, 含有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. 选择项目引用, 右键添加服务引用, 此时回到我们的服务应用程序中, 找到服务的基地址, 在配置文件中复制该地址。

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

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

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

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

到此这篇关于WCF基础介绍并创建简单应用程序的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • C#创建WCF服务控制台应用程序详解

    一.开发环境 操作系统:Windows 10 开发环境:VS2015 编程语言:C# IIS版本:10.0.0.0 二.添加WCF服务.Internet Information Services(IIS) 1.进入"控制面板",打开"程序和功能",点击左上角的"启用或关闭Windows功能"后,在".NET Framework 4.6 高级服务"中的子节点选中"WCF 服务",如下图所示: 2.再找到&qu

  • WCF如何绑定netTcpBinding寄宿到控制台应用程序详解

    契约 新建一个WCF服务类库项目,在其中添加两个WCF服务:GameService,PlayerService 代码如下: [ServiceContract] public interface IGameService { [OperationContract] Task<string> DoWork(string arg); } public class GameService : IGameService { public async Task<string> DoWork(s

  • 分享WCF聊天程序--WCFChat实现代码

    无意中在一个国外的站点下到了一个利用WCF实现聊天的程序,作者是:Nikola Paljetak.研究了一下,自己做了测试和部分修改,感觉还不错,分享给大家. 先来看下运行效果: 开启服务: 客户端程序: 程序分为客户端和服务器端: ------------服务器端: IChatService.cs: using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serializat

  • WCF基础介绍并创建简单应用程序

    什么是WCF? WCF, 英文全称(windows Communication Foundation) , 即为windows通讯平台. windows想到这里大家都知道了 , WCF也正是由微软公司推出的这个一个玩意, 基于SOA的一个分布式应用程序框架和编程模型 (WCF 编程模型的目标实现也就是 :WCF服务.WCF客户端) 描述: WCF的特点 1. 支持多种消息模式 (单向模式.请求/回复.双工) 2. 支持多种传输协议和编码 (Http,tcp ,msmq等.) 3. 支持事务,持久

  • visual Studio 2017创建简单控制台程序

    本文教大家如何使用visual Studio 2017创建控制台程序,供大家参考,具体内容如下 步骤: 1. 打开visual studio开发工具 2. 选择文件>新建>项目 如下图所示: 3. 选择window金典桌面>控制台应用程序 并填写好想项目名称和选择项目存储地址(注:项目名称和项目存储地址都可以是默认的) 4. 创建好默认代码如下图: 5 编写一个简单的hello Word,实现打印输出 Console.WriteLine("hello word");

  • MyBatis入门实例教程之创建一个简单的程序

    准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8 新建表: USE mybatisdemo CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL, uage INT NOT NULL ); INSERT INTO users(uid,

  • 微信小程序宿主环境基础介绍

    目录 一.什么是宿主环境 二.小程序的宿主环境 三.小程序宿主环境包含的内容 1.通信的主体和通信模型 2.小程序启动过程 3.小程序中组件的分类 4.小程序中的 API 一.什么是宿主环境 宿主环境(host environment)指的是程序运行所必须的依赖环境.例如:安卓版的微信App 是不能在iOS 环境下运行的,只能在Android环境下运行,所以,Android 是安卓软件的宿主环境,脱离了Android,安卓版的微信App的运行将毫无意义 二.小程序的宿主环境 小程序的宿主环境是微

  • Linux操作系统中BSD套接口开发的基础介绍

    这是关于如何用各种可以得到的接口为Linux开发网络程序的系列文章的第一篇.就像大多数Unix-based的操作系统一样,Linux支持将TCP/IP作为本地的网络传输协议.在这个系列中,我们假定你已经比较熟悉Linux上的C编程和Linux的一些系统知识诸如signals,forking等等. 这篇文章是关于如何用BSD套接口创建网络程序的基础介绍 .在下一篇中,我们会解决涉及到建立(网络)deamon进程的问题.而且今后的文章我们还会涉及到使用远程过程调用(RPC),以及用CORBA/dis

  • Linux中BSD套接口开发的基础介绍

    这是关于如何用各种可以得到的接口为Linux开发网络程序的系列文章的第一篇.就像大多数Unix-based的操作系统一样,Linux支持将TCP/IP作为本地的网络传输协议.在这个系列中,我们假定你已经比较熟悉Linux上的C编程和Linux的一些系统知识诸如signals,forking等等. 这篇文章是关于如何用BSD套接口创建网络程序的基础介绍 .在下一篇中,我们会解决涉及到建立(网络)deamon进程的问题.而且今后的文章我们还会涉及到使用远程过程调用(RPC),以及用CORBA/dis

  • C# 语言入门基础介绍

    目录 一..NET 体系结构 二.Hello world 三.类型和变量 四.程序结构 前言: C#(读作"See Sharp")是一种新式编程语言,不仅面向对象,还类型安全. 开发人员利用 C# 能够生成在 .NET 中运行的多种安全可靠的应用程序. C# 源于 C 语言系列,C.C++.Java 和 JavaScript 程序员很快就可以上手使用. 本教程概述了 C# 8 及更高版本中该语言的主要组件. C# 是面向对象的.面向组件的编程语言. C# 提供了语言构造来直接支持这些概

  •  typeScript入门基础介绍

    目录 一.安装 TS 二.Vscode 自动编译 ts 三.入门 TS 基础数据类型 接口 类 TS 的特点: 始于 javaScript 归于 javaScript . 强大的类型系统. 先进的 javaScript . 适合开发大型项目,编译成纯 js 代码,js 可以运行在任何浏览器上. typeScript 是区分大小写的一门语言,本篇文章主要带你了解 ts 的安装,环境配置,以及简单的入门. 一.安装 TS 使用之前需要安装: npm install -g typescript 安装完

  • Python函数参数基础介绍及示例

    目录 视频 函数的参数 位置参数 默认参数 默认参数陷阱 视频 观看视频 函数的参数 定义函数时,我们把参数的名字和位置确定下来,函数的接口定义就完成了.参数在函数名后的括号内指定.您可以根据需要添加任意数量的参数,只需用逗号分隔即可.对于函数的调用者,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解. Python的函数定义可以使用必选参数.默认参数.可变参数和关键字参数. 位置参数 我们先写一个计算x2的函数: def power(x

  • Android实现的简单蓝牙程序示例

    本文实例讲述了Android实现的简单蓝牙程序.分享给大家供大家参考,具体如下: 我将在这篇文章中介绍了的Android蓝牙程序.这个程序就是将实现把手机变做电脑PPT播放的遥控器:用音量加和音量减键来控制PPT页面的切换. 遥控器服务器端 首先,我们需要编写一个遥控器的服务器端(支持蓝牙的电脑)来接收手机端发出的信号.为了实现这个服务器端,我用到了一个叫做Bluecove(专门用来为蓝牙服务的!)的Java库. 以下是我的RemoteBluetoothServer类: public class

随机推荐