Ch 00 Overview
2007.0608
‧ .NET
‧ .NET Framework
‧ Windows Presentation Foundation(WPF)
‧ Silverlight(WPF/E)
‧ XAML
‧ XBAP
‧ Programming Tools for WPF
‧ Design Tools for WPF
‧ Tools and Controls for WPF
‧ DemoSites
‧ Silverlight 1.1
.NET
.NET Framework
Windows XP / Vista 未來程式的運作架構:.NET Framework 3.0 ( 舊稱 WinFX )
( WinFX 是作業系統與應用程式之間的橋樑 )
而 .NET Framework 3.0 則包含了
‧.NET Framework 2.0
‧Windows Presentation Foundation ( WPF, 舊稱 Avalon ) -- 圖形子系統
‧Windows Communication Foundation ( WCF, 舊稱 Indigo ) -- 通訊子系統
‧Windows Workflow Foundation ( WWF ) -- 把商業流程與網路上的應用加以結合
‧Windows CardSpace ( WCS, 舊稱 InfoCard ) -- 身份驗證
‧WinFS -- 文件子系統 ( 本來要取代 NTFS,但是現在已暫停開發 )
( WinFX 是作業系統與應用程式之間的橋樑,但 .NET Framework 3.0 則擴充出更多的功能 )
簡言之:WinFX → 演變成 → .NET Framework 3.0 = .NET Framework 2.0 + WPF + WCF + WWF + WCS + … ( 但是不含 WinFS )
這些東東本來都與一般搞設計的無關
但是其中的 WPF,卻關係著次世代多媒體的設計與應用,故也不能不去瞭解 !
Windows Presentation Foundation(WPF):( Windows 多媒體的展示基礎:就是多媒體式的 UI 啦 )
‧WPF 是 Windows Vista 新的繪圖引擎: 提供了豐富的 graphics ( 2D ) , animation ( 動畫 ) , 3D 表現能力
。Windows Vista 已內建 .NET Framework 3.0
。Windows XP 必需已安裝 .NET Framework 3.0,才能支援 WPF
‧XAML = WPF 的介面 ( UI ) 語言
傳統上要以 Visual Studio ( C# or VB ) 來寫一個具有漂亮 UI 的軟體是非常的麻煩
這在 WPF 的情況下已大有改善:介面層採用 XAML,程式層則還是採用 C# or VB
。XAML 的唸法 = [ ' zæməl ]
。C# 的唸法 = C Sharp
XAML 能做到的,C# or VB 都能做到 ( 只不過介面的部份以 XAML 來編製會容易很多 )
C# or VB 能做到的部份,XAML 就不一定能做到了
‧WPF / E = Silverlight ( WPF / E = Windows Presentation Foundation / Everywhere, Everywhere = 跨平台、跨瀏覽器 )
。WPF:作業系統與應用軟體 ( 桌面程式, 即 *.EXE )
。WPF/E:網頁多媒體 ( Silverlight 很像是 FlashPlayer,但是功能更為強大 )
講 Windows Presentation Foundation / Everywhere 其實很容易誤導大家
講 XAML Everywhere 其實就好懂多了:WPF 並沒有 Everywhere,有 Everywhere 的只有 XAML
應用了 WPF 中的 XAML 以達到 Everywhere 的目的 = WPF / E ( 只用到 XAML,並沒有用到 WPF )
微軟也怕誤導大家認為 WPF / E = WPF 也可以跨 OS,故把 WPF /E 更名為 Silverlight
但是 .NET Framework 3.0 並不包含 WPF / E ( 微軟在 Windows Vista 之後才推出 Silverlight )
所以不管是 Vista or XP,都要再安裝 Silverlight,瀏覽器才能觀看 WPF / E 的多媒體效果
請注意:筆者有時後為了與 WPF 對照的方便之故,會使用 WPF / E 一詞,有時後又會直接使用 Silverlight 一詞
別忘了,WPF / E = Silverlight
‧Expression Blend = 微軟專為 WPF ( XAML )、WPF / E ( XAML ) 打造的編輯器
WPF 是 .NET Framework 3.0 的一部份:
故 WPF 的程式可以直接叫用 .NET Framework 豐富的 APIs,除了易於撰寫 WPF 的程式之外也與 Windows 整合得更緊密
Silverlight ( WPF /E ) 並不是 WPF 的一部份:
‧WPF /E 與 WPF 除了都支援 XAML 之外、WPF / E 與 WPF 除了名稱很像之外,這兩個東東在本質其實相差很多 !!
‧為了避免大家把 WPF / E 與 WPF 看成是很類似的東東,故微軟把 WPF / E 更名為 Silverlight
但是 Silverlight 在多媒體的支援廣度、展示效果與速度,還是優於 FlashPlayer
簡單來說,在相同的效果下,速度的快慢: WPF > WPF/E ( Silverlight ) > Apollo ( Flash / FlashPlayer / Flex ) > DHTML
Silverlight(WPF/E)
Flash 萬事受限於時間軸 ( Flash 時間軸的位階太高了,一切都被時間軸綁死 )
Silverlight 時間軸的位階沒那麼高,故在編製上,Silverlight 就比 Flash 彈性多了、也方便多了
說 Silverlight 是 FlashPlayer Killer,其實是小看了 Silverlight !!
說 Expression Blend 是 Flash Killer,一樣是小看了 Blend !!
Silverlight 運用了 WPF 裡面一個共通的技術:XAML
這讓開發 WPF / *.EXE、XBAP、Silverlight 的介面,不需要重複學好幾種不同的語言,一個 XAML 就吃到底
XAML = 微軟專為 WPF 與 WPF/E 所打造的 UI ( RIA / UX ) 開發語言
單獨的 WPF,目前是走不出 .NET 與 IE 的 Windows 系統
但是如下圖,Silverlight 一支援 XAML 之後,XAML 就可以在不需要 .NET ( Windows ) 的情況下跨 OS、跨 Browser、跨 Devices、跨商用、…
Silverlight 的 UI 表現能力,雖然略遜於 WPF 的應用 ( WPF / *.EXE or XBAP )
但是跨 OS + 跨 Browser + 跨 Device + RIA + 與 WPF 都使用相同的 XAML = 後勢可期 !!
就更遑論 Silverlight 在 UI ( RIA / UX ) 上是如何地超越 AJAX、PHP、JSP、ASP.NET 了
XAML
XAML = 微軟專為 WPF 與 WPF/E 所打造的開發語言
XAML 與 HTML / XML 很類似,都是文字標籤,不是很易於編製
就像 HTML 需要 Dreamweaver、Frontpage、Expression Web、…、等編輯器一樣,XAML 也需要一些視覺化的編輯器或是輔助工具
XAML 太新了,所以微軟就推出了自家的 XAML 編輯軟體:Expression Blend
只要是 XAML 檔,就可以載入再加工之
故 user 就需要各種不同類型的 XAML 轉檔工具,一旦轉成了 XAML 檔,就可以:
‧Expression Blend → 載入 XAML → ( C# or VB ) → 超華麗介面的桌面程式 ( *.exe )
( 因為可以直接叫用 .NET Framework 3.0、並支援 C# or VB,故功能非常強悍 )
‧Expression Blend → 載入 XAML → Silverlight → 多媒體、動態的網頁應用
( Silverlight 目前只支援 XAML,故功能沒有 WPF 那麼強悍 )
Adobe 要 Flash / Apollo 兩套貴貴軟體才能做的事,現在 Expression Blend 一套就可以做到了
【2D 的 XAML】
在 Expression Blend 按 Ctrl + I ( Add Existing Item ) 輸入檔案:
可以發現在 2D 的方面只支援點陣圖 ( *.jpg 與 *.png ← 即:可以背景透明的 PNG-24 )
所以就輸入一張背景透明的 PNG 檔:
可以發現在 XAML 中,多了紅框那一行:( 點陣圖是以載入外部圖檔的方式嵌入 )
但是向量圖該怎麼辦呢 ?! 方法至少有三種:
第一、在 Expression Blend 直接繪製 ( 也可以填色,但先省略之 )
即:向量檔變成了 XAML 檔 ( 不是以載入外部圖檔的方式嵌入,而是變成一串的 XAML 語法 )
第二、在 Expression Design 中繪製好了之後,再輸出為 XAML 檔
一樣是向量檔變成了一串的 XAML 語法
( 向量檔中若是包含點陣圖,其中的點陣圖還是會以載入外部圖檔的方式嵌入,不會變成一串的 XAML 語法 )
Expression Design 就可以輸入 AI 檔,然後再轉成 XAML
第三、Illustrator 也有可以輸出 XAML 檔的 Tools / Plug-Ins
。XAML Exporter ( for Illustrator CS2 )
這東東目前 ( 2007‧06 ) 還在 0.2 版,但卻很有趣:( 不是 Illustrator 的 Plug-Ins,是一個獨立的小軟體 )
可以在開啟 Illustrator 與 XAML Exporter 之後,一按 XAML Exporter,就把 Illustrator 現行開啟的圖檔轉成 XAML
。XAMLExport ( for Illustrator CS2 )
這東東就是 Illustrator CS2 的 Plug-Ins 了,支援 WPF 與 WPF/E 的輸出,不過一樣只是 0.1x 版
一則很多人的電腦跑 Illustrator CS2 會跑不太動、再則上述兩個都是 0.1 ~ 0.2 版
故目前以 Expression Design 來把 AI 檔轉成 XAML 是最理想的方式
【3D 的 XAML】
。ZAM3D
Flash 的 3D Tools - - Swift3D 聽過吧 ?! 對,就是同一家公司 ( Electric Rain ) 專為 XAML 打造的 3D Tools:
是把 3D 檔 ( 3D 動畫亦可 ) 轉成一串的 XAML 語法喔,不是載入外部的 3D 檔喔 !!
看個簡單的 小範例 唄 ( 必需已安裝 Silverlight )
ZAM3D 可以載入 DXF / 3DS 檔,然後再轉成 XAML 檔:
。3D 檔 → XAML
這類的 Tools 非常多:
有 MAYA to XAML、Lightwave to Xaml Converters、Online converter from 3ds to XAML、
XAML Export Script for Blender ( 3D Tools for the WPF )、Deep Exploration、…
【Audio / Video 的 XAML】
。在 Expression Blend 中輸入 Audio 檔:以載入外部樂音檔的方式嵌入
。在 Expression Blend 中輸入 Video 檔:以載入外部視訊檔的方式嵌入
至此下個簡單的結論:
‧XAML 是 WPF、WPF/W 共同的開發語言
‧微軟的 Expression Blend 是編製 XAML 的利器
‧向量檔與 3D 檔都可以轉成一串的 XAML 語法(Blend 可以載入該 XAML 檔再加工之)
‧點陣圖、聲音檔、視訊檔則都是以載入外部檔案的方式嵌入到 XAML 中(Blend 可以載入該 XAML 檔再加工之)
‧Silverlight 簡單來說就是 XAML Player
XBAP
XBAP ( XAML Browser Application ) = 以 XAML 來搞 UI、在瀏覽器 ( 把瀏覽器當 OS ) 中執行的程式,可取代過去的 ActiveX control ( 如 Flash )、Java Applet
安裝了 Visual Studio 2005 Extensions for .NET Framework 3.0 之後 ( 沒安裝前是顯示 WinFX ),就可以編撰 XBAP 的應用了:
( Expression Blend 2 Preview 目前為止,還無法直接生出 XBAP 的應用 )
同一個 XBAP 應用,可以發佈為 *.XBAP 的網頁格式:( 在 IE 中瀏覽 )
同一個 XBAP 應用也可以發佈為 *.EXE 的格式:( 即 Windows 應用程式 )
( 上兩圖摘自微軟網站 )
Visual Studio 2005 實在是非常強大的開發工具:
‧Visual Studio 2005 可以開發一般的 Windows 程式 ( 桌面程式,即 *.exe )
‧Visual Studio 2005 Extensions for .NET Framework 3.0 可以開發 WPF / XAML 華麗介面的 Windows 程式
‧Visual Studio 2005 Extensions for .NET Framework 3.0 可以開發 XBAP
‧Visual Studio 2005 的下一代 - - Visual Studio Orcas,更可以直接開發 Silverlight
很多時候 WPF / *.EXE 並不會比 XBAP 來得好用 ( 雖然單一應用來說,WPF / *.EXE 會比較強 ):
尤其是 XBAP + ClickOnce ( ClickOnce 與 XBAP 都是在 Visual Studio 2005 中發佈 )
XBAP 雖然只能在 .NET Framework 3.0 + IE 下執行 ( 不能跨平台 ),但是其網際網路的支援,比起 WPF / *.EXE 來說實用多了
( 本 Blogger 主要的 Target 是 Designer,不是 Programmer,所以 XBAP 也只點到為止 )
Programming Tools for WPF
Base Environment
作業系統與網頁 Plug-Ins 總得先備齊吧
‧Windows XP SP2 ( or Windows Server 2003 Service Pack 1 ) + .NET Framework 3.0 ( Windows Vista 已內建 .NET Framework 3.0 )
‧Silverlight
程式撰寫的環境
‧Visual Studio 2005 with SP1 and Windows Vista Support Files
( 也有 Free 的 Visual Studio 2005 Express 可以下載,並已包含了大半會用到的功能 )
‧Visual Studio 2005 Extensions for .NET Framework 3.0 ( WCF & WPF )
( Visual Studio 2005 的下一代 - - Visual Studio Orcas Beta 1 也已經開放下載了 )
‧Windows SDK
‧Expression Blend
‧Expression Design
多媒體的編製環境
Microsoft Expression Studio 計有:
。Expression Web ( 網頁編製 )
。Expression Design ( 向量繪圖 )
。Expression Blend ( 多媒體編製與程式撰寫 )
。Expression Media ( 多媒體檔案管理 )
等 4 套軟體,但是只有 Expression Design 、Expression Blend 才與 XAML 有關
Tools and Utilities
‧早期多半都是使用 WinFX SDK 中的 XAMLPad
現在則有更好用的 XAML Pad 工具:XamlPadX、Kaxaml 與 XamlCruncher
上述三個 PadTools 各有所長,最好是全部下載試用後,再選一個適合自己的
( 別小看這些 Tools:Pad 類的 Tools,還是很多工程師的最愛 )
XAMLpadX:
KaXAML:
XAML Cruncher:
‧其它的 Tools:Lutz Roeder's .NET Reflector、Snoop、Performance Profiling Tools for WPF、Flexible Application Template
Building a Code Toolbox
3D Tools for WPF ( 3D 表面控制 )、Kevin's Bag-o-Tricks ( 一堆控制物件 )、UI Automation Stress ( 壓力測試 )
Sample Applications
‧兩個 Visual Studio 範例
。Healthcare Prototype
。Woodgrove Finance Application
‧一個 視訊教學 ( 請先看這個,72.5MB )
Tips and Tricks
上述 ( Programming Tools for WPF ) 都是參考 Tim Sneath 的文章 ( 筆者有小部份增減 )
若是怕英文,就看 簡體版 唄。剩下的瑣碎部份,就不多提了
Design Tools for WPF
上述是工程師可能會用到的,所以那些英文他們自然看得懂
至若搞設計的就簡單多了:
‧Expression Blend
專為 XAML 打造的編輯器
‧Expression Design
專為 XAML 打造的繪圖軟體 ( 可以載入 AI 檔、再轉成 XAML )
多媒體的編製環境
Microsoft Expression Studio 計有:
。Expression Web ( 網頁編製 )
。Expression Design ( 向量繪圖 )
。Expression Blend ( 多媒體編製與程式撰寫 )
。Expression Media ( 多媒體檔案管理 )
等 4 套軟體,但是只有 Expression Design 、Expression Blend 才與 XAML 有關
‧Adobe Illustrator
Illustrator CS2 已經有 Plug-Ins 可供 XAML 的輸出 ( 不過都只是 0.1 ~ 02. 版 )
‧ZAM 3D
專為 XAML 打造的 3D 軟體 ( 可以載入 DXF 與 3DS 檔、再轉成 XAML )
Tools and Controls for WPF
XAML 編輯器
‧Expression Blend
微軟自家的 XAML ( WPF、WPF/E ) 編輯器,把玩 WPF 的第一選擇 !!
Blend 1.0 只支援 WPF / *.EXE,即將推出的 Blend 2.0 則支援 Silverlight
‧Expression Design
RIA 的基礎一定是向量,故微軟也推出了 XAML 的向量編輯器 Expression Design
除了可以原生出 XAML 檔之外,也可以讀入 Illustrator 檔、再轉成 XAML
‧Aurora XAML Designer
你 Flash 是閃光對不對 ?! 你 Silverlight 是銀光閃閃對不對 ?!
好,這家公司叫做極光 ( Aurora ),大家一起來閃一閃 =..=
( 這也是 XAML 的編輯器,但是試用版只能使用 20 次,故筆者沒充份的時間也不敢去 Try。不過看起來還不錯用 )
‧Visual Studio 2005 extensions for .NET Framework 3.0 ( WCF & WPF )
在前面的 Programming Tools for WPF 中有提到:
。Visual Studio 2005 with SP1 and Windows Vista Support Files
。Visual Studio 2005 Express
。Visual Studio Orcas Beta 1
我們知道 Visual Studio 2005 的功能強大:可以編撰並發佈 WPF / *.EXE、XBAP、…
所以
。Visual Studio 2005 的 user 最好能下載並昇級到 SP1
若是 Vista 的 user,當然就去下載 Windows Vista Support Files
。如果想要把玩 .NET Framework 3.0 的新功能,就安裝 Visual Studio 2005 extensions for .NET Framework 3.0 ( WCF & WPF )
。若是想嚐新,更可以去試用 Visual Studio Orcas Beta 1
。當然啦,若是沒錢買 Visual Studio 2005,也可以去下載免費、而且具備 Visual Studio 2005 大半功能的 Visual Studio 2005 Express
‧當然啦,文字式的 XAML 編輯器也有利於徹底瞭解 XAML:XAMLPad、XAMLpadX 、KaXAML、XAML Cruncher
……………………………………………………………………………………………………………………………………………………………………………………
3D Tools for XAML
‧ZAM3D
最方便、簡易、順手的 XAML 3D Tool
ZAM3D 可以載入 3DS / DXF 檔:
Expression Blend ( WPF / *.EXE ) 可以載入 obj 檔:
有了 ZAM3D 與 Expression Blend,幾乎已不需要其它的 3D Tools 了
‧Deep Exploration
可以輸入超過 40 種各種的 3D 格式檔、稍加修改之、輸出為 XAML 檔
。Deep Exploration 5.0 CAD Edition:
。沒有不支援的 3D 格式:( 3DS MAX、MAY、Softimage|XSI )
。主畫面:
。支援超多 3D 檔案格式間的轉檔:
‧MAYA to XAML
免費的 MAYA 轉 XAML 工具
‧Online converter from 3ds to xaml
線上轉檔 ( 3DS2XAML ) 的網站
‧Lightwave to Xaml Converters
Lightwave 轉 XAML 工具
‧Xaml Export Script for Blender
Blender 是一個跨平台、Free 的 3D 軟體 ( 宇宙大爛片蜘蛛人2,就是以 Blender 製作的 ),可以參考 WIKI
……………………………………………………………………………………………………………………………………………………………………………………
2D Tools for XAML
‧Fireworks to XAML Exporter
把 Adobe / Macromedia 的 Fireworks 檔,輸出為 XAML
‧Adobe Illustrator to WPF/XAML Export Plug-In
Iluustrator CS2 的 Plug-In ( 前面有提過 )
‧XamlXporter for Illustrator
Illustrator CS2 的 XAML Tool ( 前面有提過 )
‧SWF2XAML: A Flash to XAML Conversion Tool
把 SWF 檔轉成 XAML ( 也還只是 0.2 版 )
……………………………………………………………………………………………………………………………………………………………………………………
Controls
‧NetAdvantage for WPF 2007
一堆 WPF 的 controls
‧Chart FX for WPF
2D, 3D, animation, and data binding capabilities of WPF
‧Actipro Wizard
遵循微軟 Wizard 97 的 WPF 控制元件
‧DataGrid for WPF
免費、但是專業且全功能的 WPF 資料格 ( Data Drid ) 控制元件 ( Demo )
‧Wpf-Ribbon
遵照 Office 2007 Ribbon ( 帶狀工具板 ) 的 WPF 控制元件
該公司同時也有 Windows Forms 的 Ribbon control
‧Actipro Ribbon
另一家 Office 2007 Ribbon ( 帶狀工具板 ) 的 WPF 控制元件
‧blendables
一堆 WPF 的 controls
DemoSites
‧XBAP ( WindowsXP 需安裝 .NET Framework 3.0 )
。日本旭山動物園 ( 右鍵轉地球,左鍵點選 )
。Warner 華納
。大英圖書館善本書展示
。全球氣象圖 ( 右下角可以切換平面或是球體。左右鍵都有功能,三個寬扁藍鍵也有功能 )
。CNET Japan ( 按 ↑ ↓ 鍵唄 )
。SHISEIDO
。小日本無厘頭的 Windows Vista ( 按左下角的攝影機,就可以 VR )
。金融應用
。Data Grids
‧Silverlight 1.0 ( 需安裝 Browser Plug-In: Silverlight 1.0 β )
。FOX Movies ( 可以直接播放 WMV,不像 Flash 還要轉成 *.flv )
。翻書效果 ( 右下角處一按,就有飛梭功能 )
。YouTube - Like ( 輕鬆就搞出類似 YouTube 的效果 )
。強力介面 ( 可縮放、拖曳移動 )
。Office 2007 - Like
。鍵盤鋼琴 ( Z ~ M:白鍵 SDGHJ:黑鍵 )
‧Silverlight 1.1 ( 需安裝 Browser Plug-In: Silverlight 1.0 α )
。模擬航空訂票系統 ( 先拖曳兩個城市、再拖曳右側的日期,下方就會出現轉機等飛航資訊 )
。影音播放 ( 先等它跑玩一次 ← Hosting 在國外,所以比較慢 )
‧在影音嵌入與播放面板等功能,Flash 完全不是對手
‧在視訊畫面上按一下,就全螢幕;再按一次 ( or 按 Esc 鍵 ),就恢復正常
。社交圈
。射擊遊戲 ( 按 ASDW 鍵 )
。魔法寶石
。西洋棋
Silverlight + 華麗的 WPF / *.EXE = Expression Blend 一套就搞定了
還需要 Adobe 貴貴的 Flash、Flash Player、Apollo 幹嗎 ?!
Silverlight 1.1
請先看看 Silverlight 1.1 的架構圖:( Click 看大圖 )
Application Platform
很重要地,.NET 支援 LAMP ( Linux + Apache + MySQL + PHP )
Services
Web Service 目前還是以支援微軟的為主
Tools
.NET 的主要開發軟體:Visual Studio ( Programmer ) 與 Expression Studio ( Designer )
Framework Languages
整個 .NET Framework 支援的程式語言:
‧主要的是 C#、VB、Jscript ( 微軟的 JavaScript,比一般的 JavaScript 架構更大,但也相容之 )
‧未來主要會再支援 VBx ( 即:VB 10 )
Platforms
Silverlight 1.1 除了 Windows 之外,也支援 Mac OSX
( 比較有趣的是,也將支援永遠不死的 Windows 2000 )
在 Browser 方面,則全數支援
Presentation Framework
展示層,看看就好。本系列是以設計為主,不是偏程式語言
Communications Framework
通訊層,看看就好
Data Framework
資料層,看看就好
Presentation Core
展示核心
支援所有的 Browser、支援 XAML、支援的多媒體格式夠多
很多人說 Silverlight ( WPF / E ) 是 WPF 的子集 ( subset ),這不是很正確的說法
應該說 Silverlight 支援的 XAML 是 WPF 的子集 ( 即:XAML 才是 WPF 的子集 )
Common Language Runtime(CLR)
這個 CLR ( 多種語言的通用執行環境 ) 就重要了:
Silvetlight 1.0 只支援 JavaScript,但是 Silverlight 1.1 就支援多種語言的通用執行環境
( Silverlight 1.1 也有 BCL, Base Class Library。CLR 與 BCL 是 Silverlight 1.1 最有力的雙手 )
如此,CLR 就可以做到:
‧記憶體管理
‧安全性驗證與執行
‧例外錯誤處理
‧執行 C# or VB 編譯後的程式,比原生的 JavaScript 快上數百倍
光是 CLR 與 BCL,就可以讓 FlashPlayer 變成玩具 ...
Base Classes
資料類別,看看就好
跟 Silverlight 1.1 相較,FlashPlayer 有著先天上的缺陷:
‧FlashPlayer 沒有 OS 相關技術的直接支援
‧FlashPlayer 的技術老舊、架構也不周全
‧FlashPlayer 只有 ActionScript 一種語言
。對工程師來說太簡單,所以不屑玩(故反而不會玩,因為要先克服 Flash 的基礎用法)
。對設計師而言則太難,所以沒幾個人會玩