RIA 的實踐 - 淺談 Silverlight 2.0

一種應用如果想要發展得起來,它一定要具備兩個要素,提供廣大的開發人員熟悉且容易在上面開發應用程式的平台與開發工具,另外一個重點在於它最終的產品必須好用到令使用者願意接受並且廣泛的使用。

以網頁為操作介面的Web應用程式,由於先天架構的缺陷,導致發展的瓶頸,因此無論商業公司或是標準組織,不斷的提出各種技術,試圖讓網頁可以如同視窗一般,毫無陷制發展各種高度互動的應用程式。

ASP.NET、JavaScript、AJAX、Flash,這些讓人眼花瞭亂的技術名辭,在某些方面確實演進了HTML網頁的功能,但是它們都存在不同的問題,甚至必須借助不同領域的專業人員(設計/開發),運用它們熟悉的技術,來完成Web應用程式的開發工作。也因此阻礙了傳統視窗應用程式轉移至Web發展的可行性。

我們都知道,Web 應用程式牽涉兩種截然不同領域的專業人員,網頁視覺化元素構成的美術與視覺效果設計人員,以及後端邏輯程式的開發工程師,由於沒有一種技術可以讓這兩種技術人員能夠跨越他們的領域,因此你可以看到Flash網頁雖然精彩,幾乎很少人想要拿它與後端開發人員所撰寫的程式碼作溝通,不是作不到,而是很難。

Flash相關技術當然可以作到這點,但是這些技術很少開發人員瞭解,遑論拿它們來開發應用程式,ASP.NET儘管已經相當強悍,但它完全作不到如同Flash般好用的網頁,這些技術都欠缺了本文一開始提及的兩個要素中,其中的一種,至於Ajax,只是讓網頁的操作流暢一點,如此而已。

微軟推出 Sivlerlight 不是要與 Falsh 競爭,這一句話,在我去年出版 Silverlight 圖書的時候,便已強調過了,以微軟廣大的開發人員基礎,提供一個好到足以讓這些開發人員,快速且輕易的發展如 Flash 般華麗且功能強悍的網頁,同時完美的與 ASP.NET 作結合,才是它的目標,所以,沒有競爭的問題。

到目前為止,如果你去查詢 Sivlerlight 相關書籍,會發現這些書都是開發背景的技術人員所寫,當然,我也不例外,這說明了一件事, Sivlerlight 的方向雖然與 Flash 相同,發展的趨勢卻完全不一樣,它不會只吸引網頁設計師,雖然設計 Flash 網頁的功能它也不缺,更進一步的,它提供了開發人員所需的RIA發展平台,而且這個平台容易使用,開發人員不需要再學新的語言就可以在上面發展應用程式。

Silverlight 1.0 建立了這個技術的基礎, Silverlight 2.0 在這個基礎上,進行了大幅度的擴充,不過,沒有基礎,遑論發展,如果完全不碰 Silverlight 1.0 , Silverlight 2.0 會是個很大的挑戰,因此,不要等了,該買的書還是要買,快去買一本「Silverlight:ASP.NET與AJAX開發實務」,為即將來臨的RIA盛宴作好準備吧。XD

現在,來談談我自已的事,Sivlerlight 2.0 Beta 釋出了,今年,如果沒有意外,正式版應該會在地球上出現,我當然不會缺席,不過,如果要像 Sivlerlight 1.0 ,同步發表圖書,可能不太容易,六、七月,我有密集的課程要上,幾乎不能寫書,而在這之前,還有一堆書要趕,今年,真的很累 … T_T

7 則留言:

匿名 提到...

呂老師:
您好,請問:
範例079 CreateSLC
範例084 SLMediaab
的程式碼好像有些問題,RUN不出來.
錯誤訊息:theXamlElement是null或不是一個物件

煩請解答~謝謝

康廷數位 提到...

theXamlElement是null或不是一個物件, 表示它在建立這個物件的時候,沒有成功,我查了一下程式碼,請確認其中的Rectangle這個XAML物件,是否其x:Name設為"rct"…

至於084,跟你描述的問題似乎不是同一個,能否再請描述清楚一點呢,謝謝。

19 提到...

呂老師:
哇~沒想到很快就收到回覆A..
不好意思問題說的沒有很清楚
範例是從悅知網站下載,
沒有修改就執行的

說明一下碰到的問題:

1.079範例:
確定Rectangle這個物件 x:Name="rct"
我想問題出在Rect.js裡的slc_Load()
第一行的var theControl = document.getElementById("AgControl1");
請問這個AgControl1是指什麼?好像沒看到id是取這個名稱的物件

另外,
範例中CreateSilverlight.js,
onLoad:是設null
而非書上的onLoad:slc_Load()→已修改為onLoad:slc_Load

以及Default.aspx出現2個相同的引用
<.. src="js/Silverlight.js">
已將其中一個修改為
<.. src="js/Rect.js">


2.084範例:
Default.aspx.cs裡SetJavaScript()的
jScript += "var theControl = document.getElementById(\"mySilverlightPlugin\");\n";
我在想它是否取不到silverlight物件而導至theXamlElement取到null而發生錯誤?

麻煩解惑囉~謝謝!!

康廷數位 提到...

Hi,19 你好

079的範例中,282頁那裏AgControl1錯了,必須修正為mySilverlightPlugin。

onLoad是設為null,否則會出現錯誤,這一部份我在設計範例的時候有調整了,網站的版本可能沒有跟著修正。

Default.aspx出現2個相同的引用,這個同樣在282頁下方,這一頁包含上述的內容有這兩個錯誤,真的很抱歉造成困擾。

084這個範例,請看298頁的最下方,theXamlElement代表參照畫面上命名為MediaControl的MediaElement物件,這個物件宣告於299頁的第一行程式碼,請再核對一下你手中的程式碼,是不是這兩個名稱對不起來,否則的話應該不會有這樣的問題。

我目前不是上課就是寫書,回應比較快的話,表示我正在寫書,因此會即刻回,如果你發現我整天都沒有回,就是我跑出去講課啦,就請再耐心等等,一般來說,24小時內,都會儘量回覆完畢,謝謝。

無論書的內容或是範例有任何錯誤的地方,造成不便,浪費了你的時間,請多多包涵,也祝你覺習愉快,加油。

Silverlight今年會有2.0了,功能會更上層樓,它是.NET平台網頁介面的未來,你現在用心的學習,已經比別人踏出領先的一步了,相信將來會站在這波技術的浪頭上,成為先驅的。

Good Luck ^^

19 提到...

呂老師:

謝謝您百忙之中仍抽空解答!

079CreateSLC:
之前有試過修正如老師說的mySilverlightPlugin,
但出現的錯誤為「此處需要物件」(行:6 字元:6 URL:http://localhost:3926/CreateSLC/Default.aspx)

084SLMediab:
已檢查MediaElement x:Name="MediaControl" Width="300" Height="256" 及
jScript += "var theXamlElement = theControl.content.findName(\"MediaControl\");\n";
兩邊的MediaElement名稱一致

可否麻煩老師從悅知網站下載這兩個範例(都是第十章的)測試一下問題的原因呢?
拜託了~
很想知道問題出在那裡呢~^^

康廷數位 提到...

Hi,19 你好:

你要不要給我你的mail,我將我現在手上check過的這兩個範例寄給你,你再確認一下。

Good Luck ^^

19 提到...

呂老師:
您好,
我的email:
eyesonme@hotmail.com
麻煩您了,謝謝~