首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

WCF技术内情 第4章 (4)

2013-01-26 
WCF技术内幕 第4章 (4)契约契约定义了程序中的终结点,终结点使用的消息交换模式和终结点处理的消息结构。WC

WCF技术内幕 第4章 (4)

契约

契约定义了程序中的终结点,终结点使用的消息交换模式和终结点处理的消息结构。

WCF里定义了三种契约类型:服务契约、数据契约和消息契约。服务契约描述了终结点的操作。描述包含名称、消息交换模式、会话规范信息、请求和响应的消息头、每个操作的安全信息。数据契约是映射消息体到一个或多个操作。消息契约映射消息和消息头到一个或多个操作。


服务契约

服务契约是一个被ServiceContractAttribute或OperationAttribute属性标记的类或接口。ServiceContractAttribute可以使用在类和接口上,而OperationContractAttribute只能用在方法上。绝大部分标记了OperationContractAttribute的类型成员都会被ServiceContractAttribute标记。


数据契约

数据契约映射.Net Framework类型到消息体。数据契约使用的属性是DatatContractAttribute和DataMemberAttribute。

    [ServiceContract]    interface IService1    {        [OperationContract]        void GetData(MessageType message); //Param is message type        [OperationContract]        CompositeType GetDataUsingDataContract(CompositeType composite);    }    [DataContract]    public class CompositeType    {        string stringValue = "Hello ";        [DataMember]        public string StringValue        {            get { return stringValue; }            set { stringValue = value; }        }    }    [MessageContract]    sealed class MessageType    {        [MessageHeader]        int? statusCode;        [MessageBodyMember]        CompositeType messageBody;        internal MessageType(Int32 statusCode)        {            this.statusCode = statusCode;            this.messageBody = new CompositeType();        }    }

4.3 从内部剖析WCF

WCF主要有两个架构层的基础结构。这两个层次的名字分别为服务模型层(ServiceModel layer)和通道层(Channel layer)。 服务模型层是用户代码和通道层之间的桥梁。通道层是做了真正的消息相关的工作,是了解特定传输方式和WS-×消息编排的层。

服务模型层调用发送者上的代理(Proxy,也被称为Client)和接收者上的分发器(Dispatcher)有不同的作用,尽管它们是相同架构层的不同部分。代理负责创建消息,并发送给通道层。分发器负责反序列化接收到的消息,实例化对象并分发反序列化的消息内容到此对象。

在消息接收者上,地址告诉通道侦听请求消息的地址。在发送者上,地址告诉通道消息接收者的地址。

绑定,就是创建通道层的工厂对象的集合。

契约是消息序列化和反序列化使用的,它们同样会来确定接收程序的消息交换模式。


热点排行