zoukankan      html  css  js  c++  java
  • (三)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的错误处理机制,也是对这一方面的锻炼。   

              

          

     

    
  • 相关阅读:
    Spring MVC 3.0.5+Spring 3.0.5+MyBatis3.0.4全注解实例详解(四)
    中国B2B行业将进入后平台时代
    做产品经理 而不是功能经理(转淘宝鬼脚七)
    全球最值的学习的100个网站
    gridview 内的button 用法
    框架内 FRAME的源src如何根据条件而变化?C#解决方案
    一般中小企网络出口的后备线路(adsl做后备)
    Windows server 2012_远程_没有远程桌面授权服务器可以提供许可证
    访问网站返回常见的状态码200,404等表示什么意思(转)
    站长学习 一 Robots简单认识
  • 原文地址:https://www.cnblogs.com/zsswpb/p/5771618.html
Copyright © 2011-2022 走看看