国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET中新的代碼編譯功能(一)

2024-07-10 12:56:15
字體:
供稿:網(wǎng)友

最大的網(wǎng)站源碼資源下載站,

摘要:了解如何利用 asp.net whidbey 更輕松地使用代碼。code 目錄會自動為您的站點編譯代碼,而預(yù)編譯會使部署工作更容易。

下載本文的源代碼。(請注意,在示例文件中,程序員的注釋使用的是英文,本文中將其譯為中文是為了便于讀者理解。)


簡介

即將推出的新版 microsoft® asp.net 介紹了大量新功能和改進(jìn)功能,它的代號為 asp.net whidbey,是根據(jù)新版 microsoft® visual studio® .net 的代號命名的。其中的某些功能利用了基礎(chǔ) microsoft® .net framework 版本(asp.net whidbey 就是基于該版本構(gòu)建的)中的新功能。在這些功能當(dāng)中,最有用的功能集之一與代碼編譯有關(guān)。本文介紹 asp.net whidbey 編譯模型的主要更改、這些更改對編寫 asp.net 應(yīng)用程序的影響,以及如何利用這些更改。

改進(jìn)的功能和新的編譯功能可以分為以下四個基本方面:

1.對模塊化代碼模型的改進(jìn)。
2.新的 code 目錄。
3.新增的對預(yù)編譯 asp.net 應(yīng)用程序的支持。
4.microsoft® intellisense® 增強(qiáng)功能。

新的模塊化代碼模型

默認(rèn)情況下,使用 visual studio .net 2002 或 2003 開發(fā)的站點使用一種稱為“模塊化代碼”的功能將可視元素(html 標(biāo)記、控件等)從與 ui 相關(guān)的編程邏輯中分離開來。當(dāng)開發(fā)人員創(chuàng)建一個新 web 窗體(例如 foo.aspx)時,visual studio 會自動創(chuàng)建一個相關(guān)的 codebehind 類文件,該文件名稱的前一部分與 web 窗體相同,后面是 .vb 或 .cs(取決于項目使用的語言)。類文件將通過 @ page 指令的 codebehind 和 inherits 屬性與 web 窗體相關(guān)聯(lián)。

類文件包含事件處理代碼(包括用于將事件處理程序綁定到相應(yīng)事件的代碼),以及每個控件(通過 visual studio web 窗體編輯器添加到 .aspx 文件中)的分離聲明。編譯(生成)web 應(yīng)用程序項目后,其中的所有 codebehind 類都將編譯到一個 .net 程序集中,該程序集將放置到 web 應(yīng)用程序的 /bin 目錄中。web 窗體頁本身會在運行時動態(tài)進(jìn)行編譯,并且每個 web 窗體均繼承自與其相關(guān)的 codebehind 類。

雖然最初的模塊化代碼模型理論上不錯(誰不希望將 ui 元素與編程邏輯相分離呢?),但它還是有一些缺點:

·需要重新生成。在 visual studio .net 中,運行時不會自動編譯 codebehind 類,因此對 codebehind 類的任何更改都需要重新生成整個項目以應(yīng)用這些更改。(請注意,您可以通過 @ page 指令的 src 屬性指定對模塊化代碼文件進(jìn)行動態(tài)編譯,但默認(rèn)情況下 visual studio .net 不會執(zhí)行此操作。)

·共享開發(fā)問題。由于項目中的所有 codebehind 類都編譯到了一個程序集中,所以很難讓多個開發(fā)人員同時開發(fā)一個項目而不會遇到瓶頸問題。

·代碼易被破壞。控件同時通過聲明(在 .aspx 頁面中)和編程(在 codebehind 類中)的方式存在,如果這兩組控件沒有正確同步,很容易使代碼遭到破壞。

·復(fù)雜程度增加,而且缺少單文件支持。在 visual studio .net 中,很多用于提高生產(chǎn)率的功能(包括 intellisense 語句完成)都需要使用模塊化代碼。遺憾的是,這些功能通常會在 codebehind 類中添加大量相對復(fù)雜的代碼,這就產(chǎn)生了代碼易被破壞的問題,因為更改 visual studio .net 插入的代碼很容易破壞頁面。

了解到這些缺點后,負(fù)責(zé)開發(fā) asp.net 和 visual studio .net whidbey 的小組決定重新考慮模塊化代碼模型。新的模塊化代碼模型利用了 microsoft® visual basic® .net 和 c# 中稱為局部類(在 c# 中稱為局部類型)的新功能。局部類使您能夠在多個文件中定義一個類的不同部分。編譯時,由編譯器將這些部分再組合到一起。asp.net whidbey 使用 @ page 指令中新的 compilewith 和 classname 屬性來標(biāo)識要與 .aspx 頁面結(jié)合的 codebehind 局部類。通過利用局部類,再進(jìn)行一些其他更改,asp.net 小組可以實現(xiàn)以下目的:

·無需在 codebehind 類中編寫控件聲明和事件綁定代碼(在控件聲明中通過聲明的方式綁定事件)。

