成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET開發(fā)相關(guān)技術(shù)簡(jiǎn)介

開發(fā) 后端
本文向您介紹ASP.NET開發(fā)方面的知識(shí),包括對(duì).NET Framework、ASP.NET、ADO.NET 等相關(guān)技術(shù)的介紹。

大約有將近一百萬名開發(fā)人員使用了.NET Framework的第一個(gè)版本來開發(fā)網(wǎng)站。所以在2003年的夏天,當(dāng)從Microsoft傳出將有新版本發(fā)布的傳聞時(shí),許多人的耳朵都豎了起來,這個(gè)新的版本將使得創(chuàng)建ASP.NET頁面所需的代碼行數(shù)減少70%。像這樣大規(guī)模的提高生產(chǎn)效率在程序設(shè)計(jì)中是不多見的。當(dāng)ASP.NET 2.0的代碼樣例在2003年秋的Microsoft專業(yè)開發(fā)人員大會(huì)(Microsoft Professional Developer’s Conference)上演示時(shí),結(jié)果比預(yù)計(jì)的還要好。以前使用ASP.NET的第一個(gè)版本程序員需要花費(fèi)幾個(gè)小時(shí)才能做出的頁面,現(xiàn)在使用ASP.NET 2.0只需要幾分鐘就完成了。簡(jiǎn)單來說,在.NET Framework 2.0最終版本發(fā)布之后,任何繼續(xù)使用第一個(gè)版本創(chuàng)建ASP.NET頁面的程序人員都將花費(fèi)大量的額外時(shí)間才能達(dá)到相同的結(jié)果。

也許就像其他任何領(lǐng)域一樣,ASP.NET開發(fā)提供的優(yōu)勢(shì)是能夠方便地將數(shù)據(jù)集成進(jìn)頁面。程序員不再需要知道詳細(xì)的連接、命令以及數(shù)據(jù)閱讀器和數(shù)據(jù)適配器對(duì)象,就能執(zhí)行普通數(shù)據(jù)任務(wù)了。對(duì)于初學(xué)者掌握能力,ASP.NET 2.0使得基本數(shù)據(jù)的使用簡(jiǎn)單易學(xué),并且有能力進(jìn)行更復(fù)雜的數(shù)據(jù)應(yīng)用。

.NET Framework

Microsoft開發(fā)出了作為基本原理的.NET和一系列技術(shù),用于在互聯(lián)網(wǎng)中讓計(jì)算機(jī)共同工作。總的目標(biāo)就是讓信息和進(jìn)程在大范圍的系統(tǒng)和設(shè)備之間順暢地交流。.NET不是一種語言,也不是一個(gè)特別的產(chǎn)品。更確切地說,它是一套標(biāo)準(zhǔn)和規(guī)范,并已經(jīng)應(yīng)用于自2002年以來Microsoft發(fā)布的所有產(chǎn)品中。

.NET包含了一種使用開放標(biāo)準(zhǔn)的XML格式交換信息的標(biāo)準(zhǔn)化格式。可擴(kuò)展標(biāo)記語言(Extensible Markup Language,XML)不需要請(qǐng)求者具備任何有關(guān)數(shù)據(jù)存儲(chǔ)如何保存信息的專門知識(shí)—— 數(shù)據(jù)都以自描述的XML格式取出。同樣地,目前幾乎所有的數(shù)據(jù)存儲(chǔ)都可以用XML來提供信息,這對(duì)于所有.NET數(shù)據(jù)客戶都具有吸引力。

.NET支持軟件的Web Services標(biāo)準(zhǔn),可請(qǐng)求在使用了開放平臺(tái)標(biāo)準(zhǔn)的簡(jiǎn)單對(duì)象訪問協(xié)議(Simple Object Access Protocol,SOAP)和XML的遠(yuǎn)程軟件上運(yùn)行代碼。.NET網(wǎng)站可以從另外一個(gè)網(wǎng)站上找到該網(wǎng)站所提供的服務(wù),并使用這些服務(wù)。這樣可以使得網(wǎng)站從其他的網(wǎng)站上獲得HTML、計(jì)算后的結(jié)果或者數(shù)據(jù)集。

作為.NET開端的一部分,Microsoft發(fā)布了一套運(yùn)行時(shí)編程工具和應(yīng)用編程接口(API),稱為.NET Framework,讓開發(fā)團(tuán)隊(duì)能夠創(chuàng)建.NET應(yīng)用程序和XML Web Services。.NET Framework由公共語言運(yùn)行庫(Common Language Runtime,CLR)和一套統(tǒng)一的類庫組成。

CLR為運(yùn)行的應(yīng)用程序提供了一個(gè)完全管理的執(zhí)行環(huán)境,其中包括幾個(gè)服務(wù),例如程序集裝載和卸載、進(jìn)程和內(nèi)存的管理、安全實(shí)施以及即時(shí)編譯等。CLR名稱的意思就是指能夠用多種語言編寫應(yīng)用程序,并且將源代碼編譯成CLR能夠讀懂并運(yùn)行的中間語言,而無需考慮原來所使用的語言。這種“語言獨(dú)立性”就是CLR的關(guān)鍵特性(也是ASP.NET的特性),它允許開發(fā)人員使用自己喜歡的語言工作,比如C#、VB或者Cobol,都能夠獲得.NET Framework的常用特性。

