濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹

asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹

熱門(mén)標(biāo)簽:泰州手機(jī)外呼系統(tǒng)軟件 內(nèi)蒙古智能電銷(xiāo)機(jī)器人哪家強(qiáng) 杭州智能電話(huà)機(jī)器人 濟(jì)源人工智能電話(huà)機(jī)器人價(jià)格 山東防封電銷(xiāo)卡辦理套餐 怎樣在地圖標(biāo)注消火栓圖形 廈門(mén)四川外呼系統(tǒng) 地圖標(biāo)注位置多的錢(qián) 百度地圖標(biāo)注點(diǎn)擊事件

      asp.net中的服務(wù)端包括指令簡(jiǎn)單點(diǎn)就是一個(gè)!-- #include file|virtual="filename" –>這樣的指令,msdn中的名詞解釋是:將指定文件的內(nèi)容插入 ASP.NET 文件中,包括網(wǎng)頁(yè)(.aspx 文件)、用戶(hù)控件文件(.ascx 文件)和 Global.asax 文件。插入靜態(tài)文件這個(gè)基本功能就不說(shuō)了,插入aspx、ascx,這功能算是挺強(qiáng)了,asax哥就有點(diǎn)困惑了,這個(gè)暫且不管,今天要說(shuō)的就是這個(gè)指令。

尷尬的存在
     服務(wù)器端包括指令在web的開(kāi)發(fā)技術(shù)中肯定是個(gè)標(biāo)配了。asp.net前身asp中就已經(jīng)有了這個(gè)指令,做為唯一一個(gè)引用外部文件的指令,入門(mén)的開(kāi)發(fā)人員都應(yīng)該使用過(guò);php中的include、require,幾乎用濫了,曾經(jīng)使用過(guò)一段php,這指令常用的不能再常用了;jsp沒(méi)過(guò)開(kāi)發(fā)經(jīng)驗(yàn),搜索了下,也有這個(gè)include指令,使用情況應(yīng)該也很平常。但是asp.net中的include幾乎是在被遺忘的角落里,讀過(guò)的asp.net的書(shū)里,很少會(huì)提到它。因此,對(duì)于沒(méi)有asp開(kāi)發(fā)經(jīng)驗(yàn)直接學(xué)習(xí)asp.net的來(lái)說(shuō),可能要本不知道它的存在。為什么??

     造成尷尬存在原因之一,就是webform中最重要的功能之一:用戶(hù)控件。為什么要使用include,是因?yàn)楸灰玫膬?nèi)容會(huì)在很多地方被使用到--重用,例如頁(yè)頭、頁(yè)腳、網(wǎng)站功能塊。而恰恰用戶(hù)控件就是為此而生,它天生可重用的特性,及強(qiáng)大的控件事件流程,就如MSDN中所說(shuō):
     “盡管您仍然可以使用 #include 標(biāo)記(通過(guò)將公共服務(wù)器端代碼、控件或 HTML 標(biāo)記放入要包括在其他網(wǎng)頁(yè)中的文件內(nèi))以實(shí)現(xiàn)代碼重用,ASP.NET 常用的首選方法是使用 Web 用戶(hù)控件。用戶(hù)控件提供了一個(gè)面向?qū)ο蟮木幊棠P?,并且提供了比服?wù)器端包含文件更多的功能?!?BR>微軟都不待見(jiàn)它了,緊接著,include也被開(kāi)發(fā)人員打入冷宮,但是,請(qǐng)不要忘記,它存在。

include詳解
       說(shuō)是詳解,其實(shí)不打算在這里詳解,請(qǐng)參見(jiàn):服務(wù)器端包括指令語(yǔ)法。語(yǔ)法、用法、示例什么的,這里也不說(shuō),大家自己去看或自己試驗(yàn)吧。

include優(yōu)勢(shì)
       說(shuō)到優(yōu)勢(shì),肯定要有個(gè)比較的對(duì)象了,對(duì)了,這個(gè)對(duì)象就是用戶(hù)控件。用戶(hù)控件是啥玩意,不解釋。

優(yōu)勢(shì)之一:靜態(tài)文件的重用。

用戶(hù)控件功能強(qiáng)大,但是即使是簡(jiǎn)單如靜態(tài)內(nèi)容以用戶(hù)控件的形式實(shí)現(xiàn),它也必須經(jīng)歷用戶(hù)控件的生命周期,相比性能就差了。

你可能會(huì)說(shuō),現(xiàn)如今網(wǎng)站又有多少還能是純靜態(tài)的內(nèi)容呢,譬如頁(yè)腳,那些項(xiàng)肯定也是網(wǎng)站CMS后臺(tái)管理的,怎么可能以靜態(tài)文件的形式存在,只能使用用戶(hù)控件,并且給用戶(hù)控件加上outputcache,這樣即保證了靈活性,性能也能有保證,這樣才是最完美的。

