WPF和Silverlight到底有什麼不同?

WPF和Silverlight到底有什麼不同?

由於名稱的關係, WPF與WPF/E一直被認為是類似的東西.
其實兩者除了呈現UI的部分使用的是共通語言 XAML 之外,
兩者在本質上有很大的不同.
甚至,XAML對WPF與Silverlight有不同的意義,也不能算是兩者間"共通的語言"
XAML對WPF來說,是一種把.NET程式語言改用XML來描述的方式.
換句話說,XAML用在WPF上,像是另外一種程式語言.與C#, VB , IronPython相似.
所以XAML能做的, C# , VB一樣都可以做到. 但是反過來, C# , VB 能做的,
XAML不一定能做到,因為XAML是為了配合開發工具,特別設計出來的一種語言,
本身有他的局限性,所以還是得配合正規的程式語言,才能完成一個真正有用的程式.
但是以目前XAML所具備的能力,不靠C# , VB而做到平常簡單Flash可以做到的,應該是沒啥問題.
因此, Application = Code + Markup的作者Petzold才會把這本書的結構寫成先用以C#來寫WPF程式,後半部才介紹XAML. 避免大家誤解 WPF = XAML.
XAML還可以用在WF上,所以並不局限於WPF. 如果用了XAML,以為這就是WPF的全部,就大錯特錯囉!
然而,XAML對Silverlight來說,本質比較貼近SVG.
XAML用來描述構成畫面的結構樹,然後配合Javascript去操作這顆表示UI的樹,以達到互動的效果. 所以對Silverlight來說, XAML像是用來擴充HTML/CSS原本不足的一組Tag. 就像Firefox之中,一樣可以用Javascript去操作SVG所描述的畫面,藉以達成多媒體效果.