2011年2月17日 星期四

3-5 比較ASP與ASP.NET

        如果您曾經是ASP的程式設計師,您會發現在ASP.NET底下幾個地方有著顯著的不同:

3-5-1  利用Web Form來架構程式

        首先,你會發現VB.NET(ASP.NET)來撰寫WEB應用程式比過去用ASP開發來的迅速很多,當然最主要的原因之一就是Web Form的觀念。把一個網頁當作一個Windows的表單(Form)來看待,表單上的項目(按鈕、文字方塊、選取盒…)物件就像是表單上的物件,這樣便於架構一個事件驅動(Event-Driven)的應用程式,每一個表單上的物件都可以有相對應的程式,更便利於除錯與開發,更不要說其他Web Form上現成可用的物件,這些對以前的ASP程式設計師來說,不知道會不會是一個很大的打擊,而且由於透過WebForm和架構在WebForm上的控制項,使得我們撰寫程式時,幾乎再也不使用response.write指令,不僅僅是為了方便,也是為了避免破壞畫面的美觀(是的,如果您使用response.write指令,將會大幅度的破壞WebForm上面控制項的顯示)

3-5-2  少了許多表單(Form)傳值與接值動作及前端(Script)程式碼

        因為採取Web Form的觀念,你會發現程式中越來越少採用Form – Submit以及傳值或接值得動作,以前我們在ASP中,常常需要透過Request(“xxx”)Request.form(“xxx”)來傳送、接收我們的參數,而因為.NETWeb Form,讓你更方便的在一個物件的事件裡面來作做處理或運算動作,因而數值的傳遞相對的變少,而Session(“xxx”)的使用相對增加(不過筆者認為Session變數的增加並非良好的習慣,這將大幅削減程式物件化和結構化的特性)
        另外因為採取Event-Driven觀念,讓程式設計更為完善,許多前端的程式碼都可以由後端取代,不需要將許多程式分成前端後端兩塊,造成維護的困難。


        以前一個很困擾ASP程式設計師的大問題就是,程式碼和網頁是個連體嬰,怎麼分也分不開。有時候專案大一點,程式設計師和美工人員需要合作,但是一不小心,美工人員改了程式設計師的畫面,程式設計師改了美工人員的圖形,弄得大家心煩意亂。VB.NET大幅減少這樣的問題發生,將程式碼和網頁大致上區分成xxx.aspxxxx.aspx.vb兩個檔案,存放ASP.NET網頁和VB.NET程式碼,嚴格說起來,其實在.NET中實在不太能分ASP.NET或是VB.NET,因為除非你只開發Windows-Base程式,否則VB.NET開發的Web應用程式,網頁部分就是ASP.NET,而ASP.NET則可以選擇要用VB(xxx.aspx.vb)或是C#(xxx.aspx.cs)來當作Code BehideWeb Form程式碼。
        另外,順帶一提的,請不用迷信C++C#在執行效率上會比VB來的好的狀況,這種現象在Visual Basic.NET上的Web應用程式中是完全不存在的,不管是利用VB作為Code Behide的程式碼或是用C#,程式執行效率上是一樣的,唯一不同的可能僅僅是寫程式的習慣而已。


        在過去的ASP中,就著過去Visual Basic 6.0的陋習,基本上變數是不用宣告的。更由於ASPVisual Basic Script的一個支派,所以,不僅不用宣告,連變數的型態都免了,因此,在ASP中變數是沒有型態、不用預先宣告的。同樣的Function或是Sub的回傳值一律也都沒有型態,這種狀況,到了ASP.NET可是完全改觀了,在ASP.NET中,變數不僅有型態、需要宣告,對於型別間的轉換也變得較為嚴謹,這並非是說不同型別的變數變的無法轉換(或是像C一樣很苛刻),而是,針對物件導向需要的嚴謹性,ASP.NET算是有提供了,但依舊保留了過去在Visual Basic 6.0中對變數使用之間的彈性。


        以前ASP的不結構化和幾乎完全不支援物件導向的『特性』,讓Java陣營的人對ASP不削一顧,就連稍稍具有結構化程式設計概念的程式設計師,都會對ASP搖頭。

        主要原因當然還是因為ASP基本上是一個Script,大概本質上要支援物件導向就很難了,又是直譯式的語言(電腦是看一行執行一行的),再加上居然和網頁結合在一起,網頁中(HTML)有程式,程式中有網頁。更別說結構化了,如果你寫久了結構化程式或是物件導向程式,絕對會一邊寫一邊罵,到底誰弄出這種怪物的。(只是沒想到這怪物是佔有市場上超過一半的Web Solution開發工具)

        如今,你可以大大的感謝微軟的德政,因為ASP.NET完全支援物件導向,再加上Code Behide的特性,讓程式碼和網頁分的一乾二靜,使得ASP.NET可以不被網頁限制的利用物件導向特性,舉凡物件的繼承、動態產生網頁上的元件等,您會看到物件導向的支援讓ASP.NET開發Web應用程式簡直如虎添翼。

 

        同樣的,以前我們撰寫ASP,有個很大的困擾,就是當檔案越來越多,程式越來越大的時候,不像VB一樣可以比較專案化或是結構化的來管理這些檔案,更別說當專案中還有圖檔、影片、或是其他網際網路上的媒體的時候,那種亂的天翻地覆的窘境,現在VB.NET讓您用比較具有結構的方式管理您在網站上的檔案,讓您可以稍稍過點像樣的程式設計師的生活。


最最最令人興奮的,莫過於用VB.NET來開發Web應用程式,具有類似Visual InterDev可以單步執行和除錯的特性,使用和VB一樣的介面來對程式碼監控,可以設定中斷點,可以在中斷程式的同時檢查變數的值。

呵呵,光這一點就是過去ASP程式設計作夢也想不到的優良改進,讓網際網路應用程式的開發過程至少減少了三分之一的時間。三分之一絕對不誇張,你會發現過去寫ASP的時候,絕大部分的時間都在除錯,尤其是一些怎麼看都沒有錯的程式碼,但邏輯上卻出了問題。過去ASP沒有優良的除錯工具時,想要找出一個邏輯上的問題,你必須自己用Response.writeResponse.end設定『個人中斷點』(有用ASP寫過大專案的人絕對知道我在說什麼),為了除錯,不知道白了多少頭髮,如今,多出來的時間多到讓你不知道想要拿來幹麼。

沒有留言:

張貼留言