asp.NET特寫
2024-07-10 12:56:26
供稿:網友
asp.net特寫
創建動態web頁面的新技術已經以clr服務為基礎全部重新改寫。到目前為止,所有.net提供的語言都可用于編寫asp.net頁面,但頁面的擴展名和asp 3.0的不同。具體地說,簡單web頁面以“.aspx”為擴展名,web服務以“.asmx”為擴展名(來源于“assembly”),一種稱為pagelet的asp.net頁面可重用部件以“.aspc”為擴展名。
.net應用能夠流暢地同時運行.asp和.aspx頁面。舊式的asp頁面將由asp.dll直接運行,但它不能利用clr的功能。
現在,.aspx頁面不再解釋執行,而是在第一次調用出現時被編譯成msil代碼,然后再以中間代碼運行,就象j2ee環境下的jsp一樣。一個合乎邏輯的結論是性能會有所提升,microsoft宣稱它可以與visual basic 4升級到編譯版本5時應用性能的提升程度相媲美。
除了理解vb.net引入的所有新概念之外,這些根本性的改變還要求對asp頁面的編寫方式作較大的改動。為了了解從asp遷移到asp.net所要做的工作,下面我們來分析一下主要改動之處。
這些改動分屬三個層次:
api中的改動
頁面結構的改動
vb script和vb.net之間的改動
asp.net只允許每個頁面使用一種語言。在dna中,asp頁面可以同時使用jscript和vb script;但asp.net不再允許這種用法。
在asp.net中,函數必須用html < script >標記包圍,而且不允許把用于生成html代碼的函數分割成多個部分。例如,asp.net不允許出現下面這種代碼:
相反,我們必須代之以如下代碼:
< script language="vb" runat=server >
function sayhello()
response.write ("< b >< i > ")
response.write (" hello ! ")
response.write ("< /i >< /b > ")
end function
< /script >
括起函數調用參數的括號現在是必需的。另外,有的兼容性問題可能源于所有asp.net的數組下標都從0開始,而在asp 3中有的從0開始,有的從1開始。
在vb.net中,默認情況下參數以值(byval)傳遞,而在當前的vb script中,參數默認以引用傳遞(byref)。最后,vb.net將不再支持默認值或關鍵詞set、let。
雖然這些改動都不是重大的、根本性的,但如果要利用clr以及編譯代碼的優勢就必須修改現有的代碼,這些改動會占據開發者大量的時間。microsoft已經宣布,用于代碼遷移的工具會隨同.net平臺一起發布,但從現在起就養成合適的編碼習慣無疑是有益無害的。
至于com組件,asp.net將采用封裝的形式使得原有的com組件仍舊能夠運行,但這些com組件將運行在clr受管理的環境之外,而且受管理以及非受管理環境之間的切換會犧牲一定的性能。因此,很多用戶可能會決定重新把com組件編寫成com + 2.0。
asp.net引入了服務器端控件,它可能是asp.net吸引開發者使用它的一個重要原因。使用這些控件,asp.net頁面能夠利用可視或者非可視控件提供的如下高級服務:treeview(樹形視圖), listbox(列表框), calendar(日歷),等等。所有這些控件都會分析調用它們的客戶程序類型,然后生成合適的表現代碼。一般地,web頁面中的輸入框使用客戶端java script進行輸入合法性驗證,但如果瀏覽器不支持java script或者禁用了java script,用戶輸入驗證就會轉到服務器端。