.NET Framework還包括了一套類庫,這套類庫提供了每一個(gè)應(yīng)用程序所需的常用功能。可以使用.NET Framework支持的任何語言來訪問這些類庫。由這些類庫提供的服務(wù)(以及相應(yīng)的命名空間)如下:

· 基本類型(System)

· 輸入/輸出(System.IO)

· 數(shù)據(jù)訪問(System.Data)

· 安全(System.Security)

· 數(shù)據(jù)結(jié)構(gòu)(System.Collections)

· 配置(System.Configuration)

· 連網(wǎng)(System.Net)

· 反射(System.Reflection)

· 全球化(System.Globalization)

· 繪畫和制圖(System.Drawing)

· 跟蹤和診斷(System.Diagnostics)

· 窗口(客戶端)應(yīng)用程序模型(System.Windows.Forms)

· Web應(yīng)用程序模型(System.Web)

注意,.NET Framework包含了兩個(gè)應(yīng)用程序編程模型,一個(gè)用于客戶端應(yīng)用程序(System.Windows.Forms),另一個(gè)用于基于Web的應(yīng)用程序(System.Web)。本書著重講解后一個(gè)模型。.NET Framework中的System.Web命名空間是.NET Framework的一部分,它提供了ASP.NET功能。換句話說,ASP.NET就是構(gòu)建應(yīng)用程序的所有.NET Framework的一部分。

ASP.NET開發(fā)

ASP.NET是一種用于創(chuàng)建基于Web的應(yīng)用程序的編程模型。從本質(zhì)上來說,運(yùn)行時(shí)和.NET Framework類庫集可以用于創(chuàng)建動(dòng)態(tài)Web頁。它需要在Web服務(wù)器的環(huán)境中運(yùn)行,例如Microsoft Internet Information Server(Microsoft互聯(lián)網(wǎng)信息服務(wù)器,IIS),并且根據(jù)服務(wù)瀏覽器請(qǐng)求指示在服務(wù)器上執(zhí)行程序。與直接由Web服務(wù)器提供的靜態(tài)HTML不同的是,ASP.NET頁面實(shí)際上是在服務(wù)器上執(zhí)行以后再產(chǎn)生結(jié)果的。頁面的最后生成也許是由許多不同的指令和/或數(shù)據(jù)源構(gòu)造的。

ASP.NET頁面以.aspx擴(kuò)展名存儲(chǔ)。頁面由程序員將文本、標(biāo)記(例如HTML)以及ASP.NET特定服務(wù)器標(biāo)記和腳本組合在一起,然后存儲(chǔ)在Web服務(wù)器上。可以將存儲(chǔ)后的ASP.NET頁面看成是一套描述如何創(chuàng)建一個(gè)HTML頁面的指令。當(dāng)該頁面被請(qǐng)求瀏覽時(shí),服務(wù)器端程序?qū)?huì)用純標(biāo)記來創(chuàng)建一個(gè)客戶端瀏覽器可以讀懂并能呈現(xiàn)(render)的頁面。因?yàn)槌尸F(xiàn)后的輸出是純標(biāo)記,所以任何瀏覽器都能夠讀懂;所有的動(dòng)態(tài)過程都發(fā)生在Web服務(wù)器端。ASP.NET特定服務(wù)器標(biāo)記非常強(qiáng)大,例如,它可以對(duì)用戶的動(dòng)作作出反應(yīng),連接至數(shù)據(jù)存儲(chǔ)以及自動(dòng)創(chuàng)建非常復(fù)雜的HTML結(jié)構(gòu)。

正像前面提到的那樣,ASP.NET只是.NET Framework的一部分,所以 ASP.NET頁面可以利用這個(gè)框架提供的所有服務(wù),包括連網(wǎng)、數(shù)據(jù)訪問、安全以及更多其他服務(wù)。因?yàn)锳SP.NET可以使用所有這些服務(wù),所以相比以前,能夠創(chuàng)建更加豐富的Web應(yīng)用程序。只需花少量的時(shí)間來構(gòu)建所有應(yīng)用程序所需的構(gòu)建塊,而將大多數(shù)時(shí)間用在應(yīng)用程序獨(dú)有的特殊邏輯上。

ASP.NET開發(fā)還可以在Web編程中引入了一些獨(dú)特的新技術(shù),可以在典型的動(dòng)態(tài)服務(wù)器頁面(Active Server Pages,ASP)上極大地改善開發(fā)模式:

· 語言獨(dú)立性——因?yàn)锳SP.NET是.NET Framework的一部分,所以可以使用您自己選擇的語言來構(gòu)建ASP.NET應(yīng)用程序,例如C#、VB或J#。而典型的ASP則僅限于JScript或者VBScript頁面。

· 編譯而不是解釋——與典型的ASP在每一次頁面請(qǐng)求時(shí)都解釋編程結(jié)構(gòu)不同,ASP.NET在服務(wù)器端動(dòng)態(tài)地將頁面編譯成可以運(yùn)行得非常快的本機(jī)編程指令。可以很明顯地看到典型的ASP頁面的性能與相同ASP.NET頁面的性能之間相差的數(shù)量級(jí)別。

