還記得上一年,有一個新興名字叫RIA (Rich Internet Application),現在都已經沒有太多人在意這個字。
所謂RIA,正式定義可以上維基看看,但其實大家都知道這是泛指用Microsoft Silverlight / Adobe Air / Adobe Flex / JavaFX所寫的Web Apps。
Silverlight由1.0開始我都有隨意地學習,雖然目前還未基於興趣或工作上做過任何Production的Project,但
對Silverlight有一定的情意結。
不過這幾天在我的Google Reader中的Silverlight,WPF,Windows Phone 7的subscription都看到很多類似說"Silverlight已死"的標題。
細看之下,原來不是激進人士的空談說話,只是微軟"今天的我打倒昨日的我"。
在上星期的Professional Developers Conference (PDC)上,微軟親口說出日後方針把Silverlight發展放在Client上,而HTML5則才是Web上的重點。
與兩年前說的不一樣,當時在推廣Silverlight時,說RIA會在Web的平台上大行其道,當時甚至有人擔心微軟會忽略ASP.NET。
不過其實有留意的話都知道,其實無論Adobe Air,Adobe Flex,還是Sun Java FX都已經很早就放慢腳步了。
用的人不多,寫的人亦不多,RIA佔有率雖然或多或少都受高效能的javascript Framework影響,但事實上做這類RIA的開發門檻較高,需要的人力或資源都較多,而且未來5大Browser,IE9/Chrome 8/Firefox 4.0/Opera 11/Safari都已經對HTML5作好準備,而用HTML5的Canvas做遊戲甚至用WebGL做3D遊戲都已經有多人做範例去實現,所以要做一些較動態的網頁已經不用靠RIA了。
而且Cross Platform依然是一個問題,就我自己工作上來說,早一兩年還可以只兼顧IE和Firefox就可以,但現在實在不能再忽視WebKit的Safari和Chrome。
Silverlight的Player雖然也有Firefox和Safari版本,但到現在有多流通性亦存有疑問,始終這並不是硬性要安裝的東西。
而所謂Silverlight for client,其實就是指Out-Of-Browser的Silverlight Apps和Windows Phone 7,但為什麼要說到要"死亡"就是Out-Of-Browser的Silverlight根本沒有太大存在價值,要做Client軟件的,自然會用WPF去做真正的Desktop Apps,至於WP7.......我還是那句...來得太遲了。
所以還在想學Silverlight的人可能要重新考慮一下,或許我自己都應該準備一下HTML5了。
外國有很多Blogger都對這個消息作出回應,值得睇睇。
Silverlight is Dead, the Moon is Made of Cheese, and HTML 5 is Ready for Prime Time
Silverlight Is for the Client, HTML5 for the Web
Microsoft Shifts From Silverlight to HTML5
Microsoft: Our strategy with Silverlight has shifted
2010年11月5日星期五
2008年10月20日星期一
Silverlight in Eclipse IDE - eclipse4SL
我之前一直在想,有沒有免費的軟件是取代MS自家的Expression Blend,我找到的都是商業軟件,免費的如XamlPad,只是人手輸入XAML,不是一個Design Tool。莫非要設計XAML,就一定要付錢買軟件?既然最新Silverlight 2支持免費的Visual Web Developer做程式部份,那圖形部份怎麼辦? 好彩MS在有意無意支持一個計劃。
寫過Java/PHP的人應該一定知道什麼是Eclipse,但有誰想過可以用Eclipse設計Silverlight,這個軟件叫做eclipse4SL (Eclipse for Silverlight)。
Homepage : http://eclipse4sl.org
網頁說明是這樣的 :
- XAML Editor & Preview with code hinting and code completion: Eclipse will contain an advanced, standards-compliant XAML editor with code hinting and code hinting features which helps detect and correct coding errors.
- Full compatibility with Microsoft's Development and Design Tools: The XAML and Silverlight projects created by Eclipse will be fully supported by both Microsoft Visual Studio and Microsoft Expression Studio tools.
我未有時間試玩,不過有 ScreenShot 睇下。



寫過Java/PHP的人應該一定知道什麼是Eclipse,但有誰想過可以用Eclipse設計Silverlight,這個軟件叫做eclipse4SL (Eclipse for Silverlight)。
Homepage : http://eclipse4sl.org
網頁說明是這樣的 :
- XAML Editor & Preview with code hinting and code completion: Eclipse will contain an advanced, standards-compliant XAML editor with code hinting and code hinting features which helps detect and correct coding errors.
- Full compatibility with Microsoft's Development and Design Tools: The XAML and Silverlight projects created by Eclipse will be fully supported by both Microsoft Visual Studio and Microsoft Expression Studio tools.
我未有時間試玩,不過有 ScreenShot 睇下。




