自從.NET 3.0加入了WF、WCF、WPF,ASP.NET推出了ASP.NET AJAX等技術之後,就不斷的有同學問我:"老師,請問一下,我現在到底該學甚麼? ","老師,請問一下,我可以將這些技術應用在哪些地方?" 等這一類的問題,我想你應該可以從這一篇文章中找到答案。
ASP.NET技術推出之後,挾其內建的容易使用、而且可以輕易整合伺服器端資源的伺服器控制項以及Page物件模型,對於網際網路應用程式的發展,不啻跨入了一個新的世代。雖然直譯加編譯式的動態伺服器網頁開發技術早在JSP當中就已經實現了,但是ASP.NET透過伺服器控制項簡化動態網頁開發的架構,間接也帶動了JSP後來衍生出JSF的技術架構(或許Java社群終究還是會實作出來,who knows ?),促使網際網路應用程式開發技術邁入一個新紀元。
但是不管網際網路開發技術如何發展,動態網頁的基礎架構仍然是分為用戶端瀏覽器與伺服器端兩個執行環境,因此不管動態伺服器網頁開發技術(ASP、ASP.NET、JSP、PHP....等)如何演進,都必須要搭配用戶端瀏覽器中執行的程式,才能完成完整的功能。當然,在用戶端瀏覽器中執行程式的首選,就是幾乎所有瀏覽器都有支援的JavaScript。然而對於微軟而言,我想這會是他們不願意樂見的,因為畢竟JavaScript的發展不是他們所能掌控的,因此微軟將以VB語法為基礎的VBScript執行引擎與ActiveX技術嵌入IE中,試著吸引眾多VB的開發人員改用VBScript開發用戶端瀏覽器中執行的程式。
但是畢竟網際網路是一個開放式的平台,不是只有微軟平台的開發人員,加上微軟似乎高估了其他開發人員對於VBScript的支持度,因此JavaScript慢慢的成為用戶端瀏覽器中開發程式的標準,而VBScript則回歸到微軟平台中系統管理人員建立管理指令集的好用工具。這期間,微軟仍不放棄掌控用戶端開發執行環境的念頭,因此和昇陽為了沒有按照標準規格建立的JVM(Java Virtual Machine)而打了場官司 -- 依舊是敗下陣來。
但你別以為微軟因此就放棄了掌控用戶端開發執行環境的想法,事實上,在IE當中雖然你是宣告"text/javascript",不過在IE當中還是採用微軟實作的JScript引擎去執行的,微軟的文件中說明著這一點:
"Netscape developed the JavaScript programming language. JScript is the Microsoft implementation of ECMAScript, as defined by the specification of Ecma International. Both JavaScript and JScript are ECMAScript-compliant languages."
*** 對於微軟Scripting技術有興趣的話,可以參考Microsoft Windows Script Technologies。 |
就像在用戶端動態網頁(DHTML)的技術當中,IE所提供的DOM(Document Object Model)也與W3C所規範的略有不同,因此DHTML的開發人員往往需要為了讓程式可以在不同的瀏覽器中呈現效果,而需要撰寫不同版本的Script。而當年開發ASP(Active Server Pages)最麻煩的地方,就是要在動態網頁內容中混用JavaScript與伺服器端的程式,往往讓許多剛入門的開發人員傷頭腦筋......
而ASP.NET的伺服器控制項技術的出現,對於被ASP像義大利麵條似的開發方式搞得昏頭轉向的開發人員而言,無疑的大大減輕了開發動態網頁的步驟:除了Page會自動維護狀態,並根據伺服器端程式處理結果自動轉譯(render)HTML內容之外,許多的伺服器控制項也會根據用戶端瀏覽器自動載入網頁執行所需要的JavaScript。然而,所有的問題都解決了嗎?
事實並非如此,雖然ASP.NET的精神,是希望開發人員只需要會使用伺服器端的程式搭配伺服器控制項,就可以完成開發動態網頁的動作。但是畢竟ASP.NET是以伺服器端為主的開發技術,若是用戶端沒有觸發PostBack動作的話,就無法回伺服器端完成動作;而若是每個動作都PostBack,對於使用者的操作經驗(User Experience)與執行效能也都會有影響。因此在ASP.NET 3.5當中,就整合了ASP.NET AJAX的技術到其中,將ASP.NET伺服器控制項的功能發揮到極致 -- 而開發人員只要學會將伺服器控制項放到UpdatePanel控制項當中,再加上一些程式與設定,就可以完成以前ASP需要寫一堆程式才可以完成的結果!!
然而,ASP.NET技術也不是沒有限制的:
首先,ASP.NET依賴伺服器端控制項與Page物件維護其頁面中的狀態,因此造成維護使用者狀態及切換頁面的邏輯不易獨立設計,造成ASP.NET不易實作MVC設計模型。
再者,ASP.NET 3.5雖然整合了ASP.NET AJAX技術,但是因為並非每一個用戶端的事件(OnMouseMove、OnBlur....等等) 伺服器控制項都有支援,因此仍然有許多的動態效果是ASP.NET無法直接支援的(先天的限制,非戰之罪....)。雖然我們可以透過ASP.NET的ClientScriptManager動態載入必要的自訂JavaScript,滿足用戶端所需要的動態效果;但若是可以讓網際網路開發人員在不需要透過任何其他的技術(Java,或是任何Java開頭的......) 就可以完成用戶端動態效果的開發,那世界豈不是更美好!!!
(未完待續.............)
沒有留言:
張貼留言