VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 网站开发 > ASP.net 4.0教程 >
  • asp.net教程之WCF基础 契约

契约

在WCF中,所有的WCF服务都会被公开成为契约。契约是服务的功能的标准描述方式,通常情况下WCF包含四种类型的契约,这些契约如下所示。
q  服务契约(Service Contract):服务契约定义了客户端能够执行的操作,服务契约是WCF中使用最为广泛的一种契约。
q  数据契约(Data Contract):数据契约定义了客户端与服务器之间交互的数据类型。
q  错误契约(Fault Contract):错误契约定义了操作中出现的异常,包括定义服务出现的错误并传递返回给客户端。
q  消息契约(Message Contract):消息契约允许服务直接与消息交互,但是WCF很少使消息契约。
WCF使用特性ServiceContractAttribute标识服务契约,而使用OperationContractAttribute标识服务方法。示例代码如下所示。
    [ServiceContract]                                                                                                                        //标识服务契约
    public interface IService1                                                                                                         //实现接口
    {
        [OperationContract]                                                                                                           //方法声明
        string GetData(int value);                                                                                                  //创建方法
        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);
        // 任务: 在此处添加服务操作
    }
上述代码使用ServiceContractAttribute标识服务契约,而使用OperationContractAttribute标识服务方法,OperationContract只能用于方法,指明客户端是否能够调用此方法。使用OperationContract标识可以标识私有方法以使用SOA的方式进行构架,虽然这样是可以实现客户端调用,但是作为面向对象的设计是不推荐使用该方法的。由于能够使用ServiceContractAttribute来标识服务契约,开发人员能够自定义标识指定相应的方法是否能够被客户端调用,示例代码如下所示。
        [OperationContract]
        CompositeType GetDataUsingDataContract(CompositeType composite);          //标识方法
        string Post(string content);
在上述代码中的Post方法不会成为契约。WCF允许开发人员使用DataContractAttribute、DataMemberAttribute来标识自定义数据类型和属性,示例代码如下所示。
        [DataMember]                                                                                                                     //设置DataMember
        string stringValue = "Hello ";                                                                                            //创建string变量
        [DataMember]                                                                                                                    //设置DataMember
        public bool BoolValue                                                                                                                //设置属性
        {
            get { return boolValue; }
            set { boolValue = value; }                                                                                          //设置属性默认值
        }
        [DataMember]                                                                                                                    //设置DataMember
        public string StringValue                                                                                                  //设置属性
        {
            get { return stringValue; }
            set { stringValue = value; }                                                                                        //设置属性默认值
        }
上述代码使用了DateMember定义了属性和相应的字段,这样就可以在服务方法中传递复杂的数据体了。

相关教程