(三)WCF之契约

2024-08-26 07:08
文章标签 wcf 契约

本文主要是介绍(三)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之契约的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1107894

相关文章

gradle学习笔记:gradle契约测试的执行命令

环境 gradle项目 测试框架:mockito 前言 个人笔记,非教程 配置生成测试代码的任务 // 用于生成 Mock 测试,即测试生成的 Mock 是否符合契约task generateMockTests << {def contractBasePath = projectDir.getAbsolutePath() + '/src/test/java/com/xingren/pm

WCF的一个小Demo

客户机使用浏览器访问服务器A,服务器A为了业务需要与其他各种应用部署在服务器B、C、D....再通过WCF技术互相通信,相互访问...然而面向服务的好处不仅仅在此,他还提供了不同语言不同操作系统的可交互性. ITOO的服务端有许多我们熟悉的东西,例如那些个D层还有B层,陌生的东西就是一个WCF了。现在在我自己看来WCF就是为了避免重复开发,然后提供一个数据通信的接口给大家,让开发

(二)WCF的Binding模型

上篇博客对WCF中的基础知识进行了介绍,先从概念上知道了WCF的一些理论,在abc模型中B是Binding,WCF为我们提供了多种绑定机制,我们先从了解各种绑定机制开始,只有知道之后才能在实践中更好的利用。 【采用Binding原因】     由于服务之间的通信方式多种多样,就有多种可能的通信模式。包括:同步的请求/应答消息,或者异步的“即发即弃”消息;双向消息等。传递消息的

(一)WCF基础

我们近期在做项目的时候用到了WCF,之前已经看了部分视频,对于WCF有了一定的了解,但仅限于能够根据搭建好的框架使用WCF,还不了解。所以就进行了研究,这样既有实践也能增加理论,二者结合,使用起来更胜一筹。     小编先从一些基本的概念开始,从基础一点点开始研究。 【WCF简介】      WCF(Windows Communication Foundation)是由微

【WCF 2】理解WCF框架的简单小实例

导读:上篇博客介绍了WCF框架的整体情况,然后,闲着没事儿,自己做了一个及其简单的WCF框架的例子帮助自己理解。从简单的入手,一步一步深入!本篇博客是介绍怎么用VS2012从头创建一个WCF项目,是一个流程化的介绍,有清楚了解的,建议路过即可!   一、建立WCF服务应用程序   1.1,编写IService类接口   <span style="font-family:KaiTi_

【WCF 1】WCF框架宏观了解

导读:使用WCF框架爱开发项目也有很长一段时间了,最开始的时候,是理解的不深,所以不写博客进行总结。后来是项目赶,发现需要总结的有很多,一直没有把WCF排上日程,尤其是最近研究EF这一块,更是研究了一些ORM框架的东西,包括Hibernate工作原理等。最后,是因为自己都会了,觉得就先不总结了吧,反正都会。现在,正式总结WCF的第一篇博客,先宏观 介绍一下。   在基本概述中,主要是从书本、网

[项目基础]WCF初识小结

一、基本内容     Windows通信基础(Windows Communication Foundation,WCF)是基于windows平台下开发和部署服务的软件开发包(Software Development Kit,SDK)。     思想发展:面向过程——》面向对象——》面向服务 二、契约(协定)     1、分类:         服务契约(Service Contract)

【教程分享】使用WCF搭建企业通用架构

对这个课程有兴趣的朋友可以加我的QQ22748165793和我联系 · 课程讲师:石曼迪 · 课程分类:WCF · 适合人群:初级 · 课时数量:23课时 · 用到技术:WCF、AJAX集成和JSON支持 · 涉及项目:XX连锁在线出版社系统、及时通讯系统、京东商城的订单查询系统、顺丰的物流查询系统、中兴通讯分布式ERP系统 · 更新程度:完成 第一讲:为什么

WinCE使用Webservice或者WCF与后台数据库SQL进行数据信息交互

之前使用过Webservice作为后台服务,WinCE上通过调用webservice来与后台数据库进行数据交互。 速度,稳定性都非常好。而且编程模块化,封装成为Webservice的两个函数即可解决数据库的增,删,查,改四个SQL语句的执行,因此编程非常高效。 有了这样的封装,程序员在编写程序时,主要精力放在逻辑上,分析业务知识上。从而降低程序员的技术门槛,提高编程效率,节省人力成本。

SP2010开发和VS2010专家食谱--第六章节--Web Services和REST(6)--Creating a custom SharePoint WCF service

目前我们已经使用了SharePoint中提供的开箱即用Web Services。有时候SharePoint可以作为数据仓库提供业务数据到外部应用程序。