Silverlight 2 Released!!!

搞左咁耐,Silverlight 終於都出左RTW(Release to Web)版,發展到而家,Silverlight 由最初受注目的動畫表現,到而家很多人更注重Application層面表現。
其實我始終相信短時間內 Silverlight 不可能取代Flash,即使再過多一兩年亦是,要製作Silverlight動畫,成本比Flash要更多。再者,寫開Flash既人都應該不願意或冇需要轉寫Silverlight。本身已經是Adobe派系亦未必願意花時間去學MS的產品。Microsoft應該都知道呢一點,始終Silverlight的最大群族還是.NET語言的Developer,所以慶幸Silverlight 2已經包含UI。
2008年3月18日星期二
Silverlight vs. Flash


Silverlight vs. Flash: The Developer Story
http://weblogs.asp.net/jezell/archive/2007/05/03/silverlight-vs-flash-the-developer-story.aspx
Silverlight vs. Flash – An Analysis Report
http://silverlight.net/forums/p/3015/8462.aspx
Silverlight - Animations Programmatically With C#/VB
既然SL 2.0支援.NET Language,除了用StoryBoard之外,當然還可以如WPF / Xbap般,使用程式去做動畫喇。
以下是其中一個例子,由10x10的正方形漸變大小至600x400:
以下是其中一個例子,由10x10的正方形漸變大小至600x400:
public void Create_And_Run_Animation() { //新建一個10x10和紅色的正方形 Rectangle myRectangle = new Rectangle(); myRectangle.Width = 10; myRectangle.Height = 10; Color myColor = Color.FromArgb(255, 255, 0, 0); SolidColorBrush myBrush = new SolidColorBrush(); myBrush.Color = myColor; myRectangle.Fill = myBrush; //把正方形加進既LayoutRoot的子集 LayoutRoot.Children.Add(myRectangle); //Duration設成8秒,時間越短越快,你可以想像成Timeline一樣 Duration duration = new Duration(TimeSpan.FromSeconds(0.8)); //因為我們需要同時改變寬和高,所以要建立兩個DoubleAnimation DoubleAnimation myDoubleAnimation1 = new DoubleAnimation(); DoubleAnimation myDoubleAnimation2 = new DoubleAnimation(); myDoubleAnimation1.Duration = duration; myDoubleAnimation2.Duration = duration; //新增StoryBoard Storyboard sb = new Storyboard(); sb.Duration = duration; sb.Children.Add(myDoubleAnimation1); sb.Children.Add(myDoubleAnimation2); //把目標轉向myRectangle和Property Storyboard.SetTarget(myDoubleAnimation1, myRectangle); Storyboard.SetTarget(myDoubleAnimation2, myRectangle); Storyboard.SetTargetProperty(myDoubleAnimation1, "(Rectangle.Width)"); Storyboard.SetTargetProperty(myDoubleAnimation2, "(Rectangle.Height)"); myDoubleAnimation1.To = 600; myDoubleAnimation2.To = 400; //放進Resouce,就好似使用Blend建立的StoryBoard 時一樣 LayoutRoot.Resources.Add(sb); //開始動畫 sb.Begin(); }
Silverlight - Using StoryBoard From Expression Blend
很多年前都一直有玩Flash,約是Flash 4至Flash MX2004期間。所以Blend其實不是太難上手,玩過Silverlight 2.0 和Expression Blend後,我學習SL覺得首先的就是要放下Flash的基本概念。雖然Flash和Blend都同樣使用Timeline,Keyframe去達到動畫效果,但Blend並沒有類似MovieClip的東西出現,反之是用一樣叫StoryBoard的東西,透過改變Target,Property去做到一個"劇本"的效用。而StoryBoard同樣是XAML,並不是好像MovieClip般可以當是一個物件。
以下是我學習期間,導入StoryBoard方法
按此觀看Demo
Page.xmal
Page.xaml.cs
以上例子就是利用sender的Name去代入SetValue()中的myRect.Name,
換句話說,透過SetValue()再引用正確的dependency property,就可以同樣Override 其他數值。
以下是我學習期間,導入StoryBoard方法
按此觀看Demo
Page.xmal
<Canvas> <Canvas.Resources> <Storyboard x:Name="myStoryboard"> <DoubleAnimation x:Name="myDoubleAnimation" Storyboard.TargetProperty="Opacity" From="1.0" To="0.0" Duration="0:0:2" AutoReverse="True" /> </Storyboard> </Canvas.Resources> <Rectangle x:Name="MyAnimatedRectangle1" Canvas.Top="10" Canvas.Left="10" Width="100" Height="100" Fill="Blue" MouseLeftButtonDown="Start_Animation" /> <Rectangle x:Name="MyAnimatedRectangle2" Canvas.Top="10" Canvas.Left="120" Width="100" Height="100" Fill="Blue" MouseLeftButtonDown="Start_Animation" /> <Rectangle x:Name="MyAnimatedRectangle3" Canvas.Top="10" Canvas.Left="230" Width="100" Height="100" Fill="Blue" MouseLeftButtonDown="Start_Animation" /> <Rectangle x:Name="MyAnimatedRectangle4" Canvas.Top="10" Canvas.Left="340" Width="100" Height="100" Fill="Blue" MouseLeftButtonDown="Start_Animation" /> </Canvas>
Page.xaml.cs
public void Start_Animation(object sender, MouseEventArgs e) { myStoryboard.Stop(); Rectangle myRect = (Rectangle)sender; myDoubleAnimation.SetValue(Storyboard.TargetNameProperty, myRect.Name); myStoryboard.Begin(); }
以上例子就是利用sender的Name去代入SetValue()中的myRect.Name,
換句話說,透過SetValue()再引用正確的dependency property,就可以同樣Override 其他數值。
Adding Timer to Silverlight Application
前一段時間學習LINQ,算是了解基本的概念和應用後,就試一試了解Silverlight。
一開始就想寫一個類似以前任天堂時代的撞撞波遊戲,遊戲的中"板板"已經完成跟隨Mouse,"波波"亦可以照預設方面進行Double Animation , 但是Game Logic和Game Loop部份真是很難搞。

例如波波反彈的方向,總不是一直都是直線前進,直線反彈吧。
力度,速度等等都是考慮的,本身我未讀過Vector Maths和Geometry方面的東西。
幸好網上有人已經用Silverlight 1.0 + JavaScript寫了一個Sample,我可以作為參考。
但Game Loop部份,Silverlight 1.0可以使用setTimeout()的方法。但Silverlight 2.0本身既沒有setTimeout(),
亦沒有什麼Timer Control的東西。所以查了一查後,我們可以用DispatcherTimer去做到。
詳情可以按連結去查看:
For Silverlight 1.1:
http://adoguy.com/2007/05/15/Silverlight_and_Timers.aspx
For Silverlight 2.0:
http://pagebrooks.com/archive/2008/03/07/silverlight-2-has-a-timer-dispatchertimer.aspx
一開始就想寫一個類似以前任天堂時代的撞撞波遊戲,遊戲的中"板板"已經完成跟隨Mouse,"波波"亦可以照預設方面進行Double Animation , 但是Game Logic和Game Loop部份真是很難搞。

例如波波反彈的方向,總不是一直都是直線前進,直線反彈吧。
力度,速度等等都是考慮的,本身我未讀過Vector Maths和Geometry方面的東西。
幸好網上有人已經用Silverlight 1.0 + JavaScript寫了一個Sample,我可以作為參考。
但Game Loop部份,Silverlight 1.0可以使用setTimeout()的方法。但Silverlight 2.0本身既沒有setTimeout(),
亦沒有什麼Timer Control的東西。所以查了一查後,我們可以用DispatcherTimer去做到。
詳情可以按連結去查看:
For Silverlight 1.1:
http://adoguy.com/2007/05/15/Silverlight_and_Timers.aspx
For Silverlight 2.0:
http://pagebrooks.com/archive/2008/03/07/silverlight-2-has-a-timer-dispatchertimer.aspx

2008年2月26日星期二
Silverlight 2真面目出來了
.NET之父 - Scott Guthrie(微軟開發部門總經理)日前更新了Blog,詳細地解釋Silverlight 2.0和編寫Digg範例。
我完整地看過整篇文章,有幾點值得注意:
- Silverlight 2.0 是Cross Platform / Cross Browser ,無論是Windows或Linux,都可以支援,因為Silverlight 本身就是Client Side的東西。
- Silverlight 2.0 有自己的WPF UI Framework ,同樣有collections, IO, generics, threading, globalization, XML,亦支援LinQ.
- 和現有的Xbap一樣,會連同一系列Control.
- Silverlight 除了自身會Compile至Xap File外可以連同HTML或ASP.NET頁發佈,而本身亦有System.NET 和Sockets的Class,可以支援cross domain access,估計可以如以往使用TCPClient般去存住資源.
- Client Side本身不需要install任何.NET Framework.

原文:
First Look at Silverlight 2
http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx
以下是Scott Gu所寫的tutorials :
我完整地看過整篇文章,有幾點值得注意:
- Silverlight 2.0 是Cross Platform / Cross Browser ,無論是Windows或Linux,都可以支援,因為Silverlight 本身就是Client Side的東西。
- Silverlight 2.0 有自己的WPF UI Framework ,同樣有collections, IO, generics, threading, globalization, XML,亦支援LinQ.
- 和現有的Xbap一樣,會連同一系列Control.
- Silverlight 除了自身會Compile至Xap File外可以連同HTML或ASP.NET頁發佈,而本身亦有System.NET 和Sockets的Class,可以支援cross domain access,估計可以如以往使用TCPClient般去存住資源.
- Client Side本身不需要install任何.NET Framework.

原文:
First Look at Silverlight 2
http://weblogs.asp.net/scottgu/archive/2008/02/22/first-look-at-silverlight-2.aspx
以下是Scott Gu所寫的tutorials :
- Part 1: Creating "Hello World" with Silverlight 2 and VS 2008
- Part 2: Using Layout Management
- Part 3: Using Networking to Retrieve Data and Populate a DataGrid
- Part 4: Using Style Elements to Better Encapsulate Look and Feel
- Part 5: Using the ListBox and DataBinding to Display List Data
- Part 6: Using User Controls to Implement Master/Details Scenarios
- Part 7: Using Templates to Customize Control Look and Feel
- Part 8: Creating a Digg Desktop Version of our Application using WPF
2007年9月8日星期六
Silverlight 1.0 & Silverlight 1.1 Alpha Release!
Silverlight第一個正式版本在9月5日正式推出,
雖然Silverlight配套已經很好,Visual Studio 2008 Beta / Blend / ASP.NET Future etc...
但很多人和我一樣遲遲未能起步,我個人最大難處就是JavaScript, 因為1.0是用Javascript語言去做程序,
但1.1已經可以使用Managed Code去做背後程序,暫時支援Visual Basic 和C#語言,未來會支援IronPython和IronRuby,
不過我當然只擔心VB部份吧 :) ,看過使用VB語言製作的Clock Sample,理解不算難,
但用Code去做Drawing部份就似乎不算容易.
下圖是SilverLight Final 的Map,整個Silverlight架構,方向都可以看到,尤其是對ASP.NET照顧有加.大家如果細心睇睇會看到一種語言叫VBx,其實這不是什麼新語言只是代表VB9而已.