· 事件驅(qū)動(dòng)編程模式——在典型的ASP中,頁面總是以自頂向下的線性方式執(zhí)行,并且HTML標(biāo)記常常與程序指令混合在一起。任何一個(gè)有一定ASP經(jīng)驗(yàn)的人都知道這樣會(huì)使得頁面難以閱讀,甚至更加難以維護(hù)。ASP.NET引入了事件驅(qū)動(dòng)模型,這個(gè)模型允許您將代碼與標(biāo)記內(nèi)容分離,將代碼并入處理專門任務(wù)的有意義的單元中,例如響應(yīng)客戶端的按鈕單擊動(dòng)作。這個(gè)類似VB的事件模型極大地提高了頁面的可讀性和可維護(hù)性。

· 服務(wù)器控件——典型的ASP需要?jiǎng)討B(tài)地將HTML片斷代碼接合在一起呈現(xiàn),這樣做的結(jié)果就是在應(yīng)用程序中一遍又一遍地編寫相同的代碼(您需要多少次才能從數(shù)據(jù)庫查詢中構(gòu)建一張表格)。ASP.NET帶給Web編程的一個(gè)最大的好處就是能夠?qū)⒐驳某尸F(xiàn)和行為封裝成服務(wù)器控件(server control),可以在應(yīng)用程序中很方便地重復(fù)使用。就像HTML標(biāo)記一樣,服務(wù)器控件以聲明的形式創(chuàng)建,但是表現(xiàn)為一個(gè)位于服務(wù)器端的可編程對(duì)象,它可以與代碼進(jìn)行交互并輸出定制的動(dòng)態(tài)HTML呈現(xiàn)。ASP.NET包含了大約80多個(gè)服務(wù)器控件,這些控件封裝了從標(biāo)準(zhǔn)表單元素到復(fù)雜控件(如網(wǎng)格和菜單)的所有內(nèi)容。

· 控件設(shè)計(jì)時(shí)間的改善(當(dāng)使用Visual Web Developer時(shí))—— 開發(fā)人員通過使用設(shè)計(jì)時(shí)間界面可以減少花費(fèi)在開發(fā)復(fù)雜頁面上的時(shí)間,這些界面包括敏捷任務(wù)面板、標(biāo)簽級(jí)導(dǎo)航欄和可以設(shè)置控件屬性的向?qū)А?/P>

#p#

ASP.NET開發(fā)技術(shù)的第一個(gè)版本(1.0和1.1)在2001年至2003年間迅速風(fēng)靡了Microsoft的開發(fā)陣營(yíng)。程序人員很快便感覺到他們通過使用強(qiáng)大和靈活的.NET Framework可以大大減少編碼時(shí)間,而且CIO們也看到當(dāng)程序員花在解決客戶代碼的疑難問題上的時(shí)間減少時(shí),他們就可以將更多的資源投入到更高級(jí)的IT結(jié)構(gòu)的改善上。ASP.NET確實(shí)是一個(gè)里程碑式的版本,它簡(jiǎn)化了開發(fā)人員的工作。

但是,就在第一個(gè)版本發(fā)布之前,Microsoft的ASP.NET小組就已經(jīng)在為開發(fā)ASP.NET 2.0而工作了。他們以下面雄心勃勃的目標(biāo)來開始他們的工作:

· 使創(chuàng)建一個(gè)典型的Web應(yīng)用程序所需代碼行數(shù)減少70%。

· 提供一套可擴(kuò)展的應(yīng)用程序服務(wù),用來為通用應(yīng)用程序任務(wù)提供構(gòu)建塊,例如成員、角色、個(gè)人化以及導(dǎo)航等。

· 創(chuàng)建一系列基于任務(wù)的服務(wù)器控件,這些控件可以調(diào)節(jié)上述服務(wù),交付完全、可定制的用戶接口(UI),以最小的代碼量來展示這些服務(wù)。

· 當(dāng)與.NET Framework協(xié)同工作提供頁面服務(wù)時(shí),改善IIS的性能。

· 提供管理功能,以便加強(qiáng)ASP.NET服務(wù)器的部署、管理和運(yùn)行。

· 改善宿主公司所用的工具,以便可以支持多站點(diǎn)并能夠?qū)㈤_發(fā)人員的項(xiàng)目遷移至公共部署環(huán)境。

· 讓ASP.NET的幾乎所有特性都能夠方便地?cái)U(kuò)展或者用定制的高級(jí)任務(wù)的執(zhí)行替換。 在這里,我們有必要再來細(xì)細(xì)地回想一下第一個(gè)目標(biāo),也就是使編寫一個(gè)動(dòng)態(tài)Web應(yīng)用程序所需的代碼量減少70%。這有可能嗎?Microsoft的ASP.NET小組已經(jīng)仔細(xì)考慮過各種以定制代碼執(zhí)行的通用任務(wù),并且專門制定了將這些任務(wù)封裝進(jìn)構(gòu)建塊(特別是服務(wù)器控件)的方式,這樣就能夠自動(dòng)地完成這些任務(wù)了。例如,大多數(shù)Web應(yīng)用程序都需要安全或者導(dǎo)航或者個(gè)性化服務(wù)來為用戶提供定制的體驗(yàn)。在ASP.NET 2.0中,這些任務(wù)是通過一系列可配置的應(yīng)用程序服務(wù),以及與這些應(yīng)用程序服務(wù)進(jìn)行對(duì)話的服務(wù)器控件來實(shí)現(xiàn)的,這樣可以極大地減少實(shí)施這些通用服務(wù)所需的應(yīng)用程序的代碼量。但是,在所有這些通用任務(wù)當(dāng)中,有一個(gè)任務(wù)是絕對(duì)獨(dú)立于其他應(yīng)用程序的,這就是數(shù)據(jù)訪問服務(wù)。數(shù)據(jù)是驅(qū)動(dòng)所有動(dòng)態(tài)Web應(yīng)用程序的公用線程,所以毫不奇怪,ASP.NET小組為了減少代碼量和在ASP.NET 2.0的應(yīng)用程序中執(zhí)行數(shù)據(jù)訪問所需的概念,而制訂了一些大膽的目標(biāo):

· 在ASP.NET開發(fā)中可以通過聲明的(無代碼)方式來定義一個(gè)數(shù)據(jù)源。

· 可以通過聲明的(無代碼)方式用UI控件顯示數(shù)據(jù),無需在頁面的執(zhí)行生存期中的特定時(shí)間進(jìn)行顯式的數(shù)據(jù)綁定。

· 可以通過聲明的(無代碼)方式執(zhí)行通用數(shù)據(jù)任務(wù),例如排序、分頁、過濾、更新、插入以及刪除數(shù)據(jù)。

· 可以使用多種UI控件來顯示數(shù)據(jù),包括靈活的網(wǎng)格/詳細(xì)控件,該控件既可以顯示又可以操作數(shù)據(jù)。

· 為創(chuàng)建定制的數(shù)據(jù)源,啟用可擴(kuò)展的模型來支持新的數(shù)據(jù)類型。

ASP.NET 2.0具有一些程序員可以使用的特定的服務(wù)器控件,用于在頁面上添加數(shù)據(jù)交互。這些專門的數(shù)據(jù)控件分為兩組:數(shù)據(jù)源控件和數(shù)據(jù)綁定控件。數(shù)據(jù)源控件創(chuàng)建與數(shù)據(jù)庫的鏈接。數(shù)據(jù)綁定控件則從數(shù)據(jù)源控件獲取信息,并在頁面上創(chuàng)建呈現(xiàn)。這種簡(jiǎn)單的雙控件模式可用于多種情況。對(duì)于多種數(shù)據(jù)庫類型,甚至是非關(guān)系型數(shù)據(jù)源,都有相應(yīng)的數(shù)據(jù)源控件。同樣地,有多種數(shù)據(jù)綁定控件可用來在頁面上生成表格、樹型、列表以及其他數(shù)據(jù)格式。在前面我們已對(duì)ASP.NET進(jìn)行了介紹,同時(shí)講述了ASP.NET的一些理論,現(xiàn)在開始介紹本書剩余部分的細(xì)節(jié)內(nèi)容:數(shù)據(jù)源控件和數(shù)據(jù)綁定控件的使用。數(shù)據(jù)源控件以及附帶產(chǎn)品包括如下條目:

· SqlDataSource控件,用于與Microsoft SQL Server和其他數(shù)據(jù)庫進(jìn)行連接

· AccessDataSource控件,用于與MDB文件連接

· ObjectDataSource控件,用于與中間層對(duì)象連接

· XMLDataSource控件,用于XML文件或者數(shù)據(jù)流

· SiteMapDataSource控件,用于以ASP.NET 2.0站點(diǎn)地圖格式存儲(chǔ)的XML文件額外的控件已經(jīng)由第三方開發(fā)。

在數(shù)據(jù)綁定控件中,有很多與ASP.NET 1.x中的相似,有一些則是ASP.NET 2.0全新開發(fā)的:

· ListBox、DropDownList和BulletedList、CheckBoxList、RadioButtonList

· AdRotator是實(shí)現(xiàn)舊功能的數(shù)據(jù)綁定控件

· DataList和Repeater以靈活的布局方式提供數(shù)據(jù)

· DataGrid(與ASP.NET 1.x中的相同)和GridView(第2個(gè)版本中的新控件)用于表格數(shù)據(jù)

· DetailsView和FormView以輕松的導(dǎo)航提供記錄的信息

· TreeView用于顯示分級(jí)數(shù)據(jù)

總之,數(shù)據(jù)源控件和數(shù)據(jù)綁定控件將會(huì)是本書重點(diǎn)介紹的對(duì)象。

在.NET Framework 2.0公開beta版本發(fā)布之前,少數(shù)的幾個(gè)程序組就已經(jīng)被允許查看工作代碼,并希望盡快獲得他們的反饋。結(jié)果,所有的反應(yīng)只有一個(gè),那就是熱烈,“太好了!”然后就是“什么時(shí)候我才能用ASP.NET 2.0替換我的ASP.NET 1.x應(yīng)用程序?”。現(xiàn)在beta發(fā)布版本已經(jīng)在手邊,我們無需再等待了。

ADO.NET

