第十集 Message Contract in WCF (WCF 的MessageContract特性) 很简单的一集,讲的主要是WCF中的MessageContract特性,具体作用是用来控制WCF 首先,定义两个类EmployeeRequest 和 EmployeeInfo 1 [MessageContract(IsWrapped = true, WrapperName = "EmployeeRequestObj Namespace = "http://HelloWcf.com/2015/02/04")] 8 public int Id { get; set; } 9 } 10 [MessageContract MessageBodyMember] 32 public EmployeeType EmployeeType { get; set; } 33 } 区别与以前的DataContract ,这个类是用MessageContract 综上所述,有了MessageContract这个特性,我们对soap信息可以想怎么干就怎么干。 ThankYou。
第11集 Difference between DataContract and MessageContract in WCF(WCF中DataContract 和 MessageContract 的区别 可以看到,能做的事情还是很有限的,但是MessageContract 就不一样了,有header和body两部分,自身又可以通过属性来控制所有能需要控制的东西(full control)。 ? ?
1: [MessageContract] 2: public class Customer 3: { 4: [MessageHeader(Name = "CustomerNo" 1: [MessageContract(IsWrapped = false)] 2: public class Customer 3: { 4: //省略成员 5: 1: [MessageContract(IsWrapped = true, WrapperName = "Cust", WrapperNamespace = "http://www.artech.com 1: [MessageContract(IsWrapped =true, WrapperNamespace="http://www.artech.com/")]public class Customer 1: [MessageContract(IsWrapped =true, WrapperNamespace="http://www.artech.com/")]public class Customer
GetString(string value); [OperationContract] void Upload(Request request); } [MessageContract ReplyAction = "http://tempuri.org/IService/UploadResponse")] void Upload(Request request); } [MessageContract
ImageWrapper类,存放在MessageContract类库中,此类用来序列化图片 我们知道Image类并不直接支持序列化,所以我们采用的方式是序列化之前把Image转化为二级制数据,反序列化之前再把二级制数据转化为 using System.Text; using ProtoBuf; using System.Drawing; using System.IO; using ProtoBuf; namespace MessageContract
这集结束,下一集讲MessageContract,作用是用来自定义这些xml的消息格式。 ThankYou!
GetString(string value); [OperationContract] void Upload(Request request); } [MessageContract ReplyAction = "http://tempuri.org/IService/UploadResponse")] void Upload(Request request); } [MessageContract
{ get { return _content; } set { _content = value; } } } } 遗留问题 messagecontract
指定双方沟通时的数据格式 2.服务契约(Service Contract):指定服务的定义 3.操作契约(Opration Contract):指定服务提供的方法 4.消息契约(MessageContract
GetString(string value); [OperationContract] void Upload(Request request); } [MessageContract ReplyAction = "http://tempuri.org/IService/UploadResponse")] void Upload(Request request); } [MessageContract
System.ServiceModel.Description; 3: namespace ServiceMetadataBehaviorSimulator 4: { 5: [MessageContract