close

ASP.Net 及 ASP 差別

ASP.Net 及 ASP

曾有許多ASP學習者掙扎過到底是否要隨著微軟跟進ASP.Net‧ 雖然ASP.Net與ASP聽起來類似,不過變化卻不少! 因此讓大家實在猶豫不決... 到底ASP.Net 和ASP差在哪裡? ASP.Net 到底主要多了哪些性能? 我需要跟進嗎?

其實不少人都對ASP.Net的出現產生誤會! 大部份人都曾有這樣的錯誤觀念『ASP.Net 是拿來取代ASP的』‧ 並不如此... 雖然ASP.Net是ASP新一代的語言,但卻不是ASP的下一升級版本‧ 如果世界上有ASP的下一版本,那應該會被叫ASP 4.0... 而目前,ASP 還是保持到3.0,並沒有因為.Net的出現而改變‧

註: ASP+ 是ASP.Net早期的在開發時的稱呼

ASP.Net對ASP的特色?

語言支援:

您是否記得在您未接觸過任何Script語言時,要學ASP還必須要學VBScript才可以嗎? (VBScript 為ASP預設語言) 雖然ASP也可以改成JScript當預設,或Perl,不過還是以VBScript為主流‧ 在學習、閱讀文章時,大部份人也都只用VBScript! 但ASP.Net 卻支援更多的語言,包括C#, C++, JScript, VB...等等‧ 讓大家有更多語言上的選擇! 但也許您會想,如果我用VBS呢? 要用VBS的話,也要用VB式的寫法喔! 一個學VBScript的和學VB的兩人比較,學VB的那位在學ASP.Net會比較輕鬆! 而只嘗試過VBS的人則會在寫ASP.Net時因寫不習慣而掙扎!

註:ASP.Net還是用ADO, 不過卻是新的... ADO.Net

新增 HTML, Web Controls:

ASP.Net 擁有一系列的Web Controls‧ 這些Web Controls就像您在一般HTML上用的元件一樣,甚至於還有新的‧ 例如表單欄位、按鈕、資料庫清單、欄位驗證Control...等等‧ 在使用Web Controls上,幾乎所有的HTML elements可定時成ASP.Net的Web controls... 只要在attribute再加上個 runat="server" 即可!

在用Web Control時,您會發現自己的網頁在跑時莫名其妙會增加一大堆JScript程式碼... 這是因為許多Web Controls如果需要和伺服器端溝通的話,都會用到Post Method! 而用到JScript時,都會是您的Web Control必須有一個即時的效應‧ 例如驗證欄位的Web Control! (Required Field Validator)

Web controls是一個很方便的功能,只要簡單幾個指令下去您就可以完成大量的工作‧ 但相對的,您不在只是純粹學Server端的ASP.Net,連Web Control綜合Client 和Server的也必須要學! (學的東西變更多了)

安全:

ASP.Net 新增的安全是ASP沒有的... 你也可以說,ASP其實自己也沒有什麼安全措施‧ 在ASP.Net,它更像一個Application! .Net Framework不講,常見的例如: 能自由決定(設定)伺服器權限上的設定... 不管是限群組,還是特定的帳號‧ 同時,如果您的Input裡包含有HTML或Server-Side原始碼時,預設的系統安全還會禁止您處理這方面的內容‧ 另外,也多了編碼(Encryption)的能力...  這些設定全是由您(編寫者)決定/設定,完全不需要再經過其他人!

編譯:

在您完成一個ASP.Net網頁且準備上路時,每第一次瀏覽您都會發現網頁比平常還慢! 沒錯,這是因為在aspx網頁第一次讀時,都會必須要經過編譯! 但第二次後,你的網頁就會很快了!! 有時您會覺得換頁就跟按"上一頁"、"下一頁" 感覺一樣‧ (雖然瀏覽速度也跟自己的網路連線也有關係)

注意ASP.Net 並不是在您每一次進入網頁都會再編譯,而是第一次要求讀取"沒碰過"的程式碼時才會需要compile‧ 也就是說,如果就算第一次你已經編譯過了,改了程式碼內容的話(不管是Serve端的還是Client端的部份),你都會在第一次讀網頁時再經過編譯動作一次!

