2007-09-07

解析微軟「Flash Killer」-WPF/E(上)(下)



http://www.ithome.com.tw/itadm/article.php?c=42704
http://www.ithome.com.tw/itadm/article.php?c=42764

解析微軟「Flash Killer」-WPF/E(上)
文/李延華 (記者) 2007-03-29

WPF/E是WPF的子集,桌面應用由WPF支撐,微軟希望WPF/E與現有的網頁技術互相整合,幫助提供更好的使用體驗。


奚江華
NET書籍作家、微軟專屬講師及顧問, 熱愛微軟.NET 技術,創立「DotNet開發聖殿」部落格,以發布.NET相關資訊為宗旨,聖殿祭司則是他在網路上的代號。

微軟才推出.NET 3.0不久, 相關工具尚未到位,WPF(Windows Presentation Foundation)還是個新鮮而陌生的技術名詞,沒想到這一會兒又冒出了一個WPF/E(Windows Presentation Foundation/Everywhere)。到底WPF和WPF/E有什麼差別?和Flash又是什麼關係呢?微軟最有價值專家兼.NET暢銷書作者 奚江華,給了我們第一手的資訊。

問:WPF/E和WPF是什麼關係?
答:WPF/E是WPF的子集,嵌入在瀏覽器中提供2D繪圖、向量動畫與影音的效果。

問:WPF/E是否可不依附在HTML或瀏覽器中,獨立在桌面環境執行?
答:桌面應用由WPF這個巨人撐著,並不需要WPF/E從瀏覽器跳出,要是拿WPF/E來應付桌面應用,那麼WPF/E站在WPF這個巨人面前,只會顯得像侏儒般瘦小,不但突兀,而且也不符合邏輯。

WPF/E的Runtime Component下載檔也只有1.1MB,相對於.NET Framework 3.0安裝檔約50MB以上,顯得精簡許多,但這並不表示WPF/E的功能很陽春,反倒有許多功能是超越HTML能力,所以雖然WPF/E本身具有獨當一 面的潛力,但微軟目前沒有讓WPF/E獨立的計畫,反倒希望WPF/E能夠與現有的網頁技術互相整合,在Web上扮演好應有的角色。

問:既然WPF/E是嵌入在網頁之中,不就是和Flash的定位相同?開發者該如何選擇?
答:雖然WPF/E與Flash在功能與行為模式上非常神似,WPF/E也確實常被業界號稱為「Flash Killer」,但撇開功能與行銷上的勝負爭執,其實兩者本質上有很大的差異。

簡單來講,未來廣大的.NET程式設計師會想擁抱的是WPF/E,因為WPF/E不是孤島,WPF/E可 以和ASP.NET AJAX、C#、VB、XAML、WF、WCF與WPF等.NET平臺的技術結合,成為好開發又好維護的統合技術,而非東拼西湊的解決方案,在開發、維護 與擴展方面具有很大的優勢。

問:通常以向量技術所設計的網站,不能直接被搜尋引擎解析,WPF/E有這樣的問題嗎?如果希望提高網站的能見度, 是不是就應該選擇ASP.NET AJAX?
答:Flash這方面的問題,據專家表示可以在MetaData中嵌入文字,以便讓搜尋引擎解析,不過若是動態的產生資料,則無法自動更新MetaData中的資料。

而WPF/E本身是以DOM型式公開它的元素樹(Element Tree),所以透過最原始、最單純的JavaScript,就能夠讀取WPF/E內容。搜尋引擎可以輕易對WPF/E所設計的網站進行爬文檢索,完全不需要使用任何的特殊橋接器或演算法。

問:WPF/E是與IE捆綁,還是可以跨瀏覽器?
答:目前所發行的WPF/E CTP版本安裝套件,只支援Windows及Mac兩種作業系統上的瀏覽器,實際支援規格如下:

● Windows XP SP2:IE 6、IE7/Firefox 1.5、Firefox2.0。
● Windows Vista:IE7/Firefox 1.5、Firefox2.0。
● Mac OSX 10.4.8:Firefox 1.5.0.8/Safari 2.0。

問:那麼,未來WPF/E會發行Linux平臺的 Runtime Component嗎?
答:就我的觀察,微軟對Linux平臺的一貫政策與作法,似乎是不會主動支援。所以這也是為什麼有Mac版的WPF/E安裝檔,卻沒有Linux版本的緣故。就種種利害關係的考量,未來不會有Linux版本的WPF/E安裝檔的機率似乎較大。

問: ASP.NET AJAX與WPF/E,是二擇一的方案?還是未來其中一個會被對方取代?
答:基本上ASP.NET AJAX與WPF/E兩者並不是相互替代,而是彼此互補的技術,兩者各有其強項,所以微軟的策略是整合兩者的能力。 ASP.NET AJAX與WPF/E結合,會比目前Web只融入單純的Ajax技術更具吸引力。整理☉李延華

解析微軟「Flash Killer」-WPF/E(下)
文/李延華 (記者) 2007-04-04

WPF/E超越.NET的限制,可與JSP、PHP或CGI程式溝通,不過支援的瀏覽器目前仍限於Windows和Mac平臺,未來是否支援Linux尚是未知數。


