狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當(dāng)前位置:系統(tǒng)之家 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

淺談Asp.net多層架構(gòu)中的變量引用與傳遞

淺談Asp.net多層架構(gòu)中的變量引用與傳遞

更新時(shí)間:2024-04-11 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

到公司已經(jīng)快兩個(gè)星期了,但是由于客戶的需求分析沒有下來,所有項(xiàng)目遲遲沒有開始。正好利用這個(gè)時(shí)間仔細(xì)研究了一下Asp.net的多層架構(gòu),主要參考的是 Wrox 的一本<.Net WebSite Programming Problem-Design-Solution>,個(gè)人覺得這本書寫的不錯(cuò)。面向有一定.net基礎(chǔ)的開發(fā)人員,剛開始看起來可能覺得很難懂,但是仔細(xì)研究一下會(huì)發(fā)現(xiàn),這本書是一本面向工程應(yīng)用的優(yōu)秀參考手冊(cè)。

Asp.net的多層架構(gòu)主要是為了解決數(shù)據(jù)層,邏輯層,表示層等之間的關(guān)系。我的做法是這樣的:首先建立一個(gè)DataCore的基類。基類里面封裝了一些低層的數(shù)據(jù)庫的基本操作,比如說數(shù)據(jù)庫聯(lián)接,調(diào)用存儲(chǔ)過程等等。在這里面有一個(gè)地方值得注意,通過對(duì)一個(gè)函數(shù)的重載可以實(shí)現(xiàn)調(diào)用不同功能的存儲(chǔ)過程。以下代碼示例:

protected int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected )
{
int result;

Connection.Open();
SqlCommand command = BuildIntCommand( storedProcName, parameters );
rowsAffected = command.ExecuteNonQuery();
result = (int)command.Parameters["ReturnValue"].Value;
Connection.Close();
return result;
}

protected SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters )
{
SqlDataReader returnReader;

Connection.Open();
SqlCommand command = BuildQueryCommand( storedProcName, parameters );
command.CommandType = CommandType.StoredProcedure;

returnReader = command.ExecuteReader();
//Connection.Close();
return returnReader;
}

protected DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName )
{
DataSet dataSet = new DataSet();
Connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildQueryCommand( storedProcName, parameters );
sqlDA.Fill( dataSet, tableName );
Connection.Close();

return dataSet;
}

protected void RunProcedure(string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName )
{
Connection.Open();
SqlDataAdapter sqlDA = new SqlDataAdapter();
sqlDA.SelectCommand = BuildIntCommand( storedProcName, parameters );
sqlDA.Fill( dataSet, tableName );
Connection.Close();
}

道理很簡(jiǎn)單,一看就懂。對(duì)于以后的操作有好處的。

其次是要建立邏輯層,這個(gè)邏輯層基本上就是實(shí)例化數(shù)據(jù)層DataCore之后為表示層返回一些DataSet,DataReader之類或是執(zhí)行一些insert,update,delete之類語句。這個(gè)邏輯層也是為了區(qū)分整個(gè)Project下面不同功能模塊。比如說用戶模塊起名叫做UserModel.cs,新聞模塊叫做NewsModel.cs之類。邏輯層的另一個(gè)好處就是可以為表示層建立可以多次實(shí)例化的同一個(gè)對(duì)象或是方法。比如說User類,通過ID或是Username 查詢并建立的對(duì)象可以被表示層多次調(diào)用。

最后是表示層,表示層的功能就是完成頁面邏輯。主要是接受客戶端數(shù)據(jù)然后經(jīng)過簡(jiǎn)單整合和判斷,傳遞給邏輯層處理。同樣,接收邏輯層傳遞來的Dataset或DataReader,表示在前臺(tái)頁面。

數(shù)據(jù)在各個(gè)層次之間的關(guān)系相對(duì)獨(dú)立,但是又相對(duì)連續(xù)。

獨(dú)立性:

對(duì)于表示層之外的幾個(gè)層,都可以把單個(gè)的對(duì)象或是方法直接拿出來放到其他工程中。因?yàn)槊總(gè)曾都是為了實(shí)現(xiàn)模型中獨(dú)立的功能而完成的。因?yàn)樵陬愃乒こ讨械膽?yīng)用基本上不用太大改動(dòng),特別是一些相對(duì)更加原始的層,在這個(gè)示例中的DataCore就是一個(gè)典型的例子。

連續(xù)性:

