asp.net是微軟的.net框架的重要組成部分,它使用vb.net、c#和jscript.net程序設(shè)計語言來實現(xiàn)動態(tài)網(wǎng)頁編程,這使得它的編程非常靈活和高效。同時asp.net是基于組件技術(shù)和面向?qū)ο蟮拈_發(fā)系統(tǒng),程序員可以使用系統(tǒng)的豐富組件,如文件上傳、e-mail發(fā)送、文件操作、廣告組件等。不但如此,程序員還可以開發(fā)自己的組件,擴(kuò)展asp.net的功能。
asp.net直接支持組件和code-behind技術(shù),可以更好地實現(xiàn)程序代碼和html代碼的分離。asp.net采用了新的叫做ado.net的數(shù)據(jù)庫訪問技術(shù),可以大大地提高數(shù)據(jù)訪問的效率,也可以很容易地開發(fā)數(shù)據(jù)庫應(yīng)用系統(tǒng)。
一、asp.net的運(yùn)行、開發(fā)環(huán)境
1.asp.net的運(yùn)行環(huán)境
(1)硬件要求
cpu: intel pentium ii 300 mhz (最好intel pentium iii 600 mhz)
內(nèi)存: 96 mb (最好128 mb)
磁盤空間: 250 mb(完全安裝) 155 mb(快速安裝)
顯示: 800×600, 256色
cd-rom:倍速光驅(qū)
(2)軟件要求
windows 2000 professional、windows 2000 server、windows 2000 advanced server、ie 5.5、ngws。
asp.net目前能支持c#、vb、jscrip等三種語言。
二、asp.net的安裝
1.安裝asp.net
可以從這里下載asp.net的安裝程序:http://download.microsoft.com/download/platformsdk/trial/1812.10full/nt5/en-us/setup.exe。asp.net的安裝過程很簡單,只需按照簡單提示安裝即可完成。但是,如果你的計算機(jī)安裝了office 2000,建議安裝asp.net之前先備份\microsoft office\office\mso9.dll文件,因為安裝完asp.net后,office會提示你注冊,否則的話office 2000會出現(xiàn)使用50次的限制。此時將備份的mso9.dll文件覆蓋掉原來的文件即可。
2.ngws
asp.net實際上是一個嶄新的運(yùn)行結(jié)構(gòu)的一部分,這個結(jié)構(gòu)提供對所有windows應(yīng)用程序的支持。這個結(jié)構(gòu)是microsoft's next generation web services (ngws)關(guān)鍵部分。當(dāng)你安裝了這個結(jié)構(gòu),你也就同時獲得了asp.net。這個結(jié)構(gòu)同樣支持所有其他服務(wù)器程序技術(shù)。
ngws 結(jié)構(gòu)通過對可升級分布式應(yīng)用添加(新的和增強(qiáng)的服務(wù))來擴(kuò)展com的結(jié)構(gòu),此種結(jié)構(gòu)常用做編寫可重復(fù)調(diào)用的可共同使用的軟件組件,這些新的和增強(qiáng)的服務(wù)有:
一套統(tǒng)一的豐富的程序庫; 一個支持多語言的運(yùn)行引擎;簡單地應(yīng)用建立、調(diào)試以及維護(hù);對分布式應(yīng)用加強(qiáng)了可升級性;保護(hù)現(xiàn)已存在的軟件和投資。
三、asp.net概念解析
1.web form
表單,英文單詞是form。在.net架構(gòu)里,form是一個經(jīng)常使用到的詞匯。web form代表了一個一個的web頁面。總的看來,form就像是一個容納各種控件的容器,各種控件都必須直接或者間接地與它發(fā)生依存關(guān)系。“表單”這個詞,在web程序員看來,總是和html里面的“form”相混淆。“web表單”似乎翻譯成“web頁面”更加妥當(dāng)一些。
大家還記得vb里面的form實際上就是一個對象吧,它可以有自己的屬性、方法、事件等等。web表單,或者說web頁面,實際上是一個“對象” (object)。.net架構(gòu)里面一個比較重要的概念就是“對象”,所有的控件都是對象,甚至數(shù)據(jù)類型都成了對象;每種數(shù)據(jù)類型都有自己特有的屬性和方法。我們在后面的編程中將體會到。
web form的后綴名是aspx。當(dāng)一個瀏覽器第一次請求一個aspx文件時,web form頁面將被clr(common language runtime)編譯器編譯。此后,當(dāng)再有用戶訪問此頁面時,由于aspx頁面已經(jīng)被編譯過,所以,clr會直接執(zhí)行編譯過的代碼,這和asp的情況完全不同。asp只支持vbscript和javascript這樣的解釋性的腳本語言。所以asp頁面是解釋執(zhí)行的。當(dāng)用戶發(fā)出請求后,無論是第一次,還是第一千次,asp的頁面都將被動態(tài)解釋執(zhí)行。而asp.net支持可編譯的語言,包括vb.net、c#、jscript.net等。所以,asp.net是一次編譯多次執(zhí)行。
為了簡化程序員的工作,aspx頁面不需要手工編譯,而是在頁面被調(diào)用的時候,由clr自行決定是否編譯。一般來說,下面兩種情況下,aspx會被重新編譯:
(1)aspx頁面第一次被瀏覽器請求;
(2)aspx被改寫。
由于aspx頁面可以被編譯,所以aspx頁面具有組件一樣的性能。這就使得aspx頁面至少比同樣功能的asp頁面快250%!
網(wǎng)絡(luò)表單把基于vb表單的高效率的優(yōu)點(diǎn)帶到了網(wǎng)絡(luò)應(yīng)用程序的開發(fā)中來。網(wǎng)絡(luò)表單支持傳統(tǒng)的將html內(nèi)容與腳本代碼混合的asp語法,但是它提出了一種將應(yīng)用程序代碼和用戶接口內(nèi)容分離的更加結(jié)構(gòu)化的方法。引入的網(wǎng)絡(luò)表單控件用于為封裝通用用戶接口元素提供了一種機(jī)制。這些新的特點(diǎn)使得開發(fā)工具在支持vb應(yīng)用程序的同時,也支持設(shè)計時模塊,使得wysiwyg(所見即所得)工具支持網(wǎng)頁布局。
網(wǎng)絡(luò)表單控件負(fù)責(zé)生成用戶接口,典型情況是在html表單中。asp.net提供了一套映射傳統(tǒng)的html用戶接口小部件(包括列表框,文本框和按鈕)的網(wǎng)絡(luò)表單控件和一套附加的更加復(fù)雜的網(wǎng)絡(luò)控件(如日歷和廣告板)。這些控件的一個重要特點(diǎn)是,它們可以被編寫以適應(yīng)客戶端的能力;同一網(wǎng)頁把大范圍的客戶端平臺和表單因素作為目標(biāo)。換句話說,網(wǎng)絡(luò)表單控件能“探測”到正在查找表單的客戶,然后返回合適的可能是適合低級瀏覽器的html 3.2或是適于ie 5.0的動態(tài)html。
考慮到網(wǎng)絡(luò)是一種無狀態(tài)的聯(lián)接模型,網(wǎng)絡(luò)應(yīng)用程序開發(fā)人員所面臨的一個很復(fù)雜的問題是,他們要對用戶與基于網(wǎng)絡(luò)接口的交互作用作出反應(yīng)。網(wǎng)絡(luò)利用asp.net的體系架構(gòu)提供了一套豐富的服務(wù),以幫助開發(fā)人員建立交互式網(wǎng)頁。這些服務(wù)的作用是使基于組件的、事件驅(qū)動的可編程模塊,對開發(fā)人員來說,非常象客戶端的表單程序設(shè)計。用戶與網(wǎng)頁交互作用的狀態(tài)管理的復(fù)雜性被asp.net網(wǎng)絡(luò)表單和網(wǎng)絡(luò)表單控件隱藏起來了。對開發(fā)人員來說,提供的豐富數(shù)據(jù)綁定服務(wù)使得顯示通過數(shù)據(jù)訪問服務(wù)得到的數(shù)據(jù)變得非常容易。
代碼與內(nèi)容的分離使asp.net網(wǎng)頁能動態(tài)地編譯到受控類中,用以提高性能。每個引入的http請求都被傳遞到一個新的網(wǎng)頁實例,因此開發(fā)人員不需要關(guān)心代碼中的線程安全性。
2.namespace(名字空間)
對象一直是windows開發(fā)環(huán)境中,程序開發(fā)的中心。不論在vb、vba、vc++、vbscript等都是如此,不同的開發(fā)環(huán)境有不同的對象,這些對象均是各個語法所提供“資源”,程序開發(fā)人員可以利用這些資源,來編寫所需的系統(tǒng)。
在過去的asp中,僅有server、request、response……等七個對象。而在asp.net的對象庫中卻分得很細(xì)。
例如在asp.net網(wǎng)頁中要通過sql語句獲得數(shù)據(jù)庫中的數(shù)據(jù),必須使用“system.data.sql”,這是namespace(名字空間)名稱。在system.data.sql下,又有很多類(class)。每個類可視為一個對象,因為類下有屬性、方法和事件等
所以,最上層的namespace看作是同類型對象的集合,一個namespace之下可擁有多個類。它們之間的關(guān)系如圖: (圖)
3.文件類型
asp 的文件類型只有一種,其擴(kuò)展名是.asp文件。但在asp.net有很多的文件類型:
(圖)
四、asp.net的控件應(yīng)用
asp.net提供四種類型的控件,即服務(wù)器端控件、驗證控件、html控件和自定義控件,充分利用這些控件提供的功能,可以加快完成任務(wù)的速度。
1. 服務(wù)器端控件
在asp.net中,一切都是對象,web頁面本身也是一個對象。或者說,web頁面就是一個對象的容器。服務(wù)器端控件,英文是server control,就是放在這個容器里面。
什么是control?簡單地說,control就是一個可重用的組件或者對象,這個組件不但有自己的外觀,還有自己的數(shù)據(jù)和方法,大部分組件還可以響應(yīng)事件。通過微軟的集成開發(fā)環(huán)境(visual studio.net),你可以簡單地把一個control拖放到一個form中。
那為什么叫“server control”?這是因為這些control是在服務(wù)器端存在的。服務(wù)器端控件也有自己的外觀,在客戶端瀏覽器中,server control的外觀由html代碼來表現(xiàn)。server control會在初始化時,根據(jù)客戶的瀏覽器版本,自動生成適合瀏覽器的html代碼。主要的服務(wù)器端控件及其用途如下表所示:
(圖)
例1:服務(wù)器控件
id="txtlogin"
text="文字編輯"
font_face="arial" font_size="3"
backcolor="lightblue"
textmode="multiline"
heigth=10
ontextchanged="txtlogin_changed()"
/>
text="checkbox 1"
autopostback="true"
/>
repeatlayout="flow"
>
item 1
item 2
item 3
item 4
item 5
item 6
2. 驗證控件
這是用以驗證web頁面中用戶輸入信息是否有效的非常重要的一種方法。在asp.net的web from框架中提供了一套驗證控件,它們提供了強(qiáng)大易用的方式來檢查錯誤,如果需要的話可以顯示提示信息給用戶。這些控件可以分為如下表所述的幾種類型:(圖)
例2:驗證控件
controltovalidate="txtlastname"
errormessage="last name is a required field"
forecolor="red">
forecolor="red"
controltovalidate="txtdeparturedate"
controltocompare="txtarrivaldate"
type="datetime"
operator="greaterthanequal"
errormessage="departure date cannot be earlier than arrival date.">
forecolor="red"
controltovalidate="txtage"
valuetocompare=0
type="integer"
operator="greaterthanequal"
errormessage="please enter a whole number zero or greater.">
controltovalidate="text1" 
errormessage="you must enter at least 8 characters!"
clientvalidationfunction="validatelength(o, v)" >
zip:
id=txtzip_validation runat="server" 
controltovalidate="txtzip"
errormessage="enter a valid us zip code."
validationexpression="[0-9]{6,6}">
3. html服務(wù)器控件
html控件在服務(wù)器端是可見的,所以我們可以根據(jù)它來按照我們的意愿編寫。html控件表現(xiàn)為一些可見的控件。
html服務(wù)器控件直接對應(yīng)到html元素,每一個html服務(wù)器控件都支持通用控件的屬性和方法,它們都可以綁定到數(shù)據(jù)源上。
(圖)
例3:html控件示例:
自定義頁面控件
當(dāng)然我們也可以生成更復(fù)雜的自定義控件,在這里就不多說了,有興趣請參考asp.net的幫助文件用c#、vb.net等來編寫功能強(qiáng)大的控件,一般來說,這些控件可以編譯成為.dll文件,以供隨時使用。
五、 數(shù)據(jù)庫操作
asp.net中主要通過ado.net和dataset來完成對數(shù)據(jù)庫的操作。ado.net和asp中的ado相對應(yīng),它是ado的改進(jìn)版本。dataset是ado.net的中心概念。你可以把dataset想象成內(nèi)存中的數(shù)據(jù)庫。正是由于dataset,才使得程序員在編程序時可以屏蔽數(shù)據(jù)庫之間的差異,從而獲得一致的編程模型。dataset支持多表、表間關(guān)系、數(shù)據(jù)約束等。這些和關(guān)系數(shù)據(jù)庫的模型基本一致。過去,數(shù)據(jù)處理主要依賴于兩層結(jié)構(gòu),并且是基于連接的。連接斷開,數(shù)據(jù)就不能再存取。現(xiàn)在,數(shù)據(jù)處理被延伸到三層以上的結(jié)構(gòu),相應(yīng)地,程序員需要切換到無連接的應(yīng)用模型。這樣,datasetcommand就在ado.net中扮演了極其重要的角色。它可以取回一個dataset,并維護(hù)一個數(shù)據(jù)源和dataset之間的“橋”,以便于數(shù)據(jù)的訪問、修改和保存。datasetcommand自動將數(shù)據(jù)的各種操作變換到數(shù)據(jù)源相關(guān)的合適的sql語句。
ado.net訪問數(shù)據(jù)庫的步驟是:
(1)創(chuàng)建一個數(shù)據(jù)庫鏈接;
(2)請求一個記錄集合;
(3)將記錄集合暫存到dataset;
(4)如果需要,返回第2步;(dataset可容納多個數(shù)據(jù)集合)
(5)關(guān)閉數(shù)據(jù)庫鏈接;
(6)在dataset上作所需要的操作。
dataset在內(nèi)部是用xml來描述數(shù)據(jù)的。由于xml是一種與平臺無關(guān)、語言無關(guān)的數(shù)據(jù)描述語言,而且可以描述復(fù)雜數(shù)據(jù)關(guān)系的數(shù)據(jù),比如父子關(guān)系的數(shù)據(jù),所以dataset實際上可以容納具有復(fù)雜關(guān)系的數(shù)據(jù),而且不再依賴于數(shù)據(jù)庫鏈接。
我們以一個非常簡短的例子來說明數(shù)據(jù)庫的連接、檢索,更多的操作如增加、刪除、修改等請參考asp.net文檔。
例:數(shù)據(jù)庫連接、檢索
asp.net的功能還有很多,這里介紹的只是它的一些基礎(chǔ)功能,高級一些的功能如web應(yīng)用程序、web service、性能優(yōu)化、xml集成、三層結(jié)構(gòu)和消息隊列msmq等需要你去參考相應(yīng)的專業(yè)書籍以作全面了解、掌握。
新聞熱點(diǎn)
疑難解答
圖片精選