2012年6月28日 星期四
Metro Style App當中的Toast Notification訊息傳遞
Toast Notification是從WP7開始就有的新玩意兒,比起WP7,Metro Style App要送出Toast Notification比過去要來的簡單多了,而且有更多的樣板可以使用,在這段影片當中,我們介紹如何透過方便好用的NotificationsExtensions來送出Toast notification...
2012年6月26日 星期二
Metro Style App當中的資料儲存機制 - ApplicationData
ApplicationData是WinRT當中新的資料儲存機制,類似過去我們在Silverlight與WP7當中的IsolatedStorage,但由於同時又支援了Roaming, Temporary, 因此功能更為強大,在這段影片當中,我們就來看看WinRT當中的ApplicationData機制該如何使用...
2012年6月25日 星期一
Metro Style App與.NET 4.5中的非同步程式設計概念
非同步,是最近這幾年很重要的程式設計與開發概念。
過去,我們在寫程式的時候,總是從上到下一行一行執行,但隨著CPU運算能力越來越強大,且展示層的User Experience要求越來越高,用戶不容許今天我們的程式碼在跑長時間動作(例如開啟一個很大的檔案、或是讀取遠端資料庫或網路上的資料)時,畫面停止回應。
因此,最近這幾年程式設計都轉變成透過非同步的方式來設計,例如底下這樣的Silverlight程式碼:
過去,我們在寫程式的時候,總是從上到下一行一行執行,但隨著CPU運算能力越來越強大,且展示層的User Experience要求越來越高,用戶不容許今天我們的程式碼在跑長時間動作(例如開啟一個很大的檔案、或是讀取遠端資料庫或網路上的資料)時,畫面停止回應。
因此,最近這幾年程式設計都轉變成透過非同步的方式來設計,例如底下這樣的Silverlight程式碼:
在DownloadStringAsync的非同步Method呼叫下,返回值並不會立刻取得,而是在相對應的Completed事件當中取得,但這樣導致做一件工作需要拆成兩三段來寫,如果在非同步的呼叫之後,又要再次呼叫非同步方法,就會變成底下這樣:
這導致維護與程式碼閱讀的困難,更讓例外(Exception)處理變得很礙手礙腳。因此,在.NET 4.5和Windows的Metro Style App當中,開始有了新的非同步程式設計方式...
相關的說明與介紹,請參考底下影片:
相關的說明與介紹,請參考底下影片:
2012年6月22日 星期五
從Silverlight到Metro的心路歷程
趁有空,用文字整理一下沒能完整在研討會上分享的心情。
從Windows 8的Metro Style Apps開始有消息時,我們就在官方的Slides上,看到了針對Metro Style Apps的開發,寫明了是可以採用多種技術,包含HTML+JavaScript, 包含XAML+C++, 包含了XAML+C#(VB)...
那時候可能很多人覺得疑惑,咦? XAML+C#,那不就是Silverlight(或WPF)嗎? 那為何不乾脆寫Silverlight呢?
我們知道,早在.NET 3.0開始(2006年),WPF就是用XAML來描繪UI,而Silverlight的出現比WPF晚上了幾個月(2007年),沒想到在實務(實際使用)上,Silverlight後來比WPF更加的廣泛,同時也成為微軟在RIA上對抗Flash/Flex的利器。
(請回憶一下,在這個時間點, iPhone 才剛剛出現, iPad 還不知道在哪裡咧...)
後來沒多久,Windows Phone被迫出現了(2010年),我們都知道,Phone/Pad成功的關鍵,與App的多寡有著非常大的關係,因此從現在回頭看,在2010那個時間點,當時要讓App快速出現,最好的方式就是選擇一個可以快速上手,並且已經有著一定數量開發人員的開發技術,這個技術又要支援多媒體效果,又要有現成的開發工具,還能夠很快速地讓Runtime可以Porting到當時Windows Phone所採用的Windows CE上面,在當時時間如此急迫的狀況下,幾乎沒有任何其他的選擇和可能性,因此Silverlight雀屏中選,成為WP7.0和WP7.5的主要開發技術。
好,知道歷史背景之後,我們回頭談XAML+C#, 前面說到, 因為當時Silverlight幾乎可以代表XAML + C#(VB)這一掛的開發技術,所以在我們看到Win8 Metro Style App所採用的主要開發技術是XAML+C#(VB)之後,很自然的覺得,Metro的開發技術可以用XAML+C#,那到底是不是說,Silverlight可以用在Metro Style Apps開發上呢?
現在回頭看,答案揭曉了,答案可以說是也可以說不是。但原因原來如此地簡單,因為:
Silverlight = XAML+C#(VB)
但
XAML+C#(VB) 卻不等於(而是大於、是包含) Silverlight
請注意,在今天這個時間點回頭來看,我們很容易理解,XAML+C#(VB)這樣的技術組合,至少有下面這幾種方式:
1.WPF = XAML + C#(VB) + Full .NET Class Library
2.Silverlight = XAML + C#(VB) + .NET Class Library Subset
3.Metro = XAML + C#(VB) + WinRT
別忘了,XAML是描述UI的技術,C#(VB)是Programming Language,但光這兩個還不夠,第三個組合(Runtime的Class Library Framework)也是一個重點,XAML只管UI(包含Binding、Animation...etc)而Programming Language就只是寫程式用的語法,早在.NET 3.0從WPF開始我們就在概念上把這兩種東西分開了,這樣的概念就好比是HTML搭配javaScript、或Asp.net的Code Behind概念一般,目的是讓邏輯程式碼與描繪UI的程式碼分離,好處顯而易見,就是降低相依性,讓開發團隊中的UX設計師與程式設計師可以分工,又不會彼此干擾。(這是近代展示層應用程式設計的一大重點)
所以,有了這樣的概念之後,其實我們如果從更宏觀的角度來看Metro/WPF/Silverlight,這幾種開發技術的Programming Model幾乎大同小異,XAML與Programming Language根本上都差不多,唯一的差別是Runtime的Class Library。
所以我在研討會上再次說了『流淚撒種的,必歡呼收割』,過去我們在XAML(Silverlight/WPF)上花的心思,事實上一點都沒有白費。
過去我們(公司、我個人、和我的學生、夥伴們)花了不少時間在XAML(Silverlight)上,今天不管在Silvelight(應用在Internet/Intranet、Windows Phone),在WPF(應用在Desktop),在Metro(應用在Windows 8、Windows Phone),都可以得心應手,你過去熟悉的開發技術(XAML/C#(VB))其實並沒有改變,你用這套開發技術在微軟的世界中,可以橫跨 Web / Desktop / Phone / Pad 這幾種不同的平台(當然,我指的是在微軟的設備上),也因為如此,很多人擔心的Silverlight是否還會活著的問題,其實或許並不存在。
我們剛才說了,Silverlight是XAML+Programming Language(C#/VB)+Run Time Class Libraries的集合, 如果你可以更宏觀的看,如今的Metro Style App開發技術,與Silverlight不僅僅是系出同門,更可以說是攣生兄弟。
那這樣是否代表著兩者完全相同? 當然也不是,即便是攣生兄弟,在不同的環境下長大,也需要面對不同的生活環境, Metro / Silverlight / WPF 之間的差異大致上就是這樣,因為這三種同父同母、系出同門的開發技術,在應用上Metro是要面對平板、智慧型手機,Silverlight是要面對Web環境、WPF是要面對Desktop,自然會衍生出不同的個性。(也因此,我會在後面陸續慢慢分享一些Silverlight與Metro Style App開發之間的差異與相同之處,你會慢慢發現,其實你累積下來的經驗比你想像的還有用)
在分工比較細的公司或專案團隊,我們大概不會要求開發人員Metro/Silverlight/WPF三種都會,但很抱歉,你在台灣,你是全能Developer,而我們過去也都受過這種全能開發人員的養成教育,所以我得說如果你是.NET Developer,那Metro/Silverlight/WPF三種通吃針對你來說應該也是很自然的狀況才對。
更嚴格地說起來,Metro/Silverlight/WPF三種開發技術從某個角度來說,根本就是一種(而不該當成三種來看)。
這也是我在研討會上,特別提醒開發人員,不要只看到改變,要多看看你留下來的經驗,你才會發現,其實過去的經驗很有價值。同時,在這個多變的時代,你擁有或掌握的學習能力與經驗,價值遠勝於你擁有或掌握的技術。技術是會變的,但你的學習能力與經驗,則是可以累積並且重用的。
至此,我可以說,Silverlight有沒有死去,開始不是一個問題,(如果你堅持要討論,我會說我覺得還早),不僅如此,熟悉XAML( WPF/Silverlight )的開發人員,比起傳統的開發人員來說,有著更廣泛的發展空間,對於未來的專業領域生涯規劃,也將有著相當大的可能性。
我在討論這件事情的時候有沒有立場? 我要說:『或許有』! 公不公道? 『我想可能有些人覺得不一定!』 但至於這個判斷正不正確? 就由讀者來決定囉 :)
端午佳節將至,建議各位放鬆心情,吃飽粽子之後,我們再回來繼續衝刺。
~祝大家 佳節愉快~
從Windows 8的Metro Style Apps開始有消息時,我們就在官方的Slides上,看到了針對Metro Style Apps的開發,寫明了是可以採用多種技術,包含HTML+JavaScript, 包含XAML+C++, 包含了XAML+C#(VB)...
那時候可能很多人覺得疑惑,咦? XAML+C#,那不就是Silverlight(或WPF)嗎? 那為何不乾脆寫Silverlight呢?
我們知道,早在.NET 3.0開始(2006年),WPF就是用XAML來描繪UI,而Silverlight的出現比WPF晚上了幾個月(2007年),沒想到在實務(實際使用)上,Silverlight後來比WPF更加的廣泛,同時也成為微軟在RIA上對抗Flash/Flex的利器。
(請回憶一下,在這個時間點, iPhone 才剛剛出現, iPad 還不知道在哪裡咧...)
後來沒多久,Windows Phone
好,知道歷史背景之後,我們回頭談XAML+C#, 前面說到, 因為當時Silverlight幾乎可以代表XAML + C#(VB)這一掛的開發技術,所以在我們看到Win8 Metro Style App所採用的主要開發技術是XAML+C#(VB)之後,很自然的覺得,Metro的開發技術可以用XAML+C#,那到底是不是說,Silverlight可以用在Metro Style Apps開發上呢?
現在回頭看,答案揭曉了,答案可以說是也可以說不是。但原因原來如此地簡單,因為:
Silverlight = XAML+C#(VB)
但
XAML+C#(VB) 卻不等於(而是大於、是包含) Silverlight
請注意,在今天這個時間點回頭來看,我們很容易理解,XAML+C#(VB)這樣的技術組合,至少有下面這幾種方式:
1.WPF = XAML + C#(VB) + Full .NET Class Library
2.Silverlight = XAML + C#(VB) + .NET Class Library Subset
3.Metro = XAML + C#(VB) + WinRT
別忘了,XAML是描述UI的技術,C#(VB)是Programming Language,但光這兩個還不夠,第三個組合(Runtime的Class Library Framework)也是一個重點,XAML只管UI(包含Binding、Animation...etc)而Programming Language就只是寫程式用的語法,早在.NET 3.0從WPF開始我們就在概念上把這兩種東西分開了,這樣的概念就好比是HTML搭配javaScript、或Asp.net的Code Behind概念一般,目的是讓邏輯程式碼與描繪UI的程式碼分離,好處顯而易見,就是降低相依性,讓開發團隊中的UX設計師與程式設計師可以分工,又不會彼此干擾。(這是近代展示層應用程式設計的一大重點)
所以,有了這樣的概念之後,其實我們如果從更宏觀的角度來看Metro/WPF/Silverlight,這幾種開發技術的Programming Model幾乎大同小異,XAML與Programming Language根本上都差不多,唯一的差別是Runtime的Class Library。
所以我在研討會上再次說了『流淚撒種的,必歡呼收割』,過去我們在XAML(Silverlight/WPF)上花的心思,事實上一點都沒有白費。
過去我們(公司、我個人、和我的學生、夥伴們)花了不少時間在XAML(Silverlight)上,今天不管在Silvelight(應用在Internet/Intranet、Windows Phone),在WPF(應用在Desktop),在Metro(應用在Windows 8、Windows Phone),都可以得心應手,你過去熟悉的開發技術(XAML/C#(VB))其實並沒有改變,你用這套開發技術在微軟的世界中,可以橫跨 Web / Desktop / Phone / Pad 這幾種不同的平台(當然,我指的是在微軟的設備上),也因為如此,很多人擔心的Silverlight是否還會活著的問題,其實或許並不存在。
我們剛才說了,Silverlight是XAML+Programming Language(C#/VB)+Run Time Class Libraries的集合, 如果你可以更宏觀的看,如今的Metro Style App開發技術,與Silverlight不僅僅是系出同門,更可以說是攣生兄弟。
那這樣是否代表著兩者完全相同? 當然也不是,即便是攣生兄弟,在不同的環境下長大,也需要面對不同的生活環境, Metro / Silverlight / WPF 之間的差異大致上就是這樣,因為這三種同父同母、系出同門的開發技術,在應用上Metro是要面對平板、智慧型手機,Silverlight是要面對Web環境、WPF是要面對Desktop,自然會衍生出不同的個性。(也因此,我會在後面陸續慢慢分享一些Silverlight與Metro Style App開發之間的差異與相同之處,你會慢慢發現,其實你累積下來的經驗比你想像的還有用)
在分工比較細的公司或專案團隊,我們大概不會要求開發人員Metro/Silverlight/WPF三種都會,但很抱歉,你在台灣,你是全能Developer,
更嚴格地說起來,Metro/Silverlight/WPF三種開發技術從某個角度來說,根本就是一種(而不該當成三種來看)。
這也是我在研討會上,特別提醒開發人員,不要只看到改變,要多看看你留下來的經驗,你才會發現,其實過去的經驗很有價值。同時,在這個多變的時代,你擁有或掌握的學習能力與經驗,價值遠勝於你擁有或掌握的技術。技術是會變的,但你的學習能力與經驗,則是可以累積並且重用的。
至此,我可以說,Silverlight有沒有死去,開始不是一個問題,(如果你堅持要討論,我會說我覺得還早),不僅如此,熟悉XAML( WPF/Silverlight )的開發人員,比起傳統的開發人員來說,有著更廣泛的發展空間,對於未來的專業領域生涯規劃,也將有著相當大的可能性。
我在討論這件事情的時候有沒有立場? 我要說:『或許有』! 公不公道? 『我想可能有些人覺得不一定!』 但至於這個判斷正不正確? 就由讀者來決定囉 :)
端午佳節將至,建議各位放鬆心情,吃飽粽子之後,我們再回來繼續衝刺。
~祝大家 佳節愉快~
2012年6月20日 星期三
[研討會] Microsoft Developer day 2012 - 從C# Developer的角度看MetroApp的開發
颱風天,很謝謝大家特別來參加今天Microsoft Developer Day 2012的議程,我的場次投影片位於:http://arock.blob.core.windows.net/msdevday2012/DevDayCS2Metro-public.7z
範例和影片會陸續放上來,也請同步關於底下FB社團中的訊息:
Win8 Metro App Asia Developers
在這個展示當中,示範了如何建立一個簡單的Metro Style App, 如何透過Metro上的UserInformation類別抓取用戶資訊,顯示照片與名稱, 以及如何在頁面中進行切換...等基本的Metro功能,讓C#開發人員輕鬆的進入Windows 8 Metro Style App 設計的世界...
分享,是現在行動裝置上非常有趣的設計。過去在App與App之間要分享資料似乎有些麻煩,然而現在在Windows 8 Metro Style App當中,我們可以輕鬆的利用OS本身提供的Share Contract,讓兩個App之間迅速便利的分享資料,更重要的是,這樣的功能很好設計...
過去在Silveright或WP7當中,想要寫程式抓取專案中的影片或檔案,還需要費點功夫, 且XAML與C#程式碼當中的寫法又有點不同,現在Metro Style App, 可以讓我們直接用ms-appx:///就可以存取專案中的檔案囉...
FilePicker有分為Open或Save, 和過去的FileDialog很像,但不同的是,在Metro當中,可以直接透過App與App之間的合作,直接讓我們寫程式透過FilePicker存取用戶的Skydrive, 也就是說, 他整合了本地端與雲端的檔案存取系統, 在現在無所不雲的時代, 有其跨時代的意義與價值...
可以用來替代WP7中的Panorama或Pivot, 適合觸控也是和滑鼠操作, 是Metro中非常典型的應用。(影片中有一段錄音口誤,將Metro Style App誤說成WP7, 請容我有空再改吧...)
範例和影片會陸續放上來,也請同步關於底下FB社團中的訊息:
Win8 Metro App Asia Developers
在這個展示當中,示範了如何建立一個簡單的Metro Style App, 如何透過Metro上的UserInformation類別抓取用戶資訊,顯示照片與名稱, 以及如何在頁面中進行切換...等基本的Metro功能,讓C#開發人員輕鬆的進入Windows 8 Metro Style App 設計的世界...
分享,是現在行動裝置上非常有趣的設計。過去在App與App之間要分享資料似乎有些麻煩,然而現在在Windows 8 Metro Style App當中,我們可以輕鬆的利用OS本身提供的Share Contract,讓兩個App之間迅速便利的分享資料,更重要的是,這樣的功能很好設計...
過去在Silveright或WP7當中,想要寫程式抓取專案中的影片或檔案,還需要費點功夫, 且XAML與C#程式碼當中的寫法又有點不同,現在Metro Style App, 可以讓我們直接用ms-appx:///就可以存取專案中的檔案囉...
FilePicker有分為Open或Save, 和過去的FileDialog很像,但不同的是,在Metro當中,可以直接透過App與App之間的合作,直接讓我們寫程式透過FilePicker存取用戶的Skydrive, 也就是說, 他整合了本地端與雲端的檔案存取系統, 在現在無所不雲的時代, 有其跨時代的意義與價值...
可以用來替代WP7中的Panorama或Pivot, 適合觸控也是和滑鼠操作, 是Metro中非常典型的應用。(影片中有一段錄音口誤,將Metro Style App誤說成WP7, 請容我有空再改吧...)
2012年6月8日 星期五
如何啟動MSDN Ultimate訂閱免費的Windows Azure雲端服務
隨著Windows Azure開始正式在台灣開放,我們現在可以用台灣了Live ID申請囉,跟著我來做申請步驟吧。
如果你的Windows Live ID帳號有訂閱MSDN(例如BizSpark, MVP, 公司買的, 路上撿到的...etc),那你用這個帳號登入之後,請進入MSDN訂閱網站,會看到底下畫面:
如果你的Windows Live ID帳號有訂閱MSDN(例如BizSpark, MVP, 公司買的, 路上撿到的...etc),那你用這個帳號登入之後,請進入MSDN訂閱網站,會看到底下畫面:
請點選其中的『啟用Windows Azure』,接著出現底下畫面:
立刻按下→鈕,進入下一步。
可能是因為我在申請該Live ID的時候,已經輸入過電話了(如果要進行電話驗證,請輸入你的手機,選擇簡訊驗證,會收到簡訊代碼,填入後即可),所以跳過了第二步驟的電話驗證,直接進入第三步驟的信用卡驗證:
按下『下一步』,就完成了,會被直接導入到Azure站台:
您可以選擇『帳戶』:
會看到你的Azure訂閱帳戶,MSDN免費贈送的帳號有相當多的時數(1500hr/m),足夠你建立一個具有Load Balance的中小型網站了。如果你怕不小心超過時數信用卡會被扣款,請不要開啟消費限制。
要開始上雲端了嗎,你只需要點選『管理』:
就可以進入後端管理站台了(新版Portal也開放囉):
Enjoy it...
訂閱:
文章 (Atom)
熱門文章
-
LINE在2022/5/13增加了postbackAction的屬性,讓發人員可以藉由送出一個含有postbackAction的訊息(類似底下這樣),來幫用戶來開啟(或關閉)rich menu,甚至可以開啟輸入鍵盤和語音: 上圖 A 的部分,是一個 Buttons Templ...
-
在使用自動化上版的過程當中,你大概或多或少會想要使用簽核(Approval)的功能。簽核功能讓你可以自動佈署到特定站台(例如正式機)之前,形成一個 “把關” 的功能。 雖然感覺用起來很酷,但坦白說,我們對於上新版程式前的Approval行為,在態度上是不鼓勵的。因為多年下來,...
-
你有三分零二秒嗎? 建議您靜下心來看這段影片... 人生就是這樣, 拱手一生, 記憶最深的卻是, 這一些點點滴滴的不完美, 凝聚成我們心中的完美。
-
前面 我們討論到了很多跟Line Bot有關的機制,但有朋友提了一個問題,如果我單單只是要透過程式碼發訊息給用戶,一定要申請並建立一個Line Bot嗎? 其實不用。 一直以來,有一個比較不被重視的機制,叫做LINE Notify,其實它已經誕生很久, IFTTT 的Line...
-
注意,本篇部分內容已過時,新版Line bot申請流程,請參考 這篇 。 前面 說過,不知道發生了什麼事情,全球幾個大廠幾乎在同一個時間announce各家的機器人技術或介面,包含Microsoft 的bot API,還有FB、Line…到最近的Google,總之突然間,原本封...
-
LINE Bot這一系列,從2016年五月開始,寫著寫著也快30篇了,差不多剛好一個月一篇,如果資訊雜誌還在的話,應該可以是一個專欄。 很久沒有整理索引了,2019年初,再次將這一系列相關連結整理如後: 使用C#開發LineBot (1) - 用c#建立一個LineBot...
-
最近的 Line Notify 、 Line Login ,以及前一陣子的 Microsoft Graph API ,全都使用到了OAuth作為用戶身分驗證以及資源存取的基礎。但很多讀者會卡在OAuth的運作流程上,根本的原因是不理解OAuth到底是幹嘛的?其存在的目的為何?以及...
-
LineBot傳送訊息的形式,除了單純的文字、貼圖、圖片之外,還有一個比較特別的形式,稱之為 Template Message ,這種形式的訊息本質上是一個選單,長得像是底下這樣: 上面這個是三種Template Message中的一種形式,稱為Buttons Template...
-
改用C#好一段時間了,但是以前寫VB的習慣總是如影隨形的跟著。這沒什麼好或不好,以前說過,這年頭沒有雙語能力是不行的。 只是有時候我就是不很明白,為何VB有些簡單的字串方法C#怎麼也不肯加進來。不過,人家有人家的道理,我們則只能在變通當中找個繞路的方式。 我最近在C#程式...
-
Windows 8, 一幅蓄勢待發的姿態。 在最近一兩個月,微軟全省跑透透,辦了多場介紹Windows 8的研討會,也陸續的在網路上大方的提供了Windows 8先前的Developer Preview以及最近的Consumer Preview版本讓大家免費下載。 過去段...