數(shù)據(jù)在傳遞過程中有較強(qiáng)的連續(xù)性。舉一個(gè)例子,在表示層中有這樣一個(gè)根據(jù)Session中Userid返回一個(gè)Dataset,原本我是這樣寫的:

表示層:

DataSet UserInforRow = ObjectUser.GetUserInfor(Int32.Parse(Session["UserId"].ToString()));

邏輯層:

public DataSet GetUserInfor(int UserID)
{
SqlParameter[] parameters ={new SqlParameter("@UserID",SqlDbType.Int,4)};

parameters[0].Value = UserID;

using(DataSet UserInfor = RunProcedure("GetUserInfor",parameters,"UserInfor"))
{
return UserInfor;
}
}



這樣可以編譯通過,但是在執(zhí)行的時(shí)候提示錯(cuò)誤,類型不匹配,語法上面沒有錯(cuò)誤。但是錯(cuò)誤出在,表示層傳進(jìn)來的是一個(gè)Int32,在Sqlparameter中確是一個(gè)Int,4,本來以為這樣的變量類型都是在每一個(gè)層次中相對(duì)獨(dú)立的,但是當(dāng)他們之間傳遞數(shù)據(jù)的時(shí)候,出現(xiàn)了問題。

對(duì)于這個(gè)問題的解決方案有兩種,無非是更改表示層還是更改邏輯層。更改邏輯層,就要改成

SqlParameter[] parameters ={new SqlParameter("@UserID",SqlDbType.Int,32)};

更改表示層要改為:

DataSet UserInforRow = ObjectUser.GetUserInfor(int.Parse(Session["UserId"].ToString()));

兩個(gè)方案中顯然是更改表示層比較合理,因?yàn)椴荒軌蛞驗(yàn)橐粋(gè)變量的傳遞更改變邏輯層中的可以被其他表示層頁面所調(diào)用的方法。

其他類似的變量傳遞和引用也遇到類似問題,雖然幾個(gè)層次相對(duì)獨(dú)立,但是在數(shù)據(jù)的傳遞上也相對(duì)連續(xù)。