連結:
Silverlight 主頁
http://silverlight.net
Silverlight 1.1 Sample
http://silverlight.net/community/gallerydetail.aspx?cat=4
雖然Silverlight配套已經很好,Visual Studio 2008 Beta / Blend / ASP.NET Future etc...
但很多人和我一樣遲遲未能起步,我個人最大難處就是JavaScript, 因為1.0是用Javascript語言去做程序,
但1.1已經可以使用Managed Code去做背後程序,暫時支援Visual Basic 和C#語言,未來會支援IronPython和IronRuby,
不過我當然只擔心VB部份吧 :) ,看過使用VB語言製作的Clock Sample,理解不算難,
但用Code去做Drawing部份就似乎不算容易.
下圖是SilverLight Final 的Map,整個Silverlight架構,方向都可以看到,尤其是對ASP.NET照顧有加.大家如果細心睇睇會看到一種語言叫VBx,其實這不是什麼新語言只是代表VB9而已.
連結:
Silverlight 主頁
http://silverlight.net
Silverlight 1.1 Sample
http://silverlight.net/community/gallerydetail.aspx?cat=4
2007年6月4日星期一
台灣Microsoft的一堆Silverlight 學習資源文章

Silverlight 架構概觀
本白皮書中包括 Silverlight (先前代號為 "WPF/E") 架構的概觀,並說明此架構如何適用於 Microsoft 所推出、可用來建立新一代 Web 應用程式的產品。此外,此白皮書亦將探討 Silverlight 技術的架構。以 Silverlight 嵌入媒體播放
了解如何使用 Silverlight 建置服務,將視訊嵌入部落格 (或任何其他網頁),只需要一個 iFrame,連結到服務位置 URL,便可以完成這項工作。使用 Silverlight 和 RSS 搭配 ASP.NET 建置主題榜了解如何使用 Microsoft Silverlight 和 RSS,透過 ASP.NET 建立容易自訂和重新產生的主題榜 (Hero bar)。
Silverlight 入門
本白皮書提供精闢的 Silverlight 概觀,以及如何將它融入新一代 Web 應用程式的開發堆疊中。
2007年5月18日星期五
學習Silverlight 困難重重
前幾天試玩Silverlight 真是玩到頭都大埋。
下載SDK同Blend後,立即打開Visual Web Developer,但竟然找不到Project Template,連Project都冇。
那我試試在C# Express看看都是沒有,當然VB 2005都是沒有....
於是在Blend中找到Project Template,但心想...那Code方面在那裡辦?
原來Silverlight 需要以External方式用VS 2005做Code Editor,那我立即建立一個Silverlight VB Project,但竟然出現Message Box說VB需要VS Orcas執行,,,,天呀.....那我唯有建立C#的....
老實說,我寫VB,如做一些經常做的程序,經常用的Class,寫Code都算是行雲流水。
但一轉至C#就想停一停想一想.....始終同時兩種Language,在腦中都會出又現"打結"情況....
而且C# Syntax是Case-Sensitive , 變數/宣告/Operator又大不同...所以一切都以龜速速度進行....
不過玩玩下...AVG竟然話Blend有Virus....真是頭痕.....