·允許運行時同時對 web 窗體頁和 codebehind 類進(jìn)行動態(tài)編譯,無需再為細(xì)微的更改而重新生成整個項目。

·減少共享開發(fā)中的文件爭用現(xiàn)象。

·對于使用模塊化代碼文件的開發(fā)人員以及喜歡單文件開發(fā)(所有代碼和標(biāo)記均包含在 .aspx 文件中)的開發(fā)人員,均可獲得相同的 ide 體驗。

下面給出了模塊化代碼模型更改前后的不同視圖。以下代碼只是在使用模塊化代碼添加新的 web 窗體(在 visual studio .net whidbey 中稱之為具有代碼分隔的 web 窗體)時,由 visual studio 創(chuàng)建的默認(rèn)代碼:

visual studio .net 2002/2003webform1.aspx:<%@ page language="vb" autoeventwireup="false"  codebehind="webform1.aspx.vb" inherits="testwebapp_121602.webform1"%><!doctype html public "-//w3c//dtd html 4.0 transitional//en"><html>  <head>    <title>webform1</title>    <meta name="generator" content="microsoft visual studio .net 7.1">    <meta name="code_language" content="visual basic .net 7.1">    <meta name=vs_defaultclientscript content="javascript">    <meta name=vs_targetschema      content="http://schemas.microsoft.com/intellisense/ie5">  </head>  <body ms_positioning="gridlayout">    <form id="form1" method="post" runat="server">   </form>  </body></html>webform1.aspx.vb:public class webform1    inherits system.web.ui.page#region " web 窗體設(shè)計器生成的代碼 "    '此調(diào)用是 web 窗體設(shè)計器所必需的。    <system.diagnostics.debuggerstepthrough()> _    private sub initializecomponent()    end sub    '注意:以下占位符聲明是     'web 窗體設(shè)計器所必需的。    '請勿刪除或改變其位置。    private designerplaceholderdeclaration as system.object    private sub page_init(byval sender as system.object, _        byval e as system.eventargs) handles mybase.init        'codegen:此方法調(diào)用是 web 窗體設(shè)計器所必需的。        '請勿使用代碼編輯器修改它。        initializecomponent()    end sub#end region    private sub page_load(byval sender as system.object, _        byval e as system.eventargs) handles mybase.load        '此處放置用于初始化該頁面的用戶代碼    end subend class


visual studio .net whidbey

default.aspx:

<%@ page language="vb" compilewith="default.aspx.vb"  classname="asp.default_aspx" %><html><head runat="server">    <title>無標(biāo)題頁</title></head><body>    <form runat="server">    </form></body></html>


default.aspx.vb:

imports microsoft.visualbasicnamespace aspexpands class default_aspxend classend namespace


從上面的示例可以清楚地看到,由 visual studio .net whidbey 生成的代碼更加清晰、易讀。無需犧牲拖放功能或 intellisense 來實現(xiàn)此目的。

/code 目錄

asp.net whidbey 中的另一個非常酷且實用的新功能是增加了 /code 目錄。/code 目錄與 /bin 目錄類似,是 asp.net 使用的一個特殊目錄,但它與 /bin 目錄又有所不同:/bin 目錄用于存儲由應(yīng)用程序使用的預(yù)編譯程序集,而 /code 目錄用于存儲要在運行時進(jìn)行動態(tài)編譯的類文件。這使您可以將業(yè)務(wù)邏輯組件、數(shù)據(jù)訪問組件以及其他組件的類存儲在應(yīng)用程序中的某個位置,并從任意頁面使用這些類。因為這些類是在運行時動態(tài)編譯的,而且會被包含 /code 目錄的應(yīng)用程序自動引用,所以在部署項目之前不需要生成項目,也不需要明確添加類引用。您可以放心地對組件進(jìn)行更改,然后使用簡單的 xcopy 或拖放操作進(jìn)行部署。除了簡化組件的部署和引用外,/code 目錄還極大地簡化了本地化過程中使用的資源文件 (.resx) 的創(chuàng)建和訪問過程,以及為 wsdl 文件 (.wsdl) 自動生成和編譯代理類的過程。為了更好地說明上述操作的實現(xiàn)過程,讓我們先來看幾個示例。在第一個示例中,我們將看到如何創(chuàng)建一個簡單的業(yè)務(wù)組件,以及如何從 web 窗體頁對其進(jìn)行訪問。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 唐山市| 班戈县| 林甸县| 岳普湖县| 湖口县| 冀州市| 禹州市| 贵港市| 阜康市| 梁平县| 公安县| 阳原县| 朔州市| 江达县| 尼玛县| 平南县| 英吉沙县| 延津县| 繁昌县| 濮阳县| 黄大仙区| 红安县| 乌拉特前旗| 南漳县| 吕梁市| 花垣县| 赤壁市| 昌邑市| 酉阳| 鹤峰县| 宜城市| 广灵县| 桑植县| 嘉兴市| 泾源县| 荆州市| 东乡| 山东省| 呼玛县| 招远市| 长沙市|