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

首頁(yè) > 編程 > .NET > 正文

ASP.NET立即上手教程(13)_.Net教程

2024-07-10 12:50:17
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

推薦:ASP.NET立即上手教程(12)
數(shù)據(jù)訪問(wèn)和定制模板控件介紹前面幾個(gè)章節(jié)演示的DataGrid控件,對(duì)于許多需要使用類似表格那樣來(lái)展示數(shù)據(jù)的web應(yīng)用程序來(lái)說(shuō)是非常適合的。但許多時(shí)候,需要用更豐富的形式來(lái)顯示數(shù)據(jù)。Asp.n

利用商務(wù)對(duì)象來(lái)工作

在商務(wù)組件中封裝邏輯是實(shí)際應(yīng)用程序,比如基于web的應(yīng)用以及其他應(yīng)用中,必不可少的部分。在ASP.NET中,商務(wù)對(duì)象是多層WEB應(yīng)用程序內(nèi)建的塊。

應(yīng)用程序的 /Bin目錄

在傳統(tǒng)的ASP應(yīng)用程序中使用COM組件的時(shí)候有一個(gè)問(wèn)題,那就是這些組件在使用前必須被注冊(cè)(典型的做法是使用regsvr32工具)。遠(yuǎn)程管理這種類型的的應(yīng)用程序很不現(xiàn)實(shí),因?yàn)樽?cè)工具必須在本地服務(wù)器運(yùn)行。更麻煩的是,這些組件一旦被應(yīng)用程序加載,就在磁盤(pán)上保持鎖定狀態(tài)。要想替換或者移去他們,整個(gè)web服務(wù)器必須停止。

ASP.NET試圖通過(guò)允許將組件放置在眾所周知的目錄中,在運(yùn)行時(shí)被自動(dòng)找到來(lái)解決這些問(wèn)題。這個(gè)眾所周知的目錄通常叫做 /bin ,直接位于應(yīng)用程序的根目錄(由IIS定義的虛擬目錄)下。這樣的好處在于ASP.NET應(yīng)用程序使用組件時(shí)不需要注冊(cè)---僅僅需要將組件復(fù)制到 /Bin目錄或者通過(guò)FTP上傳到/Bin目錄。

除了提供“零注冊(cè)”的方法來(lái)部署編譯過(guò)的組件外,ASP.NET不要求這些組件在運(yùn)行時(shí)在磁盤(pán)上保持鎖定。其內(nèi)幕是,ASP.NET將這些在/Bin目錄中找到的匯編文件進(jìn)行復(fù)制,并替換成裝載這些“影子”副本來(lái)使用。原始的組件甚至可以在Web服務(wù)器運(yùn)行的過(guò)程中被替換,/Bin目錄的變化情況自動(dòng)被運(yùn)行時(shí)刻獲得。當(dāng)檢測(cè)到變化的時(shí)候,ASP.NET允許當(dāng)前執(zhí)行的請(qǐng)求完成,并且指揮所有新的請(qǐng)求使用新的組件。

引入商務(wù)對(duì)象

從底層來(lái)說(shuō),商務(wù)組件僅僅是一個(gè)類,你可以從引入它的Web頁(yè)面來(lái)創(chuàng)建或者實(shí)例化它。下面的例子定義了一個(gè)簡(jiǎn)單的HelloWorld類。該類有一個(gè)公共的構(gòu)造器(當(dāng)一個(gè)類的實(shí)例第一次被創(chuàng)建的時(shí)候它被執(zhí)行),一個(gè)叫做FirstName的String屬性,以及一個(gè)使用FirstName的屬性來(lái)顯示問(wèn)候的SayHello方法。

以下為引用的內(nèi)容:

using System;
using System.Text;

namespace HelloWorld {
public class HelloObj {
private String _name;

public HelloObj() {
_name = null;

}

public String FirstName {
get {
return _name;
}
set {
_name = value;
}
}

public String SayHello() {
StringBuilder sb = new StringBuilder("Hello ");
if (_name != null)
sb.Append(_name);
else
sb.Append("World");

sb.Append("!");
return sb.ToString();
}
}
}

為了編譯這個(gè)類,C#編譯器(Csc.exe)需要從命令行執(zhí)行。/t 選項(xiàng)通知編譯器創(chuàng)建一個(gè)類庫(kù)(DLL), /out 選項(xiàng)通知編譯器將編譯結(jié)果放在什么位置。在本例中,應(yīng)用程序的/bin目錄在本教程的"aspplus" 虛擬目錄下。并且假定命令行可以在實(shí)例所在目錄下運(yùn)行,即.../QuickStart/AspPlus/Samples/WebForms/Busobjs目錄下運(yùn)行。

csc /t:library /out:../../../../bin/HelloObj.dll HelloObj.cs

對(duì)于Visual Basic, 等價(jià)的編譯命令是:

vbc /t:library /out:../../../../bin/HelloObjVB.dll HelloObj.vb

對(duì)于JScript, 等價(jià)的編譯命令是:

jsc /out:../../../../bin/HelloObjJS.dll HelloObj.js