ADO.NET是.NET Framework中的一套類庫,它將會(huì)讓您更加方便地在應(yīng)用程序中使用數(shù)據(jù)。Microsoft收集了過去幾十年中最佳的數(shù)據(jù)連接的實(shí)踐操作,并編寫代碼實(shí)現(xiàn)這些實(shí)踐。這些代碼被包裝進(jìn)了一些對(duì)象中,以便其他軟件可以方便地使用。

ADO.NET中的代碼處理了大量的數(shù)據(jù)庫特有的復(fù)雜情況,所以當(dāng)ASP.NET頁面設(shè)計(jì)人員想讀取或者寫入數(shù)據(jù)時(shí),他們只需編寫少量的代碼,并且這些代碼都是標(biāo)準(zhǔn)化的。就像ASP.NET一樣,ADO.NET不是一種語言。它是對(duì)象(類)的集合,在對(duì)象(類)中包含了由Microsoft編寫的代碼。可以使用諸如Visual Basic或者C#等編程語言來在對(duì)象外部運(yùn)行這些代碼。

可以將ADO.NET看作是一個(gè)介于數(shù)據(jù)源和數(shù)據(jù)使用者之間的非常靈巧的轉(zhuǎn)換層。ADO.NET可以接受數(shù)據(jù)使用者語言中的命令,然后將這些命令轉(zhuǎn)換成在數(shù)據(jù)源中可以正確執(zhí)行任務(wù)的命令。但是,就像您將會(huì)看到的那樣,ASP.NET 2.0提供了服務(wù)器端數(shù)據(jù)控件,可以更方便地與ADO.NET交互工作,所以有的時(shí)候這基本上減少了直接使用ADO.NET對(duì)象的需求。

#p#

很多讀者已經(jīng)有使用ASP.NET早期版本的經(jīng)驗(yàn)了。這一小節(jié)將回顧一下這種模式,目的是演示您需要通過ADO.NET對(duì)象將數(shù)據(jù)引入Web頁中的這一過程。對(duì)那些從來都沒有使用過早期版本的讀者來說,可以將本小節(jié)作為一個(gè)新奇的故事,類似于在發(fā)現(xiàn)乙醚之前進(jìn)行的外科技術(shù)研究。在以前,創(chuàng)建一個(gè)簡(jiǎn)單典型的ASP.NET 1.x版本的頁面需要如下代碼:

  1. 〈script runat="server" 〉  
  2.  
  3. Sub Page_Load(ByVal sender As Object,   
  4. ByVal e As System.EventArgs)  
  5.  
  6. BulletedList1.DataSource = GetAuthorsByState("CA")  
  7.  
  8. BulletedList1.DataBind()  
  9.  
  10. End Sub  
  11.  
  12. Shared Function GetAuthorsByState  
  13. (ByVal state As String) As System.Data.DataSet  
  14.  
  15. Dim connectionString As String =   
  16. "server=(local); database=pubs;   
  17. trusted_connection=true"  
  18.  
  19. Dim dbConnection As System.Data.IDbConnection =   
  20. New System.Data.SqlClient.  
  21. SqlConnection(connectionString)  
  22.  
  23. Dim queryString As String =   
  24. "SELECT [authors].[au_id], [authors].[au_fname],   
  25. [authors].[au_lname], [authors].  
  26.  
  27. [state] FROM [authors] WHERE   
  28. ([authors].[state] = @state)"  
  29.  
  30. Dim dbCommand As System.Data.IDbCommand =   
  31. New System.Data.SqlClient.SqlCommand  
  32.  
  33. dbCommand.CommandText = queryString  
  34.  
  35. dbCommand.Connection = dbConnection  
  36.  
  37. Dim dbParam_state As System.Data.IDataParameter =   
  38. New System.Data.SqlClient.SqlParameter  
  39.  
  40. dbParam_state.ParameterName = "@state" 
  41.  
  42. dbParam_state.Value = state   
  43.  
  44. dbParam_state.DbType = System.Data.DbType.  
  45. StringFixedLength  
  46.  
  47. dbCommand.Parameters.Add(dbParam_state)  
  48.  
  49. Dim dataAdapter As System.Data.IDbDataAdapter =   
  50. New System.Data.SqlClient.SqlDataAdapter  
  51.  
  52. dataAdapter.SelectCommand = dbCommand  
  53.  
  54. Dim dataSet As System.Data.DataSet =   
  55. New System.Data.DataSet  
  56.  
  57. dataAdapter.Fill(dataSet)  
  58.  
  59. Return dataSet  
  60.  
  61. End Function 
  62.  
  63. 〈/script 〉  
  64.  
  65. 〈html 〉〈head runat="server" 〉  
  66. 〈title 〉Untitled Page/title 〉〈/head 〉  
  67.  
  68. 〈body 〉  
  69.  
  70. 〈form id="form1" runat="server" 〉〈div 〉  
  71.  
  72. 〈asp:BulletedList ID="BulletedList1"   
  73. DataTextField= "au_lname" Runat="server" / 〉  
  74.  
  75. 〈/div 〉〈/form 〉  
  76.  
  77. 〈/body 〉〈/html 〉  

以上示例對(duì)數(shù)據(jù)庫執(zhí)行了一條簡(jiǎn)單的SQL SELECT語句,并將結(jié)果與一個(gè)BulletedList控件綁定。頁面中有一個(gè)名為GetAuthorsByState的方法,該方法創(chuàng)建了用來完成這個(gè)任務(wù)的幾個(gè)ADO.NET對(duì)象:

· SqlConnection對(duì)象表示與數(shù)據(jù)庫服務(wù)器進(jìn)行連接

· SqlCommand對(duì)象表示要執(zhí)行的SQL SELECT命令

· SqlParameter對(duì)象代表了一個(gè)將被命令中的標(biāo)記代替的值

· SqlDataAdapter表示填充命令中的DataSet對(duì)象的能力

· DataSet表示命令結(jié)果,可以與BulletedList進(jìn)行綁定

在Page_Load事件中,調(diào)用GetAuthorsByState方法并生成DateSet結(jié)果,然后將這個(gè)結(jié)果賦給BulletedList的DataSource屬性。接著,調(diào)用DataBind()使得BulletedList用這個(gè)數(shù)據(jù)結(jié)果將自己同步。我們?cè)陧撁鎴?zhí)行生存期中的適當(dāng)?shù)臅r(shí)候調(diào)用DataBind(),這樣的做法是ASP.NET 2.0在一般情況下尋找并消除的一個(gè)關(guān)鍵步驟。實(shí)際上,在大多數(shù)情況下, ASP.NET 2.0根本不需要與ADO.NET進(jìn)行交互操作。但是,理解上述ADO.NET對(duì)象之間的關(guān)系是非常有用的,這樣我們就可以討論 ASP.NET 2.0是如何改進(jìn)這個(gè)模式的。

ASP.NET 2.0和數(shù)據(jù)訪問

ASP.NET 2.0給我們提供了一個(gè)改良的數(shù)據(jù)訪問模式,這個(gè)模式減少了在 ASP.NET 1.x中執(zhí)行數(shù)據(jù)綁定所需的代碼量。首先,無需編程實(shí)現(xiàn)實(shí)例化、設(shè)置屬性以及調(diào)用前述列表中的ADO對(duì)象的方法。您需要做的就是在頁面上簡(jiǎn)單地添加服務(wù)器端控件并設(shè)置屬性。當(dāng)呈現(xiàn)頁面時(shí),ASP.NET 2.0將會(huì)自動(dòng)地執(zhí)行所有的對(duì)象實(shí)例化,并調(diào)用方法創(chuàng)建并顯示數(shù)據(jù)。請(qǐng)將以下ASP.NET 2.0代碼與上面的代碼進(jìn)行對(duì)比:

  1. 〈html 〉  
  2.  
  3. 〈head runat="server" 〉  
  4. 〈title 〉Demo〈/title 〉〈/head 〉  
  5.  
  6. 〈body 〉  
  7.  
  8. 〈form id="form1" runat="server" 〉  
  9.  
  10. 〈asp:SqlDataSource ID="SqlDataSource1"   
  11. Runat="server" SelectCommand="SELECT   
  12. au_lname FROM authors WHERE (state = @state)"  
  13.  
  14. ConnectionString="Server=HPSERV;   
  15. Integrated Security=True;Database=pubs" 〉  
  16.  
  17. 〈SelectParameters 〉  
  18.  
  19. 〈asp:Parameter Type="String"   
  20. DefaultValue="CA" Name="state" / 〉  
  21.  
  22. 〈/SelectParameters 〉  
  23.  
  24. 〈/asp:SqlDataSource 〉  
  25.  
  26. 〈asp:BulletedList ID="BulletedList1"   
  27. runat="server" DataSourceID="SqlDataSource1" 
  28.  
  29. DataTextField="Au_lname" 〉  
  30.  
  31. 〈/asp:BulletedList 〉  
  32.  
  33. 〈/form 〉  
  34.  
  35. 〈/body 〉〈/html 〉  

#p#

第二個(gè)改進(jìn)來自于對(duì)在頁面生存期中的事件敏感的服務(wù)器端控件。ASP.NET 2.0 服務(wù)器端控件能夠在正確的時(shí)間做出正確的動(dòng)作。請(qǐng)注意在ASP.NET 2.0頁面中對(duì)頁面生存期中的事件的任何引用。ASP早期版本的學(xué)生一般都會(huì)對(duì)在頁面生存期中執(zhí)行多種任務(wù)感到迷惑,特別是數(shù)據(jù)綁定。因此,很多ASP.NET 1.x頁面都會(huì)有這樣的讓程序員編寫代碼的遭遇,即在錯(cuò)誤的事件下調(diào)用DataBind,或者在多個(gè)事件中多次調(diào)用DataBind。這些定時(shí)操作現(xiàn)在都可以通過ASP.NET 2.0的服務(wù)器端數(shù)據(jù)控件來自動(dòng)完成。

請(qǐng)注意在前面的ASP.NET 2.0的代碼中使用了兩個(gè)服務(wù)器端控件。第一個(gè)是數(shù)據(jù)源控件,本例中是SqlDataSource控件。該控件在后臺(tái)建立了所有顯示數(shù)據(jù)所需的ADO連接對(duì)象,包括Connection、Command以及DataReader或者Dataset對(duì)象。然后,使用了一個(gè)名為BulletedList的數(shù)據(jù)綁定控件,用來獲取數(shù)據(jù)源控件的數(shù)據(jù),并在頁面上呈現(xiàn)。