奚江華
NET書籍作家、微軟專屬講師及顧問, 熱愛微軟.NET 技術,創立「DotNet開發聖殿」部落格,以發布.NET相關資訊為宗旨,聖殿祭司則是他在網路上的代號。

既然ASP.NET AJAX 1.0和WPF /E不是二擇一的方案,而是互補的技術,兩者有什麼差別呢?開發者該如何並用這兩種技術,達到相輔相成的效果?請看奚江華的說明。

問:Ajax技術即可強化網頁的互動性,為什麼還需要WPF/E?
答:傳統的網頁技術,由HTML到DHTML,再進化到Ajax,雖然讓用戶端與伺服器端互動能力增加,運作速度也變快,但對於2D繪圖、向量動畫與影音 效果的改善,仍十分貧乏。而這些不足之處正是WPF/E天生的超級強項,所以如果Ajax能與WPF/E互相搭配,將會大幅提升Web應用程式在使用者經 驗上的滿意度。

問:ASP.NET AJAX與WPF/E兩者之間如何互動?
答: ASP.NET AJAX與WPF/E之間的互動,完全不需要依賴特殊的橋接器,只要透過三個要素:W3C的DOM、JavaScript與WPF/E Object Model即可做到。也就是說,開發者利用JavaScript,就能夠操控DOM與WPF/E控制項,讓彼此之間可互相溝通與呼叫。 而ASP.NET AJAX的用戶端解決方案,正是以JavaScript為基礎,而透過JavaScript即可與WPF/E互動。

問:如果我們已架設好ASP.NET AJAX開發環境,該如何與WPF/E整合?
答:開發WPF/E程式最基本只需要安裝WPF/E Runtime Component,如果希望在Visual Studio 2005中有WPF/E的樣板使用,需先安裝Visual Studio 2005 SP1後,再下載安裝WPF/E SDK,透過內建的工具產生WPF/E專案樣板。

問:如您所言, ASP.NET AJAX專案樣板要如何與WPF/E整合開發應用程式?
答:在ASP.NET AJAX專案中只需引用WPF/E的agHost.js及eventhandlers.js兩個JavaScript檔, 即可整合開發。

問:WPF/E使用的是標準的HTML和JavaScript,所以其他類型的網頁程式是否可以使用?
答:的確如此。由於WPF/E只要安裝Runtime Component就能夠執行,而它本身又可以透過JavaScript存取WPF/E DOM,並且執行WPF/E控制頂的方法與屬性,就理論上是可以讓JSP、PHP、ASP等網頁語言使用,所有以HTML為基礎的網頁程式,都可以直接整 合WPF/E程式,發揮WPF/E在動畫、繪圖與影音的強大能力。

不過,讓JSP叫用WPF/E的想法,是我在研究WPF/E技術時,無意間想到的,所以就實際建置Apache和Tomcat,並部署WPF/E應用程式測試看看,結果發現確實可以正常瀏覽與執行WPF/E的應用程式。這確實令我十分吃驚。

因為實驗的結果背後的意義是:WPF/E擺脫了Windows、IIS與ASP.NET,那麼Linux伺服器的JSP或PHP程式,按理來說,也可以自由叫用WPF/E的功能(編按:WPF/E目前尚未支援Linux的瀏覽器)。
微軟從來不會大方開放.NET技術給其他軟體使用,也不曾推出一個可以不需要買Windows、IIS就能執行的網頁技術。未來微軟會不會鎖定WPF/E只應用在Windows平臺,就不得而知了!

問:最後一個問題, WPF/E的影音多媒體、2D動畫與向量繪圖等功能都非常令人驚艷,但是,為什麼沒有支援3D?
答:WPF/E為何捨棄3D視覺效果?理由有幾個重要因素:

1. WPF的3D是透過DirectX引擎著色,並且充分利用顯示卡GPU的強大運算效能,但其他平臺並沒有DirectX引擎,為了保持WPF/E跨平臺的特性,所以無法進行3D運算。

2. WPF/E是在瀏覽器中執行,而瀏覽器本身是屬於沙箱(Sandbox)的環境,基於安全性的理由,並不允許直接與DirectX引擎等底層服務溝通,所以3D功能的運算,有這一層限制。

3. WPF/E Runtime Component的大小限制在1.1MB, 這部分與Flash相當,所以無法塞入大量的3D函式庫。而且Flash本身也因為跨平臺因素沒有提供3D功能,微軟參照競爭者的作法,思維上也就不急著加入3D功能了。

雖然無論是WPF/E或Flash,3D的功能兩大陣營都有種種不實作的考量,但不表示這兩個技術無法實現3D功能。因為有一個著名的 Papervision 3D(開放源碼的Flash),已經實作在Flash中加入3D功能了,所以由此看來,3D在WPF/E上運作是可行的,剩下的就是微軟決定何時在 WPF/E中加入3D功能罷了。整理☉李延華


--
萬歲!您的郵件已被捨棄。一封垃圾郵件也沒有!


--
萬歲!您的郵件已被捨棄。一封垃圾郵件也沒有!

沒有留言: