2010 Silverlight Json 數據與通信

環境Microsoft Visual C# 2010 Beta2

      2010 集成Silverlight 3開發環境 .net 4.0

 

根據TerryLee的一步一步學Silverlight 2系列修改

1、建立一個Silverlight 項目

 

 

2、建立項目完成後系統會自動產生一個web項目用以運行Silverlight程序

 

3、Silverlight是客戶端程序,我們從服務端開始。使用Handler和WebRequest獲取後臺數據

Handler代碼如下  添加新項 -> 選擇 generic handler,生成一個擴展名爲ashx的web文件

打開編輯其代碼,本例代碼如下

DataContractJsonSerializer 對象屬於System.Runtime.Serialization.Json 命名空間.net已經內置Json序列化支持

4、實體類

在這裏需要注意一個問題,我們現在有兩個項目一個web項目它是基於.net4.0,另外一個Silverlight項目。

在2010Beta2,這兩個項目編譯的dll對應的.net版本不同,不可以互相引用。估計即使不是beta版該問題也依然存在。

對於本例來說實體類放在Silverlight項目那web項目也引用不到,只能在兩個項目中把實體類寫兩遍。

 

5、現在開始寫Silverlight客戶端。2010默認建的程序裏有一個頁面MainPage.xaml,我們可以修改之,或者另外建一個。

在Silverlight項目右鍵菜單,添加新項 -> 選擇 Silverlight User Control,建一個名爲JasonList1.xaml的頁面。

本頁用listbox顯示一個三列的數據列表

 

獲取數據的代碼如下:

UserControl_Loaded和winform一樣,在空處雙擊一下就自動生成該函數。

 

        可以看到訪問前面寫的Handler通過webRequest獲取數據,並使用了.net內建的System.Runtime.Serialization.Json命名空間下的DataContractJsonSerializer對象。

 

       另外需要注意的是使用了SynchronizationContext對象,位於System.Threading命名空間,這個是解決跨線程訪問UI對象的問題。

 

對此沒有概念的用戶可能會對使用syn.Post(SetPost, blog) 這種方法綁定感到莫名其妙,爲什麼不直接

Posts.ItemsSource = blog.Posts而要轉去syn.Post(SetPost, blog) 呢。

 

6、下了一個開源項目Jason.net,不過試用不了還是版本的問題。也就是說Silverlight可能會使用一個.net 2.0的精簡版本吧,反正它和一般的.net程序使用FrameWork就是不能共用。這還是個問題,不過對於序列化功能,.net已經內建Json序列化,Silverlight也同樣,這倒是個好事。所以本例並沒有用到第三方的Jason.net。

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章