【WCF】契约

版权声明:我的博客我做主! https://blog.csdn.net/lk1822791193/article/details/84444834

什么是契约?

从SOA概念上将,契约数据服务公开接口的一部分。一个服务契约,定义了服务端公开的服务方法,使用传输协议,可访问地址,传输的消息格式等内容。

就是:乌龟的屁股(规定),没有规矩不成方圆,你总要规定一下你的数据传输格式,以及怎么传输的。但是规定不需要我们写,我们需要知道的就是:我们在什么时候用什么规定就好了。

契约的分类

1.服务契约

它主要定义是:你要提供的一些操作,在wcf中你在类和方法中添加了服务契约,你的方法就能被外界调用。

ServiceContract用在类或是接口上,表示此类可以通过WCF被客户端调用。

OperationContract用在类的方法中,表示此方法可以通过WCF被客户端调用。

例子如下:

using System.Runtime.Serialization;
using System.ServiceModel;

[ServiceContract]
    public interface IUpdateService
    {
        /// <summary>
        /// 将记录更新到服务器
        /// </summary>
        /// <param name="user_name">用户名</param>
        /// <param name="table">记录</param>
        [OperationContract]
        void UpdataToColudData(string user_name, DataTable table);

    }

2.数据契约

DataContract用于类或结构上,而DataMember则是用在类或者结构的属性或者字段上。

例子如下:

[DataContract]
    public class CompositeType
    {
        bool boolValue = true;
        string stringValue = "Hello ";

        [DataMember]
        public bool BoolValue
        {
            get { return boolValue; }
            set { boolValue = value; }
        }

        [DataMember]
        public string StringValue
        {
            get { return stringValue; }
            set { stringValue = value; }
        }
    }

我们常用的就是服务契约和数据契约了,还有两种就是消息契约和错误契约。

3.消息契约

Message Contract

简单的说,它能自定义消息格式,包括消息头,消息体,还能指示是否对消息内容进行加密和签名。

4.错误契约

FaultContract

用于定义自定义错误异常的处理方式,默认情况下,当服务器抛出异常的时候,客户端能接收到异常的信息额描述,但是描述的格式往往很单一,很难为用户处理异常提供有效信息,这个时候,我们就可以通过这个契约,在方法上添加一个错误消息的类,然后在要处理异常的函数上加上一个FaultContract,并将异常信息指示返回为自定义格式。

总结

上边貌似说了一堆相对比较繁琐的东西,其实契约使用起来很简单,它就是在我们常用的类或是方法上边打了一个标记,表示这个类或方法可以被外界(添加服务引用的程序)调用。所以它难不难,你用一下就知道了!

猜你喜欢

转载自blog.csdn.net/lk1822791193/article/details/84444834
WCF