其實我都看到國外有些網友說Silverlight真是很Beta...
Microsoft’s Silverlight Disappoints
http://www.simplifiedchaos.com/2007/05/15/12/
下載SDK同Blend後,立即打開Visual Web Developer,但竟然找不到Project Template,連Project都冇。
那我試試在C# Express看看都是沒有,當然VB 2005都是沒有....
於是在Blend中找到Project Template,但心想...那Code方面在那裡辦?
原來Silverlight 需要以External方式用VS 2005做Code Editor,那我立即建立一個Silverlight VB Project,但竟然出現Message Box說VB需要VS Orcas執行,,,,天呀.....那我唯有建立C#的....
老實說,我寫VB,如做一些經常做的程序,經常用的Class,寫Code都算是行雲流水。
但一轉至C#就想停一停想一想.....始終同時兩種Language,在腦中都會出又現"打結"情況....
而且C# Syntax是Case-Sensitive , 變數/宣告/Operator又大不同...所以一切都以龜速速度進行....
不過玩玩下...AVG竟然話Blend有Virus....真是頭痕.....
其實我都看到國外有些網友說Silverlight真是很Beta...
Microsoft’s Silverlight Disappoints
http://www.simplifiedchaos.com/2007/05/15/12/
2007年4月25日星期三
Microsoft SilverLight - 對抗Adobe Flash和Adobe Apollo的終極武器!

