公告資訊

未經授權,禁止轉載網站文章與內容。如有需要可以跟我聯絡,謝謝!!




顯示具有 Silverlight 技術文件 標籤的文章。 顯示所有文章
顯示具有 Silverlight 技術文件 標籤的文章。 顯示所有文章

2011年5月7日 星期六

Silverlight 4 企業級雲端應用程式實例

今天快下班前,有一位朋友問我,有沒有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應用程式,你可以切換不同的書店檢視員工的資料:

image

2. 在瀏覽器中按下滑鼠右鍵,在快捷選單中會出現一個 "將John's Demo App安裝到此電腦..." 的項目(下圖紅框處)。選取 "將John's Demo App安裝到此電腦..." ,就可以準備將Silverlight應用程式安裝到桌面執行(很簡單吧!!):

image

3. 接下來的對話方塊會問你,要將Silverlight應用程式的捷徑安裝到何處,你可以選取 "開始功能表" 或是 "桌面",然後按下 "確定" 按鈕:

image

4. 完成之後Silverlight應用程式就會馬上安裝到你的電腦中,同時開啟執行。在這一個範例中,因為我有加入檢查版本的程式,所以當Silverlight應用程式啟動之後,就會顯示檢查的結果:

image

按下 "確定" 關閉對話方塊之後,Silverlight應用程式就會從桌面上執行:

image

5. 關閉網頁與Silverlight應用程式。在桌面上或是開始功能表中,你可以找到 "John’s Demo App" 的捷徑,下次要啟動Silverlight應用程式的話,直接開啟這一個捷徑就可以了!!

image

6. 你也可以隨時從控制台的 "解除安裝或變更程式" 當中,移除安裝好的Silverlight應用程式:

image

或是在Silverlight應用程式啟動時,按下滑鼠右鍵,選取 "移除此應用程式" 即可。

image

 

當然,使用Silverlight開發視窗應用程式,也不是全然沒有限制,若是需要經常存取本機作業系統元件,像是呼叫Win32 API的應用程式,目前就不適合用Silverlight技術開發。但是以目前企業級應用程式的情境來說,只要是Web應用程式可以做到的,Silverlight應用程式就可以做到 -- 而且使用者還可以直接安裝到桌面上執行,省去開啟瀏覽器載入網頁的動作。

目前的Silverlight應用程式已經可以存取視訊鏡頭、麥克風、印表機等本機資源,在下一版的Silverlight 5當中,Silverlight的執行環境會開放更多與作業系統互動的功能,讓你開發好的Silverlight應用程式除了可以是Web應用程式之外,更可以是使用者每天可以從雲端安裝到桌面上快速執行的視窗應用程式!!!

2011年1月31日 星期一

網際網路應用程式中的預鑄工法–Silverlight 4

在上個星期的研討會中,分享了很多個主題,其中有一個主題會後很多朋友都有興趣,那就是Silverlight 4技術的應用。很多人對於網際網路開發技術都會有很多誤解。先請問各位幾個問題:請問 HTML 5目前是W3C定義完成的標準嗎? 請問 CSS 3 目前是W3C定義完成的標準嗎? 請問未來的網際網路應用程式,還會是 "Thin-Client" 嗎?

前兩個問題的標準答案都是:。或許你會說,不是很多瀏覽器都說支援 HTML 5了嗎 ? 但事實上就是,W3C到目前為止,還沒定義完成最終版的 HTML 5 -- CSS 3 也是。像這些似是而非的資訊現在充斥在網路上,也常常誤導了許多開發團隊走了很多的冤枉路。

從 3、4年前開始,我就在很多ASP.NET與Silverlight的技術研討會當中,說明了Silverlight其實是網際網路應用程式的開發技術,特別適合用來開發商業級應用程式,而非只是與 Flash player對抗的技術。事實上,Silverlight 4在商業級應用程式開發方面,無論是開發工具或是執行效能,都比Flash好太多了。而若是相較於JavaScript 而言,Silverlight 4 提供了更多資料繫結的方法以及更好的除錯工具,在前端瀏覽器中,可以創造出更多豐富的功能。以研討會中所舉的範例來說,透過Silverlight技術,你可以很容易的就在瀏覽器當中,與後端的服務建立TCP的繫結,讓前端的網頁可以即時更新氣象的資料(範例程式在ASP.NET升級寶典中)。

SilverlightNetTcp

Silverlight 4也簡化了很多在瀏覽器中透過JavaScript無法做到或是很難做到的功能,像是與後端的服務做複雜的繫結,都可以很輕鬆地透過Visual Studio 2010開發工具完成 -- 而且很容易就可以測試與除錯,之後會再透過部落格跟各位再分享其他的範例,今天先來從開發架構上了解,Silverlight技術所帶來的改變。