不錯(cuò),第一,不同的項(xiàng)目不同的需求,肯定有些時(shí)候就是會(huì)引用靜態(tài)內(nèi)容,這時(shí)要保證使用這些靜態(tài)內(nèi)容以靜態(tài)的形式存在,不要放到用戶(hù)控件里。第二,網(wǎng)站的優(yōu)化,無(wú)論何時(shí),總有一種觀(guān)點(diǎn),就是靜態(tài)化,例如上邊的頁(yè)腳,我們可以通過(guò)生成一個(gè)靜態(tài)的頁(yè)腳文件,當(dāng)CMS對(duì)這些項(xiàng)有修改時(shí),重新生成這個(gè)文件,然后通過(guò)include方式引用,相對(duì)于緩存的不可預(yù)測(cè)性和一定的不可控性,優(yōu)勢(shì)比用戶(hù)控件還要靈活,并且性能更好。第三,協(xié)作,就是對(duì)于比較大型的網(wǎng)站,頁(yè)面某些控件,但是這些數(shù)據(jù)是其它團(tuán)隊(duì)負(fù)責(zé)的,而一些相對(duì)穩(wěn)定的內(nèi)容或者對(duì)變化不太敏感的內(nèi)容,生成靜態(tài)文件之后自動(dòng)分發(fā),而對(duì)于這些文件的引用也是很常見(jiàn)的。

其實(shí)這個(gè)也可能是唯一的include的優(yōu)勢(shì)了。

優(yōu)勢(shì)之二,可穿透的封裝。

可重用的東西一般都是封裝的。用戶(hù)控件是一個(gè)獨(dú)立的個(gè)體,它寄宿于頁(yè)面,但本身卻像是頁(yè)面上一個(gè)自由王國(guó),碰到王國(guó)內(nèi)部的處理,頁(yè)面會(huì)把處理權(quán)交給控件自己的去處理,例如頁(yè)面page_load加載時(shí),碰到控件只能調(diào)用控件提供的load處理方法,這就是控件的封裝,只有自身愿意公開(kāi)的屬性和方法才能被頁(yè)面訪(fǎng)問(wèn),這是標(biāo)準(zhǔn)的封裝,這也是由asp.net的頁(yè)面生命周期決定的。因此,如果控件要使用寄宿頁(yè)面的一個(gè)變量,那么它應(yīng)該公開(kāi)一個(gè)屬性,然后由頁(yè)面在代碼里主動(dòng)給它賦值。

同樣的,不同的機(jī)制決定了不同的行為。從MSDN中:

賦予 File 或 Virtual 特性的值必須用引號(hào) ("") 括起來(lái)。在執(zhí)行任何動(dòng)態(tài)代碼之前處理被包含的文件。

重要的一句,在執(zhí)行任何動(dòng)態(tài)代碼之前處理被包含的文件。這句話(huà)什么意思??

一層意思就是說(shuō)被包含文件在被處理之后內(nèi)容才會(huì)加入到頁(yè)面中,動(dòng)態(tài)代碼執(zhí)行時(shí),執(zhí)行的代碼根本就區(qū)分不出來(lái)這塊內(nèi)容是引用的還是自己本來(lái)就有的,也就是說(shuō)我們可以用來(lái)重用的靜態(tài)文件里加入% 代碼 %> 或者%= 頁(yè)面變量 %> 這樣的代碼,它們會(huì)被頁(yè)面處理為相應(yīng)的內(nèi)容。這就是我所謂的“可穿透的封裝”。這種方法當(dāng)然比控件公開(kāi)屬性,頁(yè)面主動(dòng)賦值要更靈活。

二層意思如果引用的aspx或ascx,那么會(huì)在引用的動(dòng)態(tài)內(nèi)容執(zhí)行輸出之后,頁(yè)面代碼才會(huì)執(zhí)行,這樣就不如用戶(hù)控件調(diào)用將流程在頁(yè)面內(nèi)好了,盡量不要使用include引用動(dòng)態(tài)頁(yè)面。

因此我們應(yīng)只用include引用靜態(tài)文件,但是靜態(tài)文件里可以包含服務(wù)端標(biāo)記代碼。

      知無(wú)不言,但怎奈能力有限,詞不達(dá)意,就當(dāng)拋磚引玉吧。大家盡量看,不過(guò)可以肯定的是可以以靜態(tài)文件存在的重用就用include吧。可能還會(huì)有其它更適合的使用場(chǎng)景和更多的優(yōu)勢(shì),還請(qǐng)有充分經(jīng)驗(yàn)的補(bǔ)充。

您可能感興趣的文章:
  • .NET框架中間語(yǔ)言IL指令大全
  • .net 預(yù)處理指令符的使用詳解

標(biāo)簽:喀什 百色 周口 朔州 洛陽(yáng) 朝陽(yáng) 新鄉(xiāng) 臺(tái)州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹》,本文關(guān)鍵詞  asp.net,服務(wù)器,端,指令,include,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于asp.net服務(wù)器端指令include的使用及優(yōu)勢(shì)介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    外汇| 思南县| 晋宁县| 章丘市| 中方县| 大安市| 铜鼓县| 花垣县| 噶尔县| 焦作市| 蒙阴县| 河西区| 竹溪县| 汝阳县| 南开区| 乐平市| 铜鼓县| 台北市| 太和县| 新兴县| 大石桥市| 蓬安县| 云和县| 庐江县| 灵山县| 衡水市| 靖州| 台安县| 柘城县| 田东县| 古丈县| 文昌市| 英德市| 酒泉市| 金华市| 资源县| 区。| 苏尼特左旗| 长寿区| 昭觉县| 四平市|