.net在web上面的應(yīng)用可以做的很復(fù)雜,邏輯也很強(qiáng),簡(jiǎn)單的單頁面調(diào)用不是.net的特點(diǎn)也不能作為工程應(yīng)用。我也是接觸了一點(diǎn),冰山一角,希望能起到一個(gè)拋磚引玉的作用,讓大家見笑了。

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
www.欧美日韩| 成人综合在线观看| 精品国产乱码久久久久久牛牛| 亚洲欧洲日本一区二区三区| 理论电影国产精品| 一区二区免费看| 91精品欧美久久久久久动漫 | 中文字幕一区二区在线播放| 91精品国产综合久久精品麻豆| 国产欧美韩日| 中文精品在线| 国产日韩欧美高清| 制服丝袜av成人在线看| 美女日韩在线中文字幕| 精品成人国产| 国产精品v欧美精品v日本精品动漫| 国产精品自拍一区| 伦理电影国产精品| 水野朝阳av一区二区三区| 亚洲乱码国产乱码精品精小说| 国产天堂亚洲国产碰碰| 久久综合网色—综合色88| 日韩一区二区三区在线视频| 在线综合视频播放| 久久精品国产第一区二区三区| proumb性欧美在线观看| 午夜亚洲一区| 欧美老女人第四色| 大白屁股一区二区视频| 久久亚洲精精品中文字幕早川悠里| 91久久黄色| 精品一区二区三区的国产在线播放 | 午夜电影一区二区| 亚洲国产一区二区三区青草影视| 在线一区二区三区四区五区| 国产日韩免费| 欧美日韩在线播放一区| 91麻豆精品国产91久久久久久 | 久久久精品午夜少妇| 午夜在线视频观看日韩17c| 欧美丰满嫩嫩电影| 久久九九久久九九| 日本欧美肥老太交大片| 国产成人99久久亚洲综合精品| 成人午夜av影视| 国产婷婷精品| 欧美日韩激情一区二区三区| 欧美一区二区私人影院日本| 亚洲免费电影在线| 国产精品毛片久久久久久 | 欧美理论电影在线| 一级精品视频在线观看宜春院| 视频一区国产视频| av网站免费线看精品| 日韩精品最新网址| 午夜国产一区| 久久久99精品免费观看不卡| 一区二区国产在线观看| 狠狠色丁香久久综合频道| caoporm超碰国产精品| 国产91丝袜在线播放九色| 国产精品一卡二| 国产精品综合一区二区| 欧美一级国产精品| 欧美影院一区二区| 美女日韩在线中文字幕| 美脚丝袜一区二区三区在线观看 | 老司机精品导航| 国产欧美短视频| 亚洲一区二区三区高清| 欧美一级二区| 久久久久国内| 欧美综合在线视频| 日本韩国欧美一区二区三区| 91福利资源站| 欧美日韩在线播放一区| 欧美日韩成人一区二区| 欧美精品黑人性xxxx| 91.麻豆视频| 日韩欧美一二区| 久久久午夜精品理论片中文字幕| 国产日产欧美一区二区视频| 国产精品美女久久久久aⅴ国产馆| 国产精品久久久久久久久图文区 | 中文字幕字幕中文在线中不卡视频| 国产精品日产欧美久久久久| 欧美一区二区不卡视频| 日韩美女在线视频| 国产欧美一区二区三区沐欲| 中文字幕久久午夜不卡| 亚洲精品国产成人久久av盗摄| 一级做a爱片久久| 欧美日韩一区在线观看视频| 国产精品一区二区久久精品爱涩 | 成人深夜视频在线观看| 国产一区二区女| 成人深夜视频在线观看| 91免费观看视频| 伊人蜜桃色噜噜激情综合| 国产精品二区二区三区| 一区二区三区你懂的| 久久国产88| 欧美日韩亚洲综合在线 | 欧美吻胸吃奶大尺度电影| 欧美人体做爰大胆视频| 欧美三级蜜桃2在线观看| 91.com在线观看| 欧美成人乱码一区二区三区| 中文字幕精品综合| 亚洲成人动漫在线免费观看| 日本vs亚洲vs韩国一区三区二区| 国产乱色国产精品免费视频| 99久久精品国产导航| 亚洲人成人一区二区三区| 91福利精品第一导航| 日韩一区和二区| 国产精品女主播在线观看| 五月天激情综合网| 国产成人激情av| 国产精品对白刺激久久久| 国产在线视视频有精品| 中文字幕在线不卡国产视频| 亚洲欧美日韩国产综合| 日本视频免费一区| 成人午夜av影视| 一区二区三区三区在线| 精品婷婷伊人一区三区三| 久久久久久久久蜜桃| 亚洲无人区一区| 国产高清视频一区| 99精品99| 日韩欧美在线影院| 亚洲理论在线观看| 国产成人免费在线视频| 亚洲精美视频| 欧美美女激情18p| 亚洲乱码国产乱码精品精小说| 精品一区二区三区免费观看| 午夜欧美理论片| 欧美综合欧美视频| 久久久精品人体av艺术| 免费成人在线视频观看| 成人一区在线看| 欧美日韩在线观看一区二区三区| 色婷婷综合久久久中文一区二区| 欧美精品一区二区在线播放| 五月开心婷婷久久| 国产精品videosex极品| 欧美日韩精品欧美日韩精品一综合| 国产精品美女久久久久久 | 香蕉视频成人在线观看| 精品人在线二区三区| 日韩国产欧美视频| 亚洲天堂偷拍| 欧美成人猛片aaaaaaa| 五月天中文字幕一区二区| 欧美视频成人| 欧美一级欧美三级在线观看| 天天综合网天天综合色| 欧美精品日本| 欧美一级黄色片| 国产精品一二一区| 日韩在线一区二区| 97久久精品人人爽人人爽蜜臀| 日本道精品一区二区三区| 国产日本亚洲高清| 久久机这里只有精品| 亚洲欧洲一区| 日韩欧美三级在线| 午夜精品久久久久| 国语自产精品视频在线看8查询8| 在线成人免费视频| 五月婷婷另类国产| 亚洲人体一区| 欧美高清在线一区| 精品一区二区国语对白| 免费久久久一本精品久久区| ●精品国产综合乱码久久久久| 波波电影院一区二区三区| 欧美日韩激情一区| 免费成人av在线播放| 亚洲专区一区| 一区二区在线观看免费视频播放| 欧美日韩喷水| ww久久中文字幕| 粉嫩aⅴ一区二区三区四区 | 欧美成ee人免费视频| 精品国产一区二区三区久久影院 | 成人一级片在线观看| 欧美日韩不卡在线| 麻豆一区二区99久久久久| 久久国产日韩欧美| 亚洲一区二区三区自拍| 伊人成人在线| 日韩毛片视频在线看| 狠狠入ady亚洲精品经典电影| 国产欧美精品一区二区三区四区| 不卡一卡二卡三乱码免费网站| 欧美一区2区视频在线观看| 国产乱子伦视频一区二区三区 |