今天要談的所謂 "預鑄工法",是目前建設大型建築物,像是高樓或是橋梁所普遍採用的技術,主要作法是將大型建築物複雜的部份先在外部工廠建造完成之後,將來運到工地之後就可以直接組裝,可以大大的縮短工作所需的時間。

image   (圖片來源:榮工處網站)

因為Silverlight 4應用程式可以直接整合JavaScript,而且也可以直接從瀏覽器中存取不同位置的後端網路服務,因此當開發測試好Silverlight應用程式之後,就可以將Silverlight應用程式嵌入網頁中。因為大部分複雜的程式都已經包裝在Silverlight應用程式中了,因此就不需要再去撰寫或是維護一堆的JavaScript;換句話說,JavaScript就變成了將Silverlight應用程式與網頁中的HTML元素繫結的工具,這就是我所謂的 "網際網路應用程式中的預鑄工法" -- 開發商業級應用程式的時候,將網頁中複雜的部份,像是需要顯示即時資料的圖表或是資料庫的繫結,直接透過Silverlight 4應用程式開發完成之後嵌入到網頁中,再透過JavaScript與網頁中的元素互動。如此一來就不需要在伺服器端維護其他網頁程式,既可以加速這些複雜功能執行的效能,也可以減少維護JavaScript所需要的成本。

這一篇是一個楔子,後續將開始分享實際的做法。至於一開始最後一個問題的答案:當網頁中需要執行的程式越來越複雜,目前在用戶端執行時使用大量CPU資源或是GPU加速運算已經是常態。手機都要邁入雙核心時代了,你認為呢 ?

2011年1月28日 星期五

ASP.NET與VS 2010升級實務

本周四(01/27)受台灣微軟邀請,分享了在ASP.NET 4、Silverlight 4以及Visual Studio 2010開發工具的實務心得。下面是當天的講義連結:

ASP.NET 與 Visual Studio 2010 升級實務

提升ASP.NET網站的使用者經驗– Silverlight 4 的整合應用

另外,因為原本分享ASP.NET 升級寶典的網站負荷不了太大量的下載,所以我重新放了一個新的下載位置:

下載ASP.NET升級寶典

希望大家都可以趕快準備好你的Visual Studio 2010,開始練習使用Silverlight 4 加速你的企業級應用程式開發!!

2010年11月8日 星期一

該怎樣看待HTML 5?

今年TechDays 之後,有很多朋友詢問我有關於是不是需要等 HTML 5標準的問題。我先跟大家分享一個身邊的故事:

我有一位好朋友,幾年以來,一直想在台北市買間房子。他跟我說,希望可以找一間室內有35坪以上,總價兩千萬以下的房子。其實這條件並不會太難找,但是找到的都是中古屋,要不然就是交通比較不方便的區域,所以他就不考慮了;再加上常常會有房價泡沫化的新聞,於是乎迄今,屬於他的房子還不知道在哪裡 -- 即便是他有兩千萬的預算…

HTML 5 從2007年開始制定到現在,一直被視為下一代網際網路的一個重要標準;然而到現在為止,也還在 "Working Draft"的階段,"最快" 應該也是明年六月以後才有機會變成 "Recommandation" 的標準(很樂觀的看法)。而備受爭議的CSS 3,則可能會需要再拖一陣子。在現在這標準還是曖昧不明的階段,Chrome、Safari等不同的瀏覽器廠商,為了搶瀏覽器的市場,也舉辦許多的研討會,每家都試圖證明自己是HTML 5的領導廠商。更甚者,希望讓IT人員相信,只有HTML 5才是下一代Rich Internet Application的唯一標準。

我在五月份的文章中,已經把HTML 5發展的可能做了一些分析;在 IE 9 Beta1釋出之後,情勢又更加的明顯。微軟從2007年,也就是大約是 HTML 5標準開始發想的時間,就推出了Silverlight 1.0版。在Silverlight 1.x中,微軟就已經試著使用 XAML標籤,來描述網頁中動畫、影片、聲音等等,與使用者互動的技術,再透過JavaScript控制這些網頁中的物件,建立RIA應用程式。但是也就是為了要讓 XAML標籤所設計的使用者操作介面可以在不同的環境中(特別是未來的行動裝置),不受瀏覽器與JavaScript引擎的影響,而可以有一致的效果,因此從Silverlight 2.0開始,Silverlight就轉變為現今的架構。而從2007年迄今,Silverlight也已經根據實際應用的需求,進化了四個版本;如果從這樣的經驗來看, HTML 5 的標準就算在制定完成之後,也還有一段長路要走…

