星空网 > 软件开发 > ASP.net

十五天精通WCF——第十二天 说说wcf中的那几种序列化

  

  我们都知道wcf是由信道栈组成的,在我们传输的参数走到传输信道层之前,先需要经过序列化的过程,也就是将参数序列化为message,这篇

我们就来说说这里的序列化,蛮有意思的,可能初学者也明白,在wcf中默认的序列化是DataContractSerializer,确实是这样,不过wcf在信道中

其实不仅仅支持DataContractSerializer,它还支持其他类型的序列化,比如,NetDataContractSerializer以及DataContractJson

Serializer,下面我们一起来见证下。

 

1. 

   要了解,我们先来简单看看NetDataContractSerializer,在前面的文章中,我也说过DataContract就是将我们的model序列化为

XSD,第二点就是使用DataContract的原则就是你必须在Model上加DataContract,而且在你要序列化的字段上加DataMember。这样才能够正确的序列

化,为了演示,我们先看看默认的序列化Model会变成啥样?

 1   [DataContract] 2   public class Student 3   { 4     [DataMember] 5     public int ID { get; set; } 6  7     [DataMember] 8     public string Name { get; set; } 9 10     [DataMember]11     public string SNS { get; set; }12   }

十五天精通WCF——第十二天 说说wcf中的那几种序列化

但是在有些情况下,你可能并不适合用DataContract,比如Model是第三方提供的,那么这个时候你的Model可能就不会有DataContract标记,那这样的

话wcf就无法进行序列化,那我如果非要保证wcf能正常跑起来的话,还有其他好的办法吗???当然了,肯定有办法,这就好比谈恋爱一样,总不能

在一棵树上吊死吧,没人谁离不开谁,也不会谁离开了谁会死,天涯何处无芳草,男儿何患无妻,对吧。Wcf中也一样,既然DataContract用不了,自

然会有替代它的人,那这个人就是,使用起来也很简单,就是在契约方法上面加上Model的

DataContract全部去掉。

十五天精通WCF——第十二天 说说wcf中的那几种序列化

 

是不是很简单,下面我们就要验证一下,看看这个Format是否进入到了这个Operation的Behavior中,

十五天精通WCF——第十二天 说说wcf中的那几种序列化

 

从上面的图中,你也看到了, Behavior中,并且是由类

十五天精通WCF——第十二天 说说wcf中的那几种序列化

 

接下来,我们用fiddler监视一下,看看Message中的Body是否真的按照

十五天精通WCF——第十二天 说说wcf中的那几种序列化

有没有看到,这次Message的Body已经和文章开头处的Message不一样了。

 

2. NetDataContract

       这个玩意也没什么好说的,光从表面上看,它和DataContract唯一不同的地方就是多了一个Net,所以你大概也能猜到,这个功能大概和DataCont

ract一样,只不过比DataContract多了一个程序集保存,那这句话是什么意思呢???就是NetDataContract会把程序集的命名空间和类名都保存到XSD中,

在反序列化的过程中必须要用同样的程序集才能解开,其实不管我们是做SOA或者面向对象编程都讲究接口编程,而NetDataContract给你的印象就是面

向对象编程,当然这也有好处,比如说如果把程序集带进去就好像秘钥一样,必须有它才能解开,对吧,所以导致wcf项目组并不对NetDataContract感冒

,所以在实际应用上也不建议使用。

十五天精通WCF——第十二天 说说wcf中的那几种序列化

 

3. DataContractJsonSerializer

   看到上面这个带有Json的字样,我想大家都知道这玩意是干什么的???没错,他就是将我们的Model序列化成Json,这在wcf的rest编码使用的很广,

如果大家有兴趣的话,我在下一篇会详细描述,这里我们先简单看一看。

十五天精通WCF——第十二天 说说wcf中的那几种序列化

 

好了,这一篇就说这些了,洗洗睡了。。。

 




原标题:十五天精通WCF——第十二天 说说wcf中的那几种序列化

关键词:wcf

wcf
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

亚马逊德国开店:需要知道的vat和包装法:https://www.kjdsnews.com/a/1311796.html
亚马逊德国卖家警惕:未及时更新vat公司名称或税务地址将遭受平台限制:https://www.kjdsnews.com/a/1311797.html
亚马逊德国vat需求下的销售额分析:https://www.kjdsnews.com/a/1311798.html
亚马逊开拓欧洲市场:五个国家的vat申报要求:https://www.kjdsnews.com/a/1311799.html
亚马逊墨西哥:墨西哥vat税率以及哪些卖家必须申请税号:https://www.kjdsnews.com/a/1311800.html
亚马逊中东:下单是否需要缴纳vat?:https://www.kjdsnews.com/a/1311801.html
无锡旅游景点竹海 - 无锡的竹海:https://www.vstour.cn/a/363178.html
5月贾汪好玩的地方 贾汪哪有好玩的地方:https://www.vstour.cn/a/363179.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流