重庆江津网站建设,网站标题优化怎么做,网站建设工作情况汇报,建设企业网站流程WCF第一要素就是契约: 服务契约用于声明可用于远程访问的类型。在Interface或class开始处使用服务契约标签. [ServiceContract] Public interface Iservice { } 接口调用契约的好处: 1. 同一服务类型可以实现多个不相干的服务契约. 2. 有利于版本升级 3. 按照… WCF第一要素就是契约: 服务契约用于声明可用于远程访问的类型。在Interface或class开始处使用服务契约标签. [ServiceContract] Public interface Iservice { } 接口调用契约的好处: 1. 同一服务类型可以实现多个不相干的服务契约. 2. 有利于版本升级 3. 按照接口隔离原则,让开发人员可以随时修改服务契约. 服务契约的属性与作用: Name/Namespace定义该服务契约的自定义名称和命名空间它会反映到WSDL及客户端的导出类中 ConfigurationName设置信息在配置文件中的名称。默认情况下为类的全名本例为“WCFDemo.IService”。 SessionMode服务契约的会话方式允许的值有Allowed、NotAllowed和Required。默认为Allowed值。 CallbackContract设置双工通信时Duplex的回调类型。 ProtectionLevel指定消息保护模式可以对通信的消息进行加密及签名。 使用参数时例如要指定自定义的Name和 Namespace可以编写如下的代码。 [ServiceContract(Name”MyService”,Namespace”http://microsoft.com/wcf/demo”)] Interface IService{} 定义为服务契约的接口或类的方法可以被声明为OperationContract操作契约只有声明为操 作契约的方法才可以被远程调用 [ServiceContract] Public interface Iservice { [OperationContract] String SayHello(string name); } 错误契约FaultContract 被标识为FaultContract的方法必须同时已经被声明为OperationContract否则就没有什么意义。声明一个方法为 FaultContract并指定了响应的类型参数以后当调用这个方法时产生错误时就会有一个对应SOAP格式的错误消息返回给调用端 [DataContract] public class UserFault //自定义错误类 { [DataMember] public string Message { get; set; } [DataMember] public int UserId { get; set; } public UserFault(int userId, string msg) { this.UserId userId; this.Message msg; } } [ServiceContract] public interface IUserService { [OperationContract] [FaultContract(typeof(UserFault))] UserInfo GetUser(int id); } public UserInfo GetUser(int id) { try{ UserInfo info new UserInfo(); info.Age 16; info.UserName 陈翔; return info; } catch (Exception e) { throw new FaultExceptionUserFault(new UserFault(id, e.Message)); } } 数据契约DataContract [DataContract] public partial class Userinfo { private string _xsid String.Empty; /// summary /// 学生编号 /// /summary [DataMember(Namexsid)] public string Xsid { get { return _xsid; } set { _xsid value; } } } 服务契约定义了远程访问对象和可供调用的方法数据契约则是服务端和客户端之间要传送的自定义数据类型。 一个类如果声明了DataContract类型,说明类是可以被传送的,且只有成员属性可以被传送.支持Name/Namespace属性[DataContract(Name”Name”)] 每一个要传送的成员声明为DataMember类型,同样也可以包含Name,Namespace,IsRequired,Order,EmitDefaultvalue属性 需要传送SOAP消息时可以使用[MessageContract] eg: [MessageContract] public partial class Userinfo { private string _xsid String.Empty; private string _njid String.Empty; /// summary /// 学生编号 /// /summary [MessageBodyMember( Namexsid Namespace”http://www.smodi.com”)] public string Xsid { get { return _xsid; } set { _xsid value; } } /// summary /// 年级编号 /// /summary [MessageHeader( Namenjid Namespace”http://www.smodi.com”)] public string Njid { get { return _njid; } set { _njid value; } } } 这个可以生成SOAP消息 s:Envelope s:Header a:Action s:mustUnderstand1http:// Userinfo /Action/a:Action h:AuthKey s:mustUnderstand1 xmlns:hhttp://www.smodi.comxxxx/h:AuthKey /s:Header s:Body UserMessage xmlnsMicrosoft.WCF.Documentation User xmlnshttp://www.smodi.comabcd/User /UserMessage /s:Body /s:Envelope 转载于:https://www.cnblogs.com/chenqingwei/archive/2010/06/09/1754513.html