另外,若是要讓 RIA應用程式可以在不同的瀏覽器中可以有一致的效果,瀏覽器本身除了需要有很好的JavaScript執行引擎之外,更需要與作業系統有更緊密的結合,才能善用圖形加速的功能(GPU、DirectX…)去呈現網頁。在我TechDays 2010的demo當中(http://ie.microsoft.com/testdrive/Performance/PsychedelicBrowsing/Default.html),其實就可以看出有支援GPU加速的 IE 9 Beta 1,在執行HTML 5的網頁時,效果就比Chrome(7.0.517.44)好上很多。當然,現在離HTML 5的標準制定完成至少還有半年以上的時間(很樂觀的看法),瀏覽器廠商都還有進步的時間與空間。但在這些問題都還沒有解決或是最佳化之前,使用HTML 5開發出來的網頁對於使用者來說,不會有太多的感覺。當然,對於瀏覽器廠商來說,若是 IE 9在執行大部分的HTML 5網頁時的速度與效果都比Chrome或是Safari好的話,自然市占率就會增加 -- 然而在 HTML 5標準確定之前,目前所有 "號稱"支援HTML 5 的瀏覽器,也都沒有支援全部的功能(http://www.w3.org/QA/2010/09/how_do_we_test_a_web_browser_o.html),自然對於使用者來說,也沒辦法帶來好處。

image image 

(差很大的使用者操作經驗…)

HTML 5 會一統江湖嗎? 從幾個地方來看:

1. 大部分的HTML 5的規格,都是參考自2007年迄今,RIA應用程式技術(Flash、Silverlight)現有的功能所制定的。然而應用程式的發展日新月異,參考現在的需求所制訂出來的規格,通常是無法滿足未來的需求。換句話說,在環境變化多樣性的網際網路平台中,HTML 5 應該是繼續扮演目前的角色,做為Web基礎的框架;而各種 RIA的技術,包括Silverlight以及未來的其他裝置,勢必會繼續發展滿足未來使用者需求的功能;而HTML 5標準所無法支援的環境,則應該依然是可以透過plug-in的方式,執行在瀏覽器中。

2. 根據這幾年來Silverlight的發展經驗來看,未來HTML 5應該會發展成為設計工具間,轉換使用者操作介面的一種標準。每一種不同的UI 技術都會有各自的profile,如同MDA(Model Driven Architectur)當中 PIM(Platform Independent Model)到PSM (Platform Specific Model)的過程一樣,設計人員可以先使用工具設計好一個通用的模型之後,再套上不同執行環境所需要的profile,就可以轉換成所需要的使用者操作介面

會需要這樣做的原因是,未來可以上網的裝置越來越多,需求也會不同,要讓RIA應用程式在這些裝置中都有良好的操作經驗,就不可能都靠瀏覽器去執行這些程式。換句話說,除非裝置本身的作業系統就是最佳化過的瀏覽器(Chrom OS ?),否則會有越來越多的RIA應用程式需要支援於瀏覽器外執行。此時不同的裝置,設計工具就可以透過不同的profile,轉換成各自支援的UI標準 (類似MDA當中的PIM->PSM),開發人員再透過 MVVM 等開發模式,就可以快速的將使用者操作介面與程式結合,轉換成在不同裝置中執行的應用程式。

我們需要等 HTML 5嗎? 不需要! 就像買房子一樣,有現在就已經成熟的技術可以解決問題,為什麼要等以後不確定能做到多少的標準? 在未來,Silverlight技術將會繼續演進,支援更多裝置與平台;而同時,HTML 5無法滿足的部分,也繼續會有新的技術會出現,請問你還可以等多久???

參考資料:

W3C Statndards and Drafts

HTML 5: Getting to Last Call

HTML 5+ CSS 3 會殺了Flash 跟Silverlight ?
HTML 5+ CSS 3 會殺了Flash 跟Silverlight ? -2

2010年6月8日 星期二

Microsoft Expression Studio 4 已經可以下載了!

雖然透過Visual Studio 2010就可以直接設計Silverlight 4的應用程式表單,不過若是要做比較炫的效果的話,還是需要透過好的設計工具。

下載Microsoft Expression Studio 4:http://www.microsoft.com/expression/try-it/

studio4-ultimate

2010年6月1日 星期二

解決WCF RIA Services中,Entity Model改變DomainService不會同步更新的問題

WCF RIA Services 對於開發以資料為導向的Silverlight應用程式而言,是一個相當方便的工具。在Visual Studio 2010開發工具中,當建立好了一個Entity Model之後,若是資料庫的模型有修改過的話,你可以透過"Update Model from Database"的功能選項,將資料庫最新的定義更新到Entity Model中:

image

然而這一個動作只會更新Entity Model裡面資料時體的定義,並不會幫你在既有的Domain Service中針對這些資料實體新增Metadata定義及用戶端程式存取時所需要的指令。在WCF RIA 1.0當中,你可以試著用下面的步驟解決這一個問題:

1. 在Server端專案中加入一個新的DomainService定義檔

    這一個步驟的目標,是要透過Visual Studio 2010 開發工具,建立用戶端存取新的資料實體所需要的介面與中繼資料(metadata)。新的DomainService原始檔可以暫時先命名為TempDomainService.cs或是你可以識別的名稱:

image

接著在精靈中,設定DomainService類別的定義:

image

設定時注意兩個技巧:

(1) Domain service class name請設為原本的Domain Service類別名稱

(2) Entities 請選擇需要加入的資料實體定義即可,其他的不用選。

完成之後按下OK按鈕,開發工具會建立新的DomainService定義檔。

2. 開啟新的DomainService類別原始檔(以這個例子來說是TempDomainService.cs),刪除類別前面的"[EnableClientAccess()]"標籤,並且使用partial關鍵字將該DomainService宣告為部分類別。

3. 開啟既有的DomainService類別原始檔(以這個例子來說是MessageWallDomainService.cs),使用partial關鍵字將該DomainService宣告為部分類別 (但是不可以刪除類別前面的"[EnableClientAccess()]"標籤)。

接下來重新編譯Server端及Client端專案的程式,你就會可以從Silverlight應用程式中去存取Entity Model中新的資料實體了!

我不確定在下一版的WCF RIA Services開發工具中會不會修正這一個問題,不過透過部分類別來建立DomainServices,只要你的類別命名規則夠清楚,某種程度來說,也不會增加太多DomainService維護的負擔。

2009年9月28日 星期一

Silverlight 3 與ASP.NET MVC

TechDays 2009 會後,有學員問我說:"老師,請問一下Silverlight 3 是不是不可以用在ASP.NET MVC 當中 ?"。

事實上,對於Silverlight 3的Web 應用程式開發來說,整合ASP.NET MVC可以減少很多開發和維護上的effort;相對的,以Silverlight 3 做為ASP.NET MVC 的前端開發技術,也是相當合適的。

在 "微軟新一代分散式架構與網際網路開發技術剖析(2)" 這一篇網誌中,曾為大家剖析過MVC 架構在ASP.NET 的技術中,必須要搭配ASP.NET AJAX 來進行實作。然而,就如同我在TechDays 的場次中為各位說明過的,ASP.NET AJAX 主要仍是以整合ASP.NET Server Control 為考量,因此在發展MVC架構中的展示層(View),或是以用戶端操作經驗為主的RIA應用程式時,就會出現比較多的一些限制。

因此,下面是我的看法:

"以Silverlight 3 做為開發ASP.NET MVC 展示層操作介面的主要技術,不但可以讓你更容易建立高互動性的使用者操作介面,更可以透過ASP.NET MVC 所建立的伺服器端環境,簡化Silverlight 3應用程式在伺服器端的開發與維護工作"

兩種技術可以說是相輔相成的!!

TechDays 2009 – Silverlight 3 應用與導入(範例1與2)

我在TechDays 2009的 "Silverlight 3應用與導入"的場次當中,針對SIlverlight 3的協同開發做了初步的介紹,後續也有許多朋友跟我詢問有關於Silverlight3 的開發相關的問題,可見大家對於導入Silverlight 3 開發企業的Web應用程式都很有興趣。

的確,對於Silverlight 3的Web應用程式發展而言,企業內部比較容易有可以控制的用戶端環境,而且很多RIA應用程式的開發需求其實也是從內部系統來的。導入Silverlight 3在加上ASP.NET MVC,可以讓你很容易開發需要的Web 應用程式和後端的網路服務整合。

附件是我在TechDays 2009中所實作的的第一個與第二個範例。其實對於學習Silverlight 3應用程式開發來說,複製範例回去看XAML或是程式碼內容,對於學習是沒甚麼太大的效果的--就跟BizTalk應用程式的開發一樣。因此即便是在千人的演講場次中,我也堅持要用live demo而非開程式碼的方式介紹,這樣大家才可以學到正確的開發步驟。當然,時間有限,所以詳細的Silverlight 3開發觀念與技巧我會在整理到下個月的書當中。

2009年9月24日 星期四

TechDays 2009 - Silverlight 3 應用與導入實務


9月23號在微軟的TechDays 2009研討會中介紹了"Silverlight 3應用與導入實務",有興趣的朋友可以從下面的連結下載演講的Silde 參考。當天的範例我也會陸續的分享出來,如果大家對於使用Silverlight 3 開發Web應用程式有興趣或是需求的話,下個月我將會透過悅知出版社出版一本"Silverlight 3 Web應用程式開發實戰",屆時各位可以用來做為開發時的參考。


Office封面-完稿 [轉換]

最新回應

Loading...

即時與版主對話


(若狀態顯示"忙碌"時,我可能無法馬上回應。你可以留下Email,我會盡快跟你聯絡,謝謝喔!!)