ASP.NET立即上手教程(13)_.Net教程
推薦:ASP.NET立即上手教程(12)數(shù)據(jù)訪問和定制 模板控件介紹 前面幾個章節(jié)演示的DataGrid控件,對于許多需要使用類似表格那樣來展示數(shù)據(jù)的web應(yīng)用程序來說是非常適合的。但許多時候,需要用更豐富的形式來顯示數(shù)據(jù)。Asp.n
利用商務(wù)對象來工作
在商務(wù)組件中封裝邏輯是實際應(yīng)用程序,比如基于web的應(yīng)用以及其他應(yīng)用中,必不可少的部分。在ASP.NET中,商務(wù)對象是多層WEB應(yīng)用程序內(nèi)建的塊。
應(yīng)用程序的 /Bin目錄
在傳統(tǒng)的ASP應(yīng)用程序中使用COM組件的時候有一個問題,那就是這些組件在使用前必須被注冊(典型的做法是使用regsvr32工具)。遠程管理這種類型的的應(yīng)用程序很不現(xiàn)實,因為注冊工具必須在本地服務(wù)器運行。更麻煩的是,這些組件一旦被應(yīng)用程序加載,就在磁盤上保持鎖定狀態(tài)。要想替換或者移去他們,整個web服務(wù)器必須停止。
ASP.NET試圖通過允許將組件放置在眾所周知的目錄中,在運行時被自動找到來解決這些問題。這個眾所周知的目錄通常叫做 /bin ,直接位于應(yīng)用程序的根目錄(由IIS定義的虛擬目錄)下。這樣的好處在于ASP.NET應(yīng)用程序使用組件時不需要注冊---僅僅需要將組件復(fù)制到 /Bin目錄或者通過FTP上傳到/Bin目錄。
除了提供“零注冊”的方法來部署編譯過的組件外,ASP.NET不要求這些組件在運行時在磁盤上保持鎖定。其內(nèi)幕是,ASP.NET將這些在/Bin目錄中找到的匯編文件進行復(fù)制,并替換成裝載這些“影子”副本來使用。原始的組件甚至可以在Web服務(wù)器運行的過程中被替換,/Bin目錄的變化情況自動被運行時刻獲得。當檢測到變化的時候,ASP.NET允許當前執(zhí)行的請求完成,并且指揮所有新的請求使用新的組件。
引入商務(wù)對象
從底層來說,商務(wù)組件僅僅是一個類,你可以從引入它的Web頁面來創(chuàng)建或者實例化它。下面的例子定義了一個簡單的HelloWorld類。該類有一個公共的構(gòu)造器(當一個類的實例第一次被創(chuàng)建的時候它被執(zhí)行),一個叫做FirstName的String屬性,以及一個使用FirstName的屬性來顯示問候的SayHello方法。
| 以下為引用的內(nèi)容: using System; namespace HelloWorld { public HelloObj() { } public String FirstName { public String SayHello() { sb.Append("!"); |
為了編譯這個類,C#編譯器(Csc.exe)需要從命令行執(zhí)行。/t 選項通知編譯器創(chuàng)建一個類庫(DLL), /out 選項通知編譯器將編譯結(jié)果放在什么位置。在本例中,應(yīng)用程序的/bin目錄在本教程的"aspplus" 虛擬目錄下。并且假定命令行可以在實例所在目錄下運行,即...\QuickStart\AspPlus\Samples\WebForms\Busobjs目錄下運行。
csc /t:library /out:..\..\..\..\bin\HelloObj.dll HelloObj.cs
對于Visual Basic, 等價的編譯命令是:
vbc /t:library /out:..\..\..\..\bin\HelloObjVB.dll HelloObj.vb
對于JScript, 等價的編譯命令是:
jsc /out:..\..\..\..\bin\HelloObjJS.dll HelloObj.js
現(xiàn)在這個組件可以被應(yīng)用程序中需要使用它的任何頁面使用了。下面的HelloObj.aspx說明了這個功能。
注意頁面上面的Import指令指定了要包含的名稱空間。一旦使用這條命令包含了名稱空間,就可以在這個頁面中使用名稱空間中定義的類了。下面的命令例示了Import指令
<%@ Import Namespace="HelloWorld" %>
缺省情況下,當應(yīng)用程序啟動的時候,ASP.NET 從/Bin目錄載入所有的匯編文件。匯編文件的載入通過配置系統(tǒng)來指定。詳細情況請參閱Configuration Overview 部分。額外的匯編文件也可以使用配置文件倒入應(yīng)用程序。例如:
| 以下為引用的內(nèi)容: <configuration> <compilation> <assemblies> <!--The following assemblies are loaded explicitly from the global cache--> <add assembly="System.Data"/> <add assembly="System.Web.Services"/> <add assembly="System.Drawing"/> <!--This tells ASP.NET to load all assemblies from /bin--> <add assembly="*"/> </assemblies> </compilation> </configuration> |
注意: 從/Bin目錄裝載的匯編文件被限制在應(yīng)用程序運行的范圍之內(nèi)。這就意味著,同等的應(yīng)用程序可以潛在的使用不同的包含具有相同類名或者名稱空間的匯編文件,而無需配置。
一個簡單的兩層WEB頁面
本例中外部組件使用的類用來執(zhí)行數(shù)據(jù)訪問。這就簡化了頁面的代碼,提高了可讀性,并且從系統(tǒng)功能中分離了用戶接口邏輯。下面的例子演示了一個簡單的兩層WEB頁面,它使用了數(shù)據(jù)訪問組件來取得產(chǎn)品的信息。
數(shù)據(jù)訪問組件中的構(gòu)造器帶有一個參數(shù),用來指定產(chǎn)品數(shù)據(jù)庫的連接字符串。WEB頁面調(diào)用組件的GetCategories方法來組裝下拉列表,調(diào)用組件的GetProductsForCategory方法來顯示用戶選擇的產(chǎn)品種類。
一個簡單的三層WEB頁面
三層應(yīng)用程序模型對兩層模型的情況進行擴展,在用戶接口和數(shù)據(jù)訪問邏輯之間包含了商務(wù)規(guī)則。這種模型允許用戶接口開發(fā)者工作在較高的抽象層,而不是通過低層的數(shù)據(jù)訪問組件接口直接操作數(shù)據(jù)。中間層的商務(wù)組件典型的用法是實施商務(wù)規(guī)則、確保數(shù)據(jù)庫關(guān)聯(lián)和主關(guān)鍵字約束的承兌。下面的例子使用中間組件,根據(jù)客戶端輸入的兩位數(shù)的廠商ID來計算折扣。
本章小節(jié)
1、ASP.NET 運行時刻在著名的 /Bin目錄中查找商務(wù)對象(本地匯編文件) ,該目錄位于應(yīng)用程序的根目錄下。/Bin 目錄提供了下列的優(yōu)點:
a.無需注冊
b.無需服務(wù)器重啟
c.沒有名稱空間的沖突
2、通過在.aspx文件中使用Import 指令,可以讓應(yīng)用程序的頁面使用匯編中的類。
3、兩層模式的應(yīng)用程序簡化了頁面中的代碼,提高了可讀性,從系統(tǒng)功能中分離了用戶接口邏輯。
4、三層模式應(yīng)用程序擴展了兩層模型,允許用戶接口開發(fā)者工作在較高的抽象層。中間的商務(wù)組件典型的用法是實施商務(wù)規(guī)則、確保數(shù)據(jù)庫關(guān)聯(lián)和主關(guān)鍵字約束的承兌。
分享:ASP.NET立即上手教程(11)訪問基于XML的數(shù)據(jù) 在本章的開始曾經(jīng)提到,DataSet被設(shè)計為不依賴于實際的數(shù)據(jù)源而抽象數(shù)據(jù)。你可以通過將實例中的數(shù)據(jù)從SQL改為XML明白這一點。DataSet支持ReadXml方法,它使用FileStream對
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實例(可帶附件)
- js實現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實現(xiàn)
- Asp.Net 無刷新文件上傳并顯示進度條的實現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見代碼存在的偽造IP問題探討
- VS2010 水晶報表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(連接字符串的配置及獲取)
- asp.net頁面?zhèn)髦禍y試實例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲過程實現(xiàn)分頁示例代碼
- 相關(guān)鏈接:
- 教程說明:
.Net教程-ASP.NET立即上手教程(13)
。