設定:

ASP.Net 多了一項ASP.Net網頁設定檔,檔名稱為web.config‧ 在ASP,要設定一個ASP Application的話,您通常都會動到系統設定(或甚至於需要重新開機)‧ 但ASP.Net的web.config,您可以在伺服器跑的時候寫入設定! 您還可以增加key value,把重要性的字串寫在裡面... 例如,將您的資料庫密碼放在web.config,就算是一種安全的做法 :-)

註: 之前所提到的的安全設定,也大部份是在web.config完成的

除錯:

這一項是我自己覺得ASP.Net很貼心的地方 :-) 它會在您經過編譯時檢查您的程式碼,出錯時的出錯介面非常詳細! (不像ASP很簡陋) ASP.Net 的除錯可以很正確的指出到底是哪一行程式碼、哪一句錯誤(會幫你用紅字寫起來)... 甚至於有時候會給你一些簡單的處理參考,或直接給你應該要怎麼設...等等‧

除錯介面是可以關的,您也可以自行做一個custom的錯誤畫面來防止瀏覽者看到詳細錯誤內容!

另外說到除錯,ASP.Net 也可以在發生一個特定錯誤下再繼續執行程式! 就跟JScript一樣,可以用try...catch...end try來繼續讓程式運作! 雖然ASP有On Error Resume Next,不過try...catch...end 對處理特定錯誤是比較方便的!

寫法:

寫法都是讓大家最在意的... 如果你是用C#, C++,那比根本不需要看這一段! 為什麼? 因為ASP不能用C++寫阿... (或c#) 也唯一只有VB和VBS! ASP.Net 其實寫法上變化很大(對只用VBS的人而言),因為他更像VB的寫法(也不完全像! ) 不過語意上卻類似! 另外ASP.Net 大部份的程式碼您必須在<Script Runat="server"></Script>之間完成,而不是<%..%> 以一個最常看到的例子,宣告網頁函式... 在ASP,你可以這樣寫:

<%
Sub greet()
Response.Write "Hello, world"
End Sub
%>

但在ASP.Net,這種寫法是錯誤的... 因為它不允許您這樣做,必須要這樣:

<Script Language="VB" Runat="Server">
Sub greet()
Response.Write("Hello, world")
End Sub
</Script>

* 以上<Script></script>之間的ASP.Net程式碼都是一定需要的,包括response.write的()!

還有,由於ASP.Net要使用任何一個功能都是從Import來的NameSpace的Class... 所以它又多了以Class而來的新寫法! 例如你要寫出並轉換一個數字變成字串從Variable:

寫法一:

Dim luck_number As Integer = 911
Response.Write(CStr(luck_number))

寫法二(ASP.Net 才有的寫法):

Dim luck_number As Integer = 911
Response.Write(luck_number.ToString())

另外,ASP要使用一個元件... 例如要建立一個給mdb資料庫的ADO Connection,都會這樣寫:

<%
Dim conn
Set conn = Server.CreateObject("ADODB.CONNECTION")
%>

但在ASP.Net,因為整個.Net,您必須要先Import相關的Namespace‧然後再用它的Class:
(主要有三種寫法可參考)

寫法一:

<Script Language="VB" Runat="server">
Sub Page_Load()
Dim conn As New System.Data.OLEDB.OLEDBConnection
End Sub
</Script>

寫法二:

<%@ Import NameSpace="System.Data.OLEDB"%>
<Script Language="VB" Runat="server">
Sub Page_Load()
Dim conn As New OLEDBConnection
End Sub
</Script>

寫法三:

<%@ Import NameSpace="System.Data.OLEDB"%>
<Script Language="VB" Runat="server">
Sub Page_Load()
Dim conn AS OLEDBConnection = New OLEDBConnection()
End Sub
</Script>

其實意思都完全一樣,不過寫法就是那麼多...


那我就暫時先講到這裡,如果有不滿意的地方我就再補充吧!

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 hsiung03 的頭像
    hsiung03

    hsiung.博格 ERP軟體

    hsiung03 發表在 痞客邦 留言(0) 人氣()