術(shù)語

在完成介紹性內(nèi)容之前,我將提供一個(gè)到目前為止所用到的術(shù)語表。

· 動(dòng)態(tài)Web頁—— 作為代碼存儲(chǔ)在Web服務(wù)器上的文件,當(dāng)被請(qǐng)求時(shí),可轉(zhuǎn)換為HTML。當(dāng)頁面被轉(zhuǎn)換時(shí),他們可以根據(jù)用戶和網(wǎng)站擁有者的實(shí)時(shí)情況而按照不同的請(qǐng)求來獲取不同的表單。

· IIS—— 在Windows中內(nèi)置的Web服務(wù)器,用于通過TCP/IP向請(qǐng)求者提供Web頁。運(yùn)行于Windows 2000或者Windows XP Professional上的IIS可以使用.NET Framework類來提供ASP.NET Web頁。

· .NET Framework—— 一組包含Microsoft編寫的代碼的類,可以使得開發(fā)應(yīng)用程序更加方便和快捷,并且更易于在互聯(lián)網(wǎng)上運(yùn)行。很多類都已經(jīng)被封裝進(jìn)能夠啟用.NET 的大約十多個(gè)Microsoft產(chǎn)品當(dāng)中了。 sflj www.it55.com kg^&fgd

· CLR(公共語言運(yùn)行庫)—— .NET Framework的一項(xiàng)特性,可以讓編程人員用多種語言編寫代碼,然后將代碼編譯成可用來部署的單獨(dú)、統(tǒng)一的語言。

· ASP.NET—— .NET Framework中的運(yùn)行時(shí)和類庫集,用來創(chuàng)建動(dòng)態(tài)Web應(yīng)用程序。

· 數(shù)據(jù)存儲(chǔ)—— 數(shù)據(jù)被存放和管理的地方。所有的RDBMS都可用于數(shù)據(jù)存儲(chǔ),但是有些數(shù)據(jù)存儲(chǔ)就不是RDBMS,因?yàn)樗鼈儾皇顷P(guān)系型的。

· 數(shù)據(jù)庫或關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDMS)—— 一種可以讀取和操縱數(shù)據(jù)的軟件。大多數(shù)系統(tǒng)包含了用來設(shè)計(jì)和測(cè)試數(shù)據(jù)庫的工具,以及優(yōu)化過程的工具。一個(gè)RDBMS必須按照標(biāo)準(zhǔn)化形式(關(guān)系型格式)存儲(chǔ)數(shù)據(jù)。

· DataBase模式(或數(shù)據(jù)庫元數(shù)據(jù))—— 數(shù)據(jù)庫結(jié)構(gòu),包括表和關(guān)系的設(shè)計(jì)。該模式不包括實(shí)際的數(shù)據(jù)值。

· MicrosoftTM Access—— 一種基于MDB文件格式、JET引擎以及一系列用于創(chuàng)建和使用數(shù)據(jù)庫的工具的RDMS。Access價(jià)格便宜,容易學(xué)習(xí),能被廣泛接受并且已經(jīng)被部署到很多機(jī)器上。但是,它不支持太多的并發(fā)用戶。

· JET—— 運(yùn)行在后臺(tái)并使用MDB(Access)文件的數(shù)據(jù)庫引擎。JET可以直接從其他軟件(例如.NET或Access)接受命令來讀取或者修改MDB文件。

· 結(jié)構(gòu)化查詢語言(Structured Query Language,SQL)—— 一種被數(shù)據(jù)使用者用來從數(shù)據(jù)提供程序那里請(qǐng)求讀取或者寫入數(shù)據(jù)的語言。經(jīng)過近十年的發(fā)展,SQL已經(jīng)成為與RDBMS通信的標(biāo)準(zhǔn)。

· MicrosoftTM SQL Server—— 一種企業(yè)級(jí)的RDBMS,可以支持大量的數(shù)據(jù)和大量的并發(fā)用戶。

· MicrosoftTM SQL Server Express(SSE)—— 基于Microsoft SQL Server數(shù)據(jù)庫引擎的可免費(fèi)獲得的數(shù)據(jù)庫引擎。與SQL Server不同的是,SSE能提供的同時(shí)數(shù)據(jù)連接數(shù)量有限,并且只有少數(shù)幾個(gè)功能。本書將在大多數(shù)示例中使用SSE。

· MicrosoftTM Data Engine(MSDE)—— 與SSE類似,但是基于SQL Server引擎的早期版本。MSDE將在本書的練習(xí)中使用。

· XML—— 一種標(biāo)準(zhǔn)的數(shù)據(jù)格式,每個(gè)值都被存儲(chǔ)并描述。XML不是非常有效率(用于描述的空間通常會(huì)超過數(shù)據(jù)的大小),但是卻能被很多不同的數(shù)據(jù)管理系統(tǒng)方便地讀取。

· Web頁編輯器—— 一種允許打開和修改頁面的軟件。最常用的編輯器是記事本。Visual Studio、Visual Web Developer和ASP.NET Web Matrix與其他工具打包成一個(gè)編輯器,用以提高效率。 · 集成開發(fā)環(huán)境(Integrated Development Environment,IDE)—— 一套用來幫助編程人員開發(fā)代碼的工具。Visual Studio就是一個(gè)非常強(qiáng)大的IDE;Web ASP.NET Web Matrix也提供了很多工具。典型的IDE應(yīng)當(dāng)包含一個(gè)Web頁編輯器。

