今天快下班前,有一位朋友問我,有沒有WPF的參考資料,他們想要用WPF來開發視窗應用程式。
對於企業來說,大部分的視窗應用程式的功能,都是連結到資料庫處理資料,或是呈現/列印商業用報表為主。如果是這樣的需求的話,通常我會建議不需要使用WPF技術,改為開發Silverlight應用程式會更好。
“Silverlight應用程式不是跟Flash一樣,是在網頁裡面執行的嗎 ?”
錯!! 其實兩年前我在Tech Days 2009大會上,就曾經介紹過Silverlight 3的於瀏覽器外執行(Out-Of-Browser, OOB) 的功能 -- 讓Silverlight應用程式除了可以嵌入網頁中執行之外,更可以直接安裝在使用者的桌面上,當成一般的視窗應用程式執行!!! 使用Silverlight技術開發在使用者電腦中執行的應用程式,有下面幾個好處:
1. 跨平台:
使用WPF技術所開發的視窗應用程式,只能執行在有安裝.NET Framework的機器上;而Silverlight應用程式,則可以透過瀏覽器,直接安裝在所有支援Silverlight的作業系統上。除了Windows作業系統之外,Mac與Linux上面目前也都可以安裝執行Silverlight應用程式到桌面上執行(Linux透過Moonlight 4,目前支援大部分Silverlight 3與Silverlight 4的功能)。
2. 自動更新:
大部分的企業會選擇開發Web應用程式的其中一個原因,就是更新程式容易。而對於Silverlight應用程式來說,當有新版程式部署到企業伺服器上時,程式中可以設定自動更新,讓使用者的桌上執行的Silverlight應用程式可以永遠保持最新的版本。以POS或是ERP系統來說,當程式上新版本時,就不需要再為每台機器部署更新程式。
3. 穩定、高效能的執行環境:
企業級的Web應用程式目前會在前端執行大量的JavaScript,雖然目前主流的瀏覽器都提供了高效能的Script引擎,但是程式越複雜,瀏覽器所消耗的資源也就越多。Silverlight應用程式在桌面上執行時,因為執行的是編譯過的程式,再加上CLR的加持,因此相較於Web應用程式來說,可以讓複雜的程式跑得更穩定,執行速度更快。
4. 縮短開發與除錯時間
這我就不贅述了,Silverlight應用程式相較於ASP.NET或是AJAX技術來說,是真正的MVC架構,無論是開發或是除錯都很方便。
為了讓大家了解使用Silverlight技術開發企業級應用程式、甚至是雲端應用程式的好處,我把去年微軟MIX 10大會其中的一個範例部署到Windows Azure上,讓大家實際體驗看看。下面是操作的步驟:
1. 首先,請使用瀏覽器開啟 http://contoso.cloudapp.net/,你會看到如下圖的網路書店,這個是一個嵌入到網頁中的Silverlight應用程式,你可以切換不同的書店檢視員工的資料:
2. 在瀏覽器中按下滑鼠右鍵,在快捷選單中會出現一個 "將John's Demo App安裝到此電腦..." 的項目(下圖紅框處)。選取 "將John's Demo App安裝到此電腦..." ,就可以準備將Silverlight應用程式安裝到桌面執行(很簡單吧!!):
3. 接下來的對話方塊會問你,要將Silverlight應用程式的捷徑安裝到何處,你可以選取 "開始功能表" 或是 "桌面",然後按下 "確定" 按鈕:
4. 完成之後Silverlight應用程式就會馬上安裝到你的電腦中,同時開啟執行。在這一個範例中,因為我有加入檢查版本的程式,所以當Silverlight應用程式啟動之後,就會顯示檢查的結果:
按下 "確定" 關閉對話方塊之後,Silverlight應用程式就會從桌面上執行:
5. 關閉網頁與Silverlight應用程式。在桌面上或是開始功能表中,你可以找到 "John’s Demo App" 的捷徑,下次要啟動Silverlight應用程式的話,直接開啟這一個捷徑就可以了!!
6. 你也可以隨時從控制台的 "解除安裝或變更程式" 當中,移除安裝好的Silverlight應用程式:
或是在Silverlight應用程式啟動時,按下滑鼠右鍵,選取 "移除此應用程式" 即可。
當然,使用Silverlight開發視窗應用程式,也不是全然沒有限制,若是需要經常存取本機作業系統元件,像是呼叫Win32 API的應用程式,目前就不適合用Silverlight技術開發。但是以目前企業級應用程式的情境來說,只要是Web應用程式可以做到的,Silverlight應用程式就可以做到 -- 而且使用者還可以直接安裝到桌面上執行,省去開啟瀏覽器載入網頁的動作。
目前的Silverlight應用程式已經可以存取視訊鏡頭、麥克風、印表機等本機資源,在下一版的Silverlight 5當中,Silverlight的執行環境會開放更多與作業系統互動的功能,讓你開發好的Silverlight應用程式除了可以是Web應用程式之外,更可以是使用者每天可以從雲端安裝到桌面上快速執行的視窗應用程式!!!
2 則留言:
我現在用ubuntu11+moonlight4,瀏覽您文中的http://contoso.cloudapp.net/,是無法執行的。
其實silverlight還是只能在微軟的系統上跑,雖然我滿心期待在linux上也可以執行,但是都是失望居多。
首先,Silverlight並非只能在微軟的作業系統中執行,在Mac作業系統中也是可以正常執行的。
關於Moonlight 4 Preview 1所支援的Silverlight功能,我想之前我已經回覆過了。如果真的要試驗Silverlight在Linux上執行的效果的話,你可以先瀏覽用Silverlight 2開發的網頁試試,因為目前不相容的都是Silverlight 3或是Silverlight 4的部分功能。
這一個範例要展現Silverlight 4的功能,因此並沒有針對Linux平台避掉不支援的部分,所以在Linux環境中有可能無法正常執行。不過你可以上www.silverlight.net的showcase,還是有些是比較簡單的範例是可以在Moonlight上正常執行的,我們有用ubuntu試過了。
張貼留言