本篇教程主要文章涉及到幾個技術點:
1.RESTful Service
2.Caliburn.Micro
3.Reactive Extension
4.MEF
5.Json.net
限於篇幅,本文不會對每個框架的來龍去脈講的很清楚,也無法對每一個技術點詳細介紹,文章末尾有源碼供參考。
Silverlight與WCF可以通過多種協定方式進行交互,比如basicHTTP,net.tcp,在某些情形下,我們可能對資料的要求不需像SOAP格式,所以採用RESTFul Service的考量在於資料傳輸非常的乾淨.
下面2步解釋如何創建一個RESTFul Service:
建立一個Silverlight-enabled WCF Servcie檔,這裡命名為BookService,這裡只寫了一個Get介面

1A344M16-0    

給終結點添加webHTTP的行為,需要手動修改Web.config的配置


1A3441b7-1  

在瀏覽器測試好是否配置正確:
1A34440F-2  
注意,因為Google Chrome對Josn的資料進行了處理,所以可以直接呈現Json格式的資料

1A3441542-3  

之所以資料序列化採用的Json.net ,參考官網對其一個性能比較:


1A3443Z4-4  

那麼對前文已經處理好服務端了,用戶端引用後:由於個人習慣MVVM的模式,所以用了Caliburn.Mrico

1A344I21-5  

通過Nuget安裝該元件後,會自動引入框架檔,無須費心,只需要在App.xaml中加入Caliburn.Mirco的AppBootstrapper,Caliburn.Mirco預設使用MEF作為容器.
1A344E37-6  
刪除App.xaml.cs中不相關的代碼後,就完成了對Caliburn.Mirco配置
在Viewmodel中實現對服務端的資料獲取:

1A3442554-7  

這裡使用Reactive的方式進行非同步程式設計的,傳統的方式應該是這樣
1A344K01-8  
看看View的XAML是如何組織的:

1A34415b-9  

Caliburn.Mrico提供了一種命名機制,比如Button的Name為Read,它會在相對應的ViewModel中尋找Read().

 

其實本文還有一個目的,最近隨著WinRT的推出,似乎各方對Silverlight的前景都不看好,其實若深入瞭解本文所涉及的Xaml,Caliburn.Mrico,WCF,Json,Rx,Mef,這些都是我是在
做Silverlight的過程中接觸這些的,這些在.NET平臺上都是可通用的技術或者框架,甚至轉至WinRT的成本更低,萬變不離其宗,抱怨的越多,說明越沒有底氣,從個人平日對國內外技術社區的
瞭解來看,在國內許多人還在喋喋不休的抱怨技術更新太快時,國外的同行已經在思考如何怎樣做一個好產品,好應用,這就是所謂的差距。
創作者介紹
創作者 shadow 的頭像
shadow

資訊園

shadow 發表在 痞客邦 留言(0) 人氣()