wcf契约具体介绍

wcf契约类型大致可以分为四类,服务契约,数据契约,消息契约和错误异常契约。

服务契约:意思是提供服务的契约,有客户端通过proxy通过暴露出的endpoint调用主机host的service的逻辑。proxy是通过创建一个host绑定的service的代理类,实现服务逻辑。

ServiceContractAttribute
– 定义服务操作

[ServiceContract(Name="ContentManagerContract", Namespace ="http://www.thatindigogirl.com/samples/2007/07")] public interface IContentManagerService { [OperationContract(Name="SaveLink", Action="http://www.thatindigogirl.com/samples/2007/07/ContentManagerContract/SaveLink", ReplyAction="http://www.thatindigogirl.com/samples/2007/07/ContentManagerContract/SaveLink")] void SaveLink(LinkItem item); }

Name 自定义接口或方法的名称,在客户端生成proxy时传服务契约的名称

Namespace 自定义命名空间

SessionMode 设置服务契约的 Session 方式,包括 AlloweNotAllowedRequiredSessionMode 需要相应的 Binding 支持,默认情况下会自动启用,另外我们还会和 ServiceBehaviorAttribute.InstanceContextMode 配合使用来管理服务对象的生命周期。

CallbackContract:设置 duplex 模式时的回调类型。

ProtectionLevel:指定消息保护方式,可以对消息进行加密和签名处理。

ConfigurationName其设置信息在配置文件中的名称。

OperationContractAttribute

– 方法作为公共服务契约的一部分暴露出来

能够显式地指定Name, Action, ReplyAction

MessageParameterAttribute

用来控制参数或者返回名称,映射作用。具体如下:有一个Java的客户端,发送一个SOAP给WCF服务,WCF会检查SOAP中有没有的对应定义的MessageParameter Name,如果有就会对应到WCF函数中的相应位置,通过这种映射关系,然后通过反序列化把数据传到WCF的对应方法中,实现对象的传递。

[ServiceContract(Name="ContentManagerContract”,Namespace="http://www.thatindigogirl.com/samples/2007/07")] public interface IContentManagerService { [OperationContract] void SaveLink([MessageParameter(Name="LinkItem")]LinkItem item); [OperationContract] [return: MessageParameter(Name="LinkItem")] LinkItem GetLink(string id); }

数据契约:是复杂类型在午wcf中需要序列化所引入的概念,数据契约可以分三种形式:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值