網路公司裁員、網站關閉、電子報停刊…,經歷電子商務的退潮之後,有人開始質疑電子商務是不是被高估了。也許網際網路不再編織賺大錢的美夢,但經過這幾年的洗禮,網際網路已經成為大眾生活中的一部份,據說台北市的國中生能製作網頁者已經相當普遍,由此可見一斑,當網頁製作變成一般知識之後,想生存於網際網路,夠不夠專業將是決勝因素。
在 .NET Framework底下,筆者很欣慰ASP(Active Server Pages)變得更專業了,簡單地回顧過去的ASP,我們至少可以指出幾個缺點:
本期筆者將為您解說ASP的新面貌(微軟把這個新的ASP稱為ASP.NET)。
從ASP到ASP.NET
ASP會變得很紅,恐怕連微軟也覺得意外,因為ASP一直都附屬於IIS,算不上獨立的產品。IIS版本與ASP版本的對應如下:
IIS 版本 附帶在 IIS 底下的 ASP 版本 IIS 3.0 ASP 1.0 IIS 4.0 ASP 2.0 IIS 5.0 ASP 3.0
有人會用1.0、2.0、3.0來區分ASP的版本,但筆者不以為然,因為從ASP 1.0版到3.0版,微軟並沒有花太多心思來改良ASP,只是因為IIS改版了,所以ASP也跟著做微幅的改版,因此從ASP 1.0版到3.0版,在功能上並沒有顯著的改變,所以不管ASP 1.0、2.0或3.0,筆者都叫它們ASP。
隨著ASP的使用者越來越多,希望ASP更好的聲音也越來越強烈,也許是從善如流,也許是為了推廣 .NET Framework,微軟針對ASP的使用者做了市場調查,找出ASP必須改良的地方,而發展了下一代的ASP,也就是ASP.NET(或者稱為ASP+)。
ASP.NET與ASP的相容性
從ASP升級到ASP.NET,大家最擔心的問題可能是「會不會影響既有ASP網頁的運作」,筆者將ASP作業平台升級到ASP.NET作業平台之後(本文撰寫時所安裝的ASP.NET版本是Beta 1),還沒有發現既有的ASP網頁不能運作或必須修改的。
在實際運作上,當ASP網頁(以 .asp為副檔名)被瀏覽時,IIS會啟動asp.dll來執行ASP網頁,而當ASP.NET網頁(以 .aspx為副檔名)被瀏覽時,IIS則會啟動xspwp.exe來執行ASP.NET網頁,兩者的執行檔案不同,因此不只是安裝ASP.NET之後,不會影響既有ASP網頁的運作,實際上ASP網頁及ASP.NET網頁是並存的。
另一個常問的問題是:需要將現有的ASP網頁轉換成ASP.NET網頁嗎?由於ASP網頁及ASP.NET網頁是並存的,因此運作得很順利的ASP網頁可以暫時不必修改,至於哪些網頁必須採用ASP.NET?以下是筆者的建議:
- 希望效能更高時:當ASP.NET網頁第一次被瀏覽時,Server會先將其編譯成MSIL(Microsoft Intermediate Language),並且儲存下來,而再度被瀏覽時,即不再重新編譯(除非 .aspx檔案的內容有所改變),因此可以提升不少效能。此外,ASP.NET還具備網頁及資料Cache功能(見稍後介紹),亦可提昇網頁的回應速度。
- 需要經常維護或修改的網頁:由於ASP.NET採用VB7為程式語言,具備完整的物件導向功能,有助於網頁的維護。
- 未來新開發的網頁:既然ASP.NET功能優於ASP,未來開發的網頁當然要採用ASP.NET。
程式語言的改變
從ASP到ASP.NET,其中的改變相當多,不過與ASP網頁製作者最有切身關係的應該是程式語言的改變,ASP只接受VB Script及Java Script兩種程式語言,但是對ASP.NET來說,舉凡可以編譯成MSIL的程式語言,都是ASP.NET可以接受的程式語言。
筆者在Run!PC前3期的「.NET Framework -- 微軟新一代的軟體開發環境」一文中介紹過MSIL,它是一種中介語言,介於高階程式語言(例如VB)及機器碼之間的語言,在ASP.NET底下,我們撰寫的程式語言也會先編譯成MSIL,然後MSIL再被編譯成機器碼加以執行,過程如圖-1,ASP.NET也是採用此一模式,除了會輸出資料到瀏覽器之外,ASP.NET網頁與其他的程式語言的工作模式都是相同的。
圖-1 ASP.NET 網頁編譯執行的過程
執行效能的質疑
第一次接觸ASP.NET網頁的人可能會有這樣的疑問:「執行效能好像不如ASP網頁?」,關於這個問題,讓筆者從運作模式來談起,首先請看圖-2,可看出ASP.NET網頁比ASP網頁要多一次的編譯工作。
圖-2 ASP與ASP.NET運作模式的比較
儘管ASP.NET比ASP網頁多一次的編譯工作,但這並不表示ASP.NET的執行效能一定比較差,參考圖-2,ASP.NET階段二的編譯執行速度優於ASP,但ASP.NET階段一的編譯速度卻慢於ASP,簡單地說,ASP.NET階段一及階段二合起來的時間 >ASP執行的時間。
如果從以上的比較來看,ASP.NET確實比ASP慢,但是請再把網頁的瀏覽分成以下兩種情況:(1) 網頁第一次被瀏覽 (2) 網頁第二次被瀏覽,如圖-3,ASP.NET 網頁第一次被瀏覽時,會經過兩階段的編譯,所以速度較慢,但第一次被瀏覽之後,MSIL會被儲存下來,所以當同一網頁第二次被瀏覽時,只須花費從MSIL編譯成機器碼然後執行的時間,結果比ASP網頁來的快,整體的比較如下:(>表示較快)
ASP.NET 網頁第二次被瀏覽 > ASP網頁> ASP.NET 網頁第一次被瀏覽
圖-3 第一次瀏覽及第二次瀏覽的差異
.NET Framework 物件類別的使用
微軟宣稱 .NET Framework有許多好處,但筆者最看重的是 .NET Framework所提供的物件類別,.NET Framework所提供的物件類別多達數百種,包含資料結構、資料庫、繪圖、網路、XML、執行緒、目錄服務、安全性…等,應有盡有。
以往ASP網頁雖然可以使用ActiveX物件,但其實只限定於ActiveX物件中的ActiveX DLL,不像一般應用程式(例如VB程式、C++程式)可以同時使用ActiveX DLL、ActiveX EXE及ActiveX Component等多種ActiveX物件,不過這個現象在 .NET Framework底下已經有所改善,在 .NET Framework所提供的物件類別中,除了少數與螢幕輸出有關的物件類別(例如WinForm及Console)是ASP.NET網頁所不可使用之外,其他物件類別則都是ASP.NET網頁可以使用的。
註:WinForm包含windows(視窗)相關的物件類別、Console則是DOS文字輸出模式的物件類別,對ASP.NET來說,其輸出之標的為瀏覽器,所以不可以輸出資料到Windows視窗及DOS文字視窗,ASP.NET專用的輸出物件類別稱為WebForm,則是Windows應用程式不可使用的。
WebForm與Server控制元件
在ASP的網頁製作中,如果我們想設計一個輸入表單(Form),大概只能使用HTML輸入欄位(或稱為控制元件),ASP.NET在這方面做了很大的加強,在其WebForm裡面,我們可以佈置各種控制元件(統稱Server控制元件),這些控制元件包含:
Server控制元件 功能 CheckBox、CheckBoxList 加強HTML核取方塊的功能 RadioButton、 RadioButtonList 加強HTML選擇鈕的功能 TextBox 加強HTML文字輸入方塊的功能 ListBox 、DropDownList 加強HTML下拉式選單的功能 Table、TableRow、TableCell 加強HTML表格的功能 Label 加強HTML文字的功能 Image、 ImageButton 加強HTML圖片的功能 LinkButton、 HyperLink 加強HTML連結的功能 Panel 可將控制元件分成多個區塊 AdRotator 廣告迴旋板 Calendar 日期的顯示及選擇 資料驗證類控制元件 可在不必撰寫程式的情況,幫我們驗證使用者所輸入的資料是否正確 DataGrid、DataList、Repeater 資料庫的顯示
除了提供更豐富的控制元件之外,WebForm的另一個優點是可以記錄網頁的狀態,以往在ASP網頁中,若要記錄Client端的狀態,必須使用Session或Cookie物件,但不管是Session或Cookie物件,都必須在上網者開啟瀏覽器的Cookie功能之下方可運作,ASP.NET改善了此一現象,只要我們將Server控制元件佈置在WebForm之中,WebForm就會記錄所有Server控制元件的狀態(例如控制元件中所輸入的文字)。
記錄控制元件狀態的能力,以須分成多次輸入的表單最為方便,以圖-4的輸入表單為例,若使用ASP的設計,在步驟一及步驟二所輸入的資料必須記錄在Session或Cookie物件中,供步驟三讀取,但是對ASP.NET網頁,只要將步驟一、步驟二、步驟三的Server控制元件佈置在同一個WebForm之中,則不管網頁執行到哪一個步驟,都可以讀取上網者在Server控制元件中所輸入的資料。
圖-4 分成多次輸入的表單
文章来源于领测软件测试网 https://www.ltesting.net/