· ADO.NET—— 由Microsoft編寫的類(代碼)的集合,作為數(shù)據(jù)存儲(chǔ)(例如Access或者XML文件)和數(shù)據(jù)使用者(例如ASP頁面)之間的中間件。

· 連接—— 一個(gè)ADO對(duì)象,表示數(shù)據(jù)使用者和數(shù)據(jù)提供程序之間的惟一路徑。

· 命令—— 一個(gè)ADO對(duì)象,表示一條可以被傳遞給數(shù)據(jù)庫的SQL語句。

· 參數(shù)—— 一個(gè)ADO對(duì)象,表示在語句進(jìn)入數(shù)據(jù)庫之前可以被插入Common Object(SQL語句)中的多個(gè)數(shù)據(jù)。

· DataSet—— 一個(gè)ADO對(duì)象,表示集成至記錄或字段中的一組數(shù)據(jù)。

· 服務(wù)器控件—— 一組獨(dú)立的代碼(一個(gè)對(duì)象),用于在服務(wù)器上執(zhí)行任務(wù),生成兼容HTML的并且發(fā)送至瀏覽器的頁面。通過ViewState,服務(wù)器端控件可以維持其狀態(tài)。

· 數(shù)據(jù)源控件—— 一種服務(wù)器端控件,可以創(chuàng)建專門的、惟一的數(shù)據(jù)庫連接。它提供了ADO對(duì)象的一種抽象并且使得編寫ASP.NET 2.0頁面更加快速和容易。數(shù)據(jù)源控件可用于Microsoft SQL Server、Access、XML以及其他數(shù)據(jù)源。

· 數(shù)據(jù)綁定控件—— 一種服務(wù)器端控件,可以從數(shù)據(jù)源控件中獲得數(shù)據(jù)并在頁面上呈現(xiàn)它。數(shù)據(jù)綁定控件將程序員從編寫諸如〈 table 〉的HTML標(biāo)記中解脫出來。數(shù)據(jù)綁定控件可用于呈現(xiàn)表格、列表、樹型以及其他結(jié)構(gòu)。

【編輯推薦】

  1. ASP.NET環(huán)境下的Shell函數(shù)
  2. 在ASP.NET中向數(shù)據(jù)庫批量插入數(shù)據(jù)
  3. ASP.NET用Post方式向網(wǎng)頁發(fā)送數(shù)據(jù)
  4. ASP.NET 2.0部署WEB應(yīng)用程序淺析
  5. ASP.NET中的HttpWorkerRequest對(duì)像
  6. 介紹ASP.NET MVC框架
責(zé)任編輯:冰荷 來源: it55
相關(guān)推薦

2009-07-29 15:38:01

2015-06-11 14:57:23

ASP.NET 5

2009-07-24 10:14:22

ASP.NET開發(fā)

2009-07-27 09:55:28

2009-07-27 17:38:30

WCF服務(wù)ASP.NET 3.5

2009-07-28 16:42:02

ViewState技術(shù)ASP.NET應(yīng)用

2009-02-01 13:57:53

ASP.NET.NET圖表控件

2009-08-05 10:36:08

開發(fā)ASP.NET

2009-08-04 10:43:59

ASP.NET控件開發(fā)

2009-12-23 13:42:08

ASP.NET事務(wù)

2009-07-27 17:20:05

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET

2009-07-28 17:17:19

ASP.NET概述

2009-05-11 13:48:00

ASP.NET 2.0緩存效率

2009-08-05 15:01:04

ASP.NET應(yīng)用Vi

2009-07-21 17:09:47

ASP.NET多線程

2010-06-23 15:44:03

ASP.NET MVC

2009-08-10 18:24:29

ASP.NET開發(fā)環(huán)境

2009-08-04 16:33:50

ASP.NET移動(dòng)開發(fā)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 免费视频一区二区 | 中文字幕第十一页 | 久热精品在线播放 | 国产精品精品视频 | 特级特黄特色的免费大片 | 欧美中文视频 | 夜夜撸av | 九色在线 | 亚洲精彩免费视频 | 国产精品免费av | 日韩黄色小视频 | 成人免费日韩 | 一级做a爰片性色毛片16美国 | 欧美a免费 | 亚洲欧洲国产视频 | 91精品无人区卡一卡二卡三 | av一二三区 | 成人在线中文字幕 | 日韩乱码在线 | 成人福利网| 狠狠操av | 欧美成人免费在线视频 | www.伊人.com | 在线观看国产精品一区二区 | 看片91| 国产精品夜色一区二区三区 | 日本特黄a级高清免费大片 国产精品久久性 | 久久久久香蕉视频 | 国产精品av久久久久久毛片 | 国产精品免费一区二区三区 | 久久一级| 国产视频1区 | 91综合在线观看 | 久久亚洲国产精品 | 99久久婷婷国产精品综合 | 亚洲精品1区| 一区二区三区国产 | 国产一区二区在线免费观看 | 韩日在线 | 在线免费观看黄色 | 日韩欧美国产一区二区 |