現(xiàn)在這個(gè)組件可以被應(yīng)用程序中需要使用它的任何頁(yè)面使用了。下面的HelloObj.aspx說(shuō)明了這個(gè)功能。

注意頁(yè)面上面的Import指令指定了要包含的名稱空間。一旦使用這條命令包含了名稱空間,就可以在這個(gè)頁(yè)面中使用名稱空間中定義的類了。下面的命令例示了Import指令

<%@ Import Namespace="HelloWorld" %>

缺省情況下,當(dāng)應(yīng)用程序啟動(dòng)的時(shí)候,ASP.NET 從/Bin目錄載入所有的匯編文件。匯編文件的載入通過(guò)配置系統(tǒng)來(lái)指定。詳細(xì)情況請(qǐ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)用程序運(yùn)行的范圍之內(nèi)。這就意味著,同等的應(yīng)用程序可以潛在的使用不同的包含具有相同類名或者名稱空間的匯編文件,而無(wú)需配置。

一個(gè)簡(jiǎn)單的兩層WEB頁(yè)面

本例中外部組件使用的類用來(lái)執(zhí)行數(shù)據(jù)訪問(wèn)。這就簡(jiǎn)化了頁(yè)面的代碼,提高了可讀性,并且從系統(tǒng)功能中分離了用戶接口邏輯。下面的例子演示了一個(gè)簡(jiǎn)單的兩層WEB頁(yè)面,它使用了數(shù)據(jù)訪問(wèn)組件來(lái)取得產(chǎn)品的信息。

數(shù)據(jù)訪問(wèn)組件中的構(gòu)造器帶有一個(gè)參數(shù),用來(lái)指定產(chǎn)品數(shù)據(jù)庫(kù)的連接字符串。WEB頁(yè)面調(diào)用組件的GetCategories方法來(lái)組裝下拉列表,調(diào)用組件的GetProductsForCategory方法來(lái)顯示用戶選擇的產(chǎn)品種類。

一個(gè)簡(jiǎn)單的三層WEB頁(yè)面

三層應(yīng)用程序模型對(duì)兩層模型的情況進(jìn)行擴(kuò)展,在用戶接口和數(shù)據(jù)訪問(wèn)邏輯之間包含了商務(wù)規(guī)則。這種模型允許用戶接口開(kāi)發(fā)者工作在較高的抽象層,而不是通過(guò)低層的數(shù)據(jù)訪問(wèn)組件接口直接操作數(shù)據(jù)。中間層的商務(wù)組件典型的用法是實(shí)施商務(wù)規(guī)則、確保數(shù)據(jù)庫(kù)關(guān)聯(lián)和主關(guān)鍵字約束的承兌。下面的例子使用中間組件,根據(jù)客戶端輸入的兩位數(shù)的廠商ID來(lái)計(jì)算折扣。

本章小節(jié)

1、ASP.NET 運(yùn)行時(shí)刻在著名的 /Bin目錄中查找商務(wù)對(duì)象(本地匯編文件) ,該目錄位于應(yīng)用程序的根目錄下。/Bin 目錄提供了下列的優(yōu)點(diǎn):

a.無(wú)需注冊(cè)

b.無(wú)需服務(wù)器重啟

c.沒(méi)有名稱空間的沖突

2、通過(guò)在.aspx文件中使用Import 指令,可以讓?xiě)?yīng)用程序的頁(yè)面使用匯編中的類。

3、兩層模式的應(yīng)用程序簡(jiǎn)化了頁(yè)面中的代碼,提高了可讀性,從系統(tǒng)功能中分離了用戶接口邏輯。

4、三層模式應(yīng)用程序擴(kuò)展了兩層模型,允許用戶接口開(kāi)發(fā)者工作在較高的抽象層。中間的商務(wù)組件典型的用法是實(shí)施商務(wù)規(guī)則、確保數(shù)據(jù)庫(kù)關(guān)聯(lián)和主關(guān)鍵字約束的承兌。

分享:ASP.NET立即上手教程(11)
訪問(wèn)基于XML的數(shù)據(jù)在本章的開(kāi)始曾經(jīng)提到,DataSet被設(shè)計(jì)為不依賴于實(shí)際的數(shù)據(jù)源而抽象數(shù)據(jù)。你可以通過(guò)將實(shí)例中的數(shù)據(jù)從SQL改為XML明白這一點(diǎn)。DataSet支持ReadXml方法,它使用FileStream對(duì)

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 阿城市| 璧山县| 泗洪县| 临高县| 桃源县| 库尔勒市| 吕梁市| 贡觉县| 徐闻县| 南丹县| 肇州县| 万年县| 米易县| 西吉县| 无极县| 文山县| 合川市| 佳木斯市| 贵溪市| 华宁县| 乡城县| 汨罗市| 体育| 绥化市| 攀枝花市| 敦化市| 白水县| 英山县| 晋中市| 高淳县| 通河县| 寻乌县| 新乡县| 伊春市| 丹阳市| 阜宁县| 宁陕县| 德化县| 夹江县| 多伦县| 鱼台县|