777精品久无码人妻蜜桃-欧美在线观看视频一区-99精品网-伊人网中文字幕-99福利网-国产精品99久久久久久武松影视-日本黄色片免费看-免费观看高清在线观看-人妻少妇被粗大爽9797pw-日韩国产在线播放-国产日产成人免费视频在线观看-一区二区人妻-午夜看毛片-国产精品s-午夜免费av-国产精品色情国产三级在-国产精品资源在线

ASP.Net程序構(gòu)架與程序代碼分離學(xué)術(shù)期刊網(wǎng)

來(lái)源:期刊VIP網(wǎng)所屬分類:結(jié)業(yè)論文時(shí)間:瀏覽:次

  摘要:ASP.NET是.NET FrameWork的一部分,是一項(xiàng)微軟公司的技術(shù),是一種使嵌入網(wǎng)頁(yè)中的腳本可由因特網(wǎng)服務(wù)器執(zhí)行的服務(wù)器端腳本技術(shù),它可以在通過(guò)HTTP請(qǐng)求文檔時(shí)再在Web服務(wù)器上動(dòng)態(tài)創(chuàng)建它們。文章發(fā)表在《中國(guó)信息技術(shù)教育雜志》上,是畢業(yè)研究生論文范文,供同行參考。

  關(guān)鍵詞:ASP.Net,程序構(gòu)架,程序代碼,代碼分離

  ASP .NET的前身ASP技術(shù),是在IIS2.0上首次推出(Windows NT 3.51),當(dāng)時(shí)與 ADO 1.0 一起推出,在IIS 3.0 (Windows NT 4.0)發(fā)揚(yáng)光大,成為服務(wù)器端應(yīng)用程序的熱門開(kāi)發(fā)工具,微軟還特別為它量身打造了VisualInter Dev開(kāi)發(fā)工具,在1994年到2000年之間,ASP技術(shù)已經(jīng)成為微軟推展Windows NT 4.0平臺(tái)的關(guān)鍵技術(shù)之一,數(shù)以萬(wàn)計(jì)的ASP網(wǎng)站也是這個(gè)時(shí)候開(kāi)始如雨后春筍般的出現(xiàn)在網(wǎng)絡(luò)上。

  一年前,當(dāng)本人拿到一個(gè)名叫TWIG的PHP程序時(shí),立即被作者OOP編程思想所折服,很難想像TWIG中所有的功能(行事歷、郵件、個(gè)性化)均在一個(gè)PHP文件(index.php3)中執(zhí)行完成,這就得益于作者采用了程序代碼與頁(yè)面構(gòu)架分離的思想,但是我也看到盡管作者做了很大的努力,但由于PHP的局限性,程序并沒(méi)有真正做到代碼與構(gòu)架的分離。

  index.php3這個(gè)主文件由于要執(zhí)行的功能太多,所以其require的模塊文件相當(dāng)之多,至使整個(gè)文件依然顯得十分零亂,本人愚昧,當(dāng)時(shí)花了半個(gè)月的時(shí)間,才真正明白程序的構(gòu)架,分析代碼之苦,無(wú)人能知啊(黯然淚下......)。

  TWIG程序?qū)ξ掖撕蟮木幊逃兄艽蟮挠绊?,但是即使這樣的作品,依然沒(méi)有擺脫程序代碼與HTML代碼混雜的局面。

  程序代碼與頁(yè)面構(gòu)架的分離是WEB程序員多年的夢(mèng)想。在A.Net出現(xiàn)之前,無(wú)論是A、PHP還是J,程序代碼與HTML代碼都是混雜在一起的,這種做法,雖然在WEB技術(shù)初期受到贊揚(yáng),但是隨著時(shí)間的的推移,它的弊端是越來(lái)越明顯,當(dāng)程序代碼很長(zhǎng)時(shí),HTML代碼與其混雜,程序的可讀性變得很差,讓人無(wú)法分清程序真正要表示的頁(yè)面構(gòu)架。

  而新技術(shù)A.Net則通過(guò)Codebehind、用戶控件(UserControl)以及自定義控件(CustomControl)等方法真正做到了代碼的分離。這是一個(gè)了不起的進(jìn)步,大家可以在本文中看到分離代碼后的A.Net程序的結(jié)構(gòu)是多么的清晰。

  為了便于理解,這里設(shè)計(jì)的頁(yè)面比較簡(jiǎn)單,頁(yè)面分為三個(gè)主要的部分,頭部包含一個(gè)AdRotator控件(用于顯示廣告)與一個(gè)Label控件(用于顯示當(dāng)前廣告鏈接地址);中部是一個(gè)登陸頁(yè)面,包括兩個(gè)TextBox控件(分別用于輸入用戶名與密碼)、一個(gè)Label控件(顯示登陸是否成功)與一個(gè)Button控件(作為提交按鈕);底部包含兩個(gè)Label控件(分別顯示當(dāng)前用戶名與用戶權(quán)限)。

  熟悉A.Net的朋友,馬上就會(huì)意識(shí)到頭部由于使用了AdRotator控件,所以必定存在OnAdCreated事件以便在Label控件顯示相應(yīng)鏈接;而中部由于使用Button控件做為提交按鈕,所以必定有一個(gè)OnClick事件處理。

  1CodeBehind

  首先我們就看看如何使用CodeBehind方法來(lái)實(shí)現(xiàn)代碼與頁(yè)面構(gòu)架的分離,下面給出的源程序是主A.Net程序--Example1.ax:

  當(dāng)前廣告鏈接:

  用戶名:

  密碼:

  用戶名:

  權(quán)限:

  例程中,大家可以清楚地看到程序中不包含任何C#、VB、javascript來(lái)處理OnAdCreated與OnClick事件,但是執(zhí)行本程序,程序能夠正常使用(如圖2-1與圖2-2)。這便是使用CodeBehinde的結(jié)果,事件處理已經(jīng)被轉(zhuǎn)移到其它程序中定義執(zhí)行。請(qǐng)大家注意本例中第一行的信息:

  一般在A.Net程序中,Page指令都在設(shè)定本程序應(yīng)當(dāng)使用什么語(yǔ)言(使用Language屬性),而本例中沒(méi)有出現(xiàn)Language屬性,而是出現(xiàn)了兩個(gè)新的Page屬性:Src與Inherits。Src屬性設(shè)定事件處理真正的代碼位置,Inherits屬性則設(shè)定需要引入的類名??梢钥吹奖纠卸x事件處理的文件是EventHandle.cs,我們來(lái)看看它的具體內(nèi)容:usingystem;

  usingystem.Data;

  usingystem.Data.SqlClient;

  usingystem.We

  usingystem.Web.UI;

  usingystem.Web.UI.WebControl

  usingystem.Web.UI.HtmlControl

  進(jìn)行事件處理是定義在一個(gè)類中的(本例中是Acn,注意大小寫),由于需要與WeForms相關(guān)聯(lián),所以此類還必須繼承Page類。

  分析程序,大家可以看到程序中對(duì)事件的處理操作是與普通的未進(jìn)行代碼分離的程序是一樣的,并沒(méi)有什么特別的地方。(本人在程序中已經(jīng)給出的相關(guān)注釋,相信對(duì)大家理解程序有所幫助)

  使用CodeBehind技術(shù)后,大家需要多寫一些代碼,比如聲明控件等,也許大家很不喜歡多寫這樣的代碼,但是大家也必須看到使用了CodeBehind技術(shù)后,主程序的可讀性大大增加了。在Example1.ax中相信大家很快就可以區(qū)分頁(yè)面構(gòu)架的各個(gè)部分,大家想想這些構(gòu)架如果在其它技術(shù)是否能看得如此清楚?

  (這里的程序只做演示用,呵呵,大家可不要抓我什么引號(hào)漏洞這些小辮子喲)

  2用戶控件(UserControl)

  CodeBehind技術(shù)真正實(shí)現(xiàn)了代碼與構(gòu)架的分離,比以前的技術(shù)前進(jìn)了一大步,但是它的缺陷也是顯而易見(jiàn)的,比如主頁(yè)面中部那個(gè)登陸區(qū),如果內(nèi)容很多,HTML顯示代碼的依然會(huì)占用很大的區(qū)域,程序的可讀性依然會(huì)降低。

  A.Net也提供了解決辦法,這就是用戶控件。

  用戶控件我們可以將其視為不用編譯的Server控件。即然是控件,那么就肯定會(huì)遵從控件的使用方法。我們將Example1.ax中的每個(gè)Panel整體看成為一個(gè)控件,因此Example1.ax的主體部分通過(guò)使用用戶控件便可以減少為只有三行:

  執(zhí)行這個(gè)程序,其運(yùn)行結(jié)果與使用CodeBehind技術(shù)的結(jié)果是一樣的,但是現(xiàn)在的A.Net程序更加容易區(qū)分頁(yè)面構(gòu)架了。

  nameace表示定義的命名空間,cla則是相應(yīng)的類名,具體的使用例子有:

  privatevoidAdCreated(Objectrc,AdCreatedEventArge)

  {

  lblAdText.Text=e.AlternateText;

  }

  當(dāng)前廣告鏈接:

  SqlCoectioMyCo=ewqlCoection(strCotring);

  MyCo.Open();

  stringtrUserName,strPaword,strSelect;

  //登陸不成功

  用戶名:

  權(quán)限:" "當(dāng)前廣告鏈接為:"));

  //加入Label控件

  lblAdText=ewLabel();

  //添加HTML標(biāo)簽

  this.Controls.Add(newLiteralControl("//添加MsgShowLabel控件文秘114版權(quán)所有

  lblMsgShow=ewLabel()

  //登陸不成功

  上面和程序是將需要實(shí)現(xiàn)的功能,全部導(dǎo)入了自定義控件。程序中可以看到,在acn命名空間中包含三個(gè)類(Header,Logon,Footer),這三個(gè)類正是構(gòu)架三個(gè)主體部分。

  要使用自定義控件,還必須將原代碼進(jìn)行編譯。

  csc/t:library/out:acn.dll/r:System.Data.dll,System.Web.dll,System.Drawing.dllCustomControls.cs

  C#程序編譯指令的用法,本人在此也不再重復(fù)。需要注意的是編譯的文件名,必須與控件中nameace的名字一致。

  編譯后的dll,仍然不能使用,我們必須將其放到.Net平臺(tái)中最著名的目錄--/bin中,bin目錄(如果不存在,可以自行建立)存放的是當(dāng)前虛擬目錄中所有使用自定義控件以及組件,CLR在執(zhí)行A.Net程序時(shí)會(huì)自動(dòng)搜索此目錄中的文件,以找到與A.Net程序相匹配的Nameace、Cla以及Aembly。

  當(dāng)我們將程序編譯好的acn.dll放入/bin目錄后,這個(gè)自己編寫的Server控件便可以使用了。

  (需要聲明一下,由于編寫Server控件時(shí)不能使用Seion等變量,以至無(wú)法做到兩個(gè)cla之間的通信,因此在缺省狀態(tài)下Footer控件并不能像前面的程序一樣隨Seion內(nèi)容發(fā)生改變,不過(guò)可以通過(guò)普通操作Server控件的方法來(lái)操作相應(yīng)的屬性達(dá)到相同的效果,此處為節(jié)約版面,未采用)

  下面再來(lái)看看主體WeForm的程序內(nèi)容:

  怎么樣,相當(dāng)簡(jiǎn)單明了吧。

  引用我們自定義的控件,也相當(dāng)簡(jiǎn)潔,只需將Register指令的TagPrefix、Nameace、Aembly屬性全部設(shè)定為acn。

  至此,A.Net中三種代碼與頁(yè)面構(gòu)架分離的方法已經(jīng)介紹完畢。

  三種方法各有優(yōu)劣,本人比較傾向于使用用戶控件與CodeBinde技術(shù)結(jié)合使用,因?yàn)樗麄兙恍枰幾g,相對(duì)來(lái)說(shuō)更容易使用,如果您要保護(hù)你的代碼,自定義控件則當(dāng)然是您最佳的選擇。

  畢業(yè)論文學(xué)術(shù)期刊網(wǎng)雜志推薦:《中國(guó)信息技術(shù)教育雜志》創(chuàng)刊于2000年,《中國(guó)信息技術(shù)教育》雜志是國(guó)家新聞出版總署批準(zhǔn)的海內(nèi)外公開(kāi)發(fā)行的國(guó)家級(jí)刊物。是中華人民共和國(guó)教育部主管、中央電化教育館主辦的一份大型教育科研期刊,國(guó)內(nèi)外公開(kāi)發(fā)行。本刊為半月刊,主編:李維福。國(guó)內(nèi)統(tǒng)一刊號(hào):CN11-5678/TP,國(guó)際刊號(hào):ISSN1674-2117。

上蔡县| 西平县| 运城市| 卢龙县| 彭州市| 彭水| 辽中县| 三原县| 温州市| 育儿| 武城县| 长宁区| 宜宾市| 抚宁县| 辉县市| 西青区| 上蔡县| 横山县| 东方市| 曲松县| 郴州市| 平山县| 长春市| 泉州市| 翁源县| 昌宁县| 永嘉县| 罗田县| 石阡县| 鸡泽县| 靖州| 常山县| 横山县| 临泽县| 财经| 拉萨市| 原平市| 阿鲁科尔沁旗| 军事| 阿拉善盟| 安宁市|