(三)WCF之契约
自从我们接收ITOO项目之后,就必须跟WCF打交道,既然必须直面WCF,我就对WCF进行了研究(还不是很深入,是自己目前的理解)。之前对WCF的一些基础知识进行了简单的介绍,本篇重点来介绍WCF的契约(Contracts)。
[什么是契约?]
生活中:指双方共同定义的协议。
WCF中:任何一个分布式应用程序,它之所以能够互相传递消息,都是事先制定好数据交换规则的,这个规则正是交换数据的双方能够彼此理解对方的依据,WCF是一种分布式开发技术。WCF中的规则就被称为契约,它是WCF的消息标准,是WCF不可缺少的一部分。
[契约的分类及用途]
在WCF中,契约被分为4类,如下图:
1)Service Contract:用于定于服务操作
这种契约包括两种ServiceContract 和 OperationContract
ServiceContract用于类或者结构上,用于指示WCF此类或者结构能够被远程调用
OperationContract用于类库的方法上,用于指示WCF方法可被远程调用
2)Data Contract:用于定义数据结构
数据契约分为两种:DataContract 和DataMember.
DataContract用于类或者结构上,指示WCF此类或者结构能够被序列化并被传输
DataMember只能用在类或者结构的属性或者字段上,指示WCF该属性或字段能够被序列化传输
3)Message Contract:用于控制消息格式
消息契约描述了一个服务以及一个服务接收的SOAP消息的结构,并且允许你检测和控制SOAP消息头和消息体,还有是否对消息进行加密和签名。
4)Fault Contract:用于的自定义错误的异常
用于自定义错误异常的处理方式。WCF是分布式应用开发,当服务端捕获异常时不能直接将错误抛出来,必须经过WCF的处理将自定义的异常处理抛给用户,这样给出一个友好的提示。
客户端常见错误:
1、通信错误
2、代理和通道的状态,代理被关闭
3、服务调用错误
[实践]
1、服务契约:
[ServiceContract]
public interface WCFIAddSet
{
#region +AddTime 添加选课
/// <summary>
/// 添加选课
/// </summary>
/// <param name="roundViewModel">轮次实体</param>
/// <returns>布尔值</returns>
[OperationContract]
bool AddTime(RoundViewModel roundViewModel);
#endregion
}
2、数据契约:
[DataContract] //数据契约
[Classes("退选控制界面")]
[Serializable]
public class QuitSelectedViewModel
{ /// <summary>
/// 本次选课ID
/// </summary>
[DataMember]
[Colum("本次选课ID", DbType = DbType.Guid)]
public Guid PublicChoseCourseID { get; set; }
}
[总结]
通过这几天的学习对于WCF的机制有了深入的了解,这次在项目中只用到了数据契约和服务契约,现在只是会简单的应用,还需要实践一下WCF的消息和错误处理契约,每个程序都有错误,可以尝试用一下WCF的错误处理机制,也是对这一方面的锻炼。
(三)WCF之契约的更多相关文章
- 跟我一起学WCF(7)——WCF数据契约与序列化详解
一.引言 在前面博文介绍到,WCF的契约包括操作契约.数据契约.消息契约和错误契约,前面一篇博文已经结束了操作契约的介绍,接下来自然就是介绍数据契约了.所以本文要分享的内容就是数据契约. 二.数据契约 ...
- WCF分布式开发步步为赢(7):WCF数据契约与序列化
本节继续学习WCF分布式开发步步为赢(7):WCF数据契约与序列化.数据契约是WCF应用程序开发中一个重要的概念,毫无疑问实现客户端与服务端数据契约的传递中序列化是非常重要的步骤.那么序列化是什么?为 ...
- WCF分布式开发步步为赢(6):WCF服务契约继承与分解设计
上一节我们学习了WCF分布式开发步步为赢(5)服务契约与操作重载部分.今天我们来继续学习WCF服务契约继承和服务分解设计相关的知识点.WCF服务契约继承有何优势和缺点?实际项目里契约设计有什么原则和依 ...
- WCF之契约的分类(部分為參考他人)
什么是契约呢?在使用WCF时,对其制定各种各样的规则,就叫做WCF契约.任何一个分布式的应用程序在传递消息的时候都需要实现制定一个规则. 任何一个分布式应用程序,它之所以能够互相传递消息,都是事先制定 ...
- 菜鸟学习WCF笔记-契约(Contract)
契约,契约确保了服务的正常调用,客户端以契约的方式进行服务端调用,而服务则需要按照契约规定的方式提供服务. 契约是服务提供的一组操作的描述 功能上讲:每个操作对应着某个具体的功能实现,以及调用这个操作 ...
- WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- 无废话WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
- wcf服务契约的重载
a. 服务端 .服务端 契约用OperationContract的Name实现重载 using System; using System.Collections.Generic; using Syst ...
- 【转】WCF入门教程三[WCF的宿主]
一.WCF服务应用程序与WCF服务库 我们在平时开发的过程中常用的项目类型有“WCF 服务应用程序”和“WCF服务库”. WCF服务应用程序,是一个可以执行的程序,它有独立的进程,WCF服务类契约的定 ...
随机推荐
- @Component和@Configuration作为配置类的差别
https://blog.csdn.net/long476964/article/details/80626930 虽然Component注解也会当做配置类,但是并不会为其生成CGLIB代理Class ...
- 【Linux】一步一步学Linux——Linux系统目录详解(09)
目录 00. 目录 01. 文件系统介绍 02. 常用目录介绍 03. /etc目录文件 04. /dev目录文件 05. /usr目录文件 06. /var目录文件 07. /proc 08. 比较 ...
- 【LEETCODE】37、122题,Best Time to Buy and Sell Stock II
package y2019.Algorithm.array; /** * @ProjectName: cutter-point * @Package: y2019.Algorithm.array * ...
- vim实用操作指南
一.查看文件编码 :set fileencoding :set fileencoding=utf-8 通过该命令可直接将文件修改为UTF-8编码 强制以指定编码打开,vim中 :e ++enc=utf ...
- SpringBoot 常用配置 静态资源访问配置/内置tomcat虚拟文件映射路径
Springboot 再模板引擎中引入Js等文件,出现服务器拒绝访问的错误,需要配置过滤器 静态资源访问配置 @Configuration @EnableWebMvc public class Sta ...
- springboot 2.1.3.RELEASE添加filter,servlet源码学习
Servlet规范中,通过ServeltContext来注册Filter.Servlet,这里分析Filter,Servlet是相同逻辑 springboot2.0中,我们通过 FilterRegis ...
- Spring Boot 集成 Swagger 生成 RESTful API 文档
原文链接: Spring Boot 集成 Swagger 生成 RESTful API 文档 简介 Swagger 官网是这么描述它的:The Best APIs are Built with Swa ...
- 浮动和渐变色,定位position,元素的层叠顺序
浮动: float 是我们网页布局的一种 浮动 可以有 left 左浮动 right 右浮动 两种 浮动的特点: 脱离正常的文档流,原本的空间不占据,浮动的标签都具有块级标签的一些特点,可以手动设置宽 ...
- JS中的函数与对象
创建函数的三种方式 1.函数声明 function calSum1(num1, num2) { return num1 + num2; } console.log(calSum1(10, 10)); ...
- Python定义点击右上角关闭按钮事件
Python定义点击右上角关闭按钮事件(Python defines the event of clicking the close button in the upper right corner) ...