WCF 第六章 序列化和编码之DataContractJsonSerializer
DataContractJsonSerializer支持使用以JavaScript 對象標記作為序列化格式并添加到.NET 3.5 Framework 中。如果從一個使用JavaScript 的網絡應用調用服務序列化會工作的很好,特別是ASP.NET AJAX 和Silverlight 網絡應用。當使用WebScriptEnablingBehavior行為時會使用DataContractJsonSerializer。對應的,如果WebHttpBehavior行為配置成使用JSON編碼也可以使用DataContractJsonSerializer。這些終結點行為指導WCF支持REST/POX 類型服務。你可以查看第十三章"可編程站點"來獲得關于屬性的信息。現在我們將查看如何直接使用DataContractJsonSerializer并與先前提到的其他序列化結構進行比較。列表6.12顯示了如何使用DataContractJsonSerializer序列化一個Employee實例。
列表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序列化器的規則除了輸出格式是JSON而不是XML。Employee 類的DataContractJsonSerializer序列化輸出結果在列表6.13中顯示。這個例子中的輸出相比使用DataContracSerializer,NetDataContractSerializer或者XmlSerializer更加簡單和緊湊, 相比之前的XML例子這個輸出結果可讀性更好。
列表6.13 使用DataContractJsonSerializer序列化Employee類的結果
{"Employee":101, "FirstName":"Daniel", "LastName":"Dong"}
?
選擇一個序列化器
決定是否使用DataContractSerializer,NetDataContractSerializer, XmlSerializer或者DataContractJsonSerializer通常是一個簡單的決定。DataContractSerializer應該作為默認的序列化基礎方法因為它是WCF的初始序列化結構。然而,如果你需要支持已有的類型或者自定義序列化而且它們不被DataContractSerializer支持的話,你可能想要使用XmlSerializer.盡管NetDataContractSerializer很有趣,但是不通過寫代碼的方式沒有現成的方法對它提供支持。盡管使用NetDataContractSerializer有一些好處,它的使用也是不鼓勵的因為它需要客戶端和服務端共享類型。最后,DataContractJsonSerializer是服務被AJAX應用調用時最常用的網絡場景中最常用的。如果你計劃開發ASP.NET AJAX 或者使用基于銀光(Silverlight)技術的富因特網應用(RIAs),你最可能使用DataContractJsonSerializer來支持JSON序列化。盡管JSON序列化在使用JavaScript的網絡應用中廣泛使用,但由于它的廣泛接受程度所以它的使用已擴展到網絡應用之外。在這些情況中,選擇使用JSON變成一個個人喜好問題。最后,WCF提供了很多允許序列化被完全取代的擴展點。
總結
以上是生活随笔為你收集整理的WCF 第六章 序列化和编码之DataContractJsonSerializer的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交换机和路由器上流量限制
- 下一篇: Resin禁止目录访问