一切都來得太快~先不說Microsoft的就已經有Adobe的 Apollo, CS3系列, Borland CodeGear的Delphi For PHP. 雖然已講過,對Adobe的完全沒興趣,但好像是突然很多新東西出現.
之前叫WPF/E (E for Everywhere) 的代號,還以為要再等多一段時間才發佈和名字會保留為WPF/E ,
但Microsoft把這項技術正式命名為SilverLight ,並會在4月底的MIX大會公佈.
相信是Microsoft 用來對抗Adobe Flash 和Adobe Apollo的終極武器!這個名字真係很有型!
但想一想,SilverLight和Flash 都有"閃光"之意,都可以理解的名字.
官方網頁都已經開張 ,但那個CTP版本都是舊的版本 , 但就有美麗的Wallpaper Download,技術方面就不講了~太新,我自己都不太懂。
但就有很多Sample可以讓你知道什麼是Silverlight 和為什麼我覺得SilverLight是未來Microsoft Framework上的重要技術.
Microsoft SilverLight官方網站 :
http://www.microsoft.com/silverlight
MSDN Silverlight Dev Center
http://msdn2.microsoft.com/zh-cn/asp.net/bb187358.aspx
Youtube上演示Forest Key Silverlight Demo :
http://www.youtube.com/watch?v=Q-dM4fGJ6Rw
一些SilverLight 的 Demo
http://channel9.msdn.com/playground/wpfe/
SilverLight 開發基礎問題1 & 2
http://blog.joycode.com/joy/archive/2007/04/06/100553.aspx
http://blog.joycode.com/joy/archive/2007/04/16/101280.aspx
訂閱:
文章 (Atom)