WCF 第六章 序列化和编码之DataContractJsonSerializer
DataContractJsonSerializer支持使用以JavaScript 對象標(biāo)記作為序列化格式并添加到.NET 3.5 Framework 中。如果從一個使用JavaScript 的網(wǎng)絡(luò)應(yīng)用調(diào)用服務(wù)序列化會工作的很好,特別是ASP.NET AJAX 和Silverlight 網(wǎng)絡(luò)應(yīng)用。當(dāng)使用WebScriptEnablingBehavior行為時會使用DataContractJsonSerializer。對應(yīng)的,如果WebHttpBehavior行為配置成使用JSON編碼也可以使用DataContractJsonSerializer。這些終結(jié)點(diǎn)行為指導(dǎo)WCF支持REST/POX 類型服務(wù)。你可以查看第十三章"可編程站點(diǎn)"來獲得關(guān)于屬性的信息?,F(xiàn)在我們將查看如何直接使用DataContractJsonSerializer并與先前提到的其他序列化結(jié)構(gòu)進(jìn)行比較。列表6.12顯示了如何使用DataContractJsonSerializer序列化一個Employee實(shí)例。
列表6.12 使用DataContractJsonSerializer的序列化
using System.Runtime.Serialization.Json;namespace EssentialWCF {class Program{static void Main(string[] args){Employee e = new Employee(101, "Daniel", "Dong");FileStream writer = new FileStream("sample.xml", FileMode.Create);DataContractJsonSerilizer ser = new DataContractJsonSerilizer(typeof(Employee));ser.Serialize(writer, e);writer.Close();}} }? DataContractJsonSerializer 也遵循DataContractSerializer序列化器的規(guī)則除了輸出格式是JSON而不是XML。Employee 類的DataContractJsonSerializer序列化輸出結(jié)果在列表6.13中顯示。這個例子中的輸出相比使用DataContracSerializer,NetDataContractSerializer或者XmlSerializer更加簡單和緊湊, 相比之前的XML例子這個輸出結(jié)果可讀性更好。
列表6.13 使用DataContractJsonSerializer序列化Employee類的結(jié)果
{"Employee":101, "FirstName":"Daniel", "LastName":"Dong"}
?
選擇一個序列化器
決定是否使用DataContractSerializer,NetDataContractSerializer, XmlSerializer或者DataContractJsonSerializer通常是一個簡單的決定。DataContractSerializer應(yīng)該作為默認(rèn)的序列化基礎(chǔ)方法因?yàn)樗荳CF的初始序列化結(jié)構(gòu)。然而,如果你需要支持已有的類型或者自定義序列化而且它們不被DataContractSerializer支持的話,你可能想要使用XmlSerializer.盡管NetDataContractSerializer很有趣,但是不通過寫代碼的方式?jīng)]有現(xiàn)成的方法對它提供支持。盡管使用NetDataContractSerializer有一些好處,它的使用也是不鼓勵的因?yàn)樗枰蛻舳撕头?wù)端共享類型。最后,DataContractJsonSerializer是服務(wù)被AJAX應(yīng)用調(diào)用時最常用的網(wǎng)絡(luò)場景中最常用的。如果你計劃開發(fā)ASP.NET AJAX 或者使用基于銀光(Silverlight)技術(shù)的富因特網(wǎng)應(yīng)用(RIAs),你最可能使用DataContractJsonSerializer來支持JSON序列化。盡管JSON序列化在使用JavaScript的網(wǎng)絡(luò)應(yīng)用中廣泛使用,但由于它的廣泛接受程度所以它的使用已擴(kuò)展到網(wǎng)絡(luò)應(yīng)用之外。在這些情況中,選擇使用JSON變成一個個人喜好問題。最后,WCF提供了很多允許序列化被完全取代的擴(kuò)展點(diǎn)。
總結(jié)
以上是生活随笔為你收集整理的WCF 第六章 序列化和编码之DataContractJsonSerializer的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交换机和路由器上流量限制
- 下一篇: Resin禁止目录访问