奚江華
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功能罷了。整理⊙李延華

熱門新聞

Advertisement