亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        ASP.NET三層構(gòu)架解析

        2016-08-06 09:15:08于海霞王昊
        農(nóng)業(yè)科技與裝備 2016年3期
        關(guān)鍵詞:表示層

        于海霞 王昊

        摘要:在解析ASP.NET三層構(gòu)架具體概念的基礎(chǔ)上,通過實(shí)例介紹ASP.NET三層構(gòu)架的具體應(yīng)用及各層的主要功能,為初學(xué)者更加了解ASP.NET三層構(gòu)架提供理論參考。

        關(guān)鍵詞:ASP.NET;表示層;業(yè)務(wù)邏輯層;數(shù)據(jù)訪問層

        中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1674-1161(2016)03-0038-02

        1 ASP.NET三層構(gòu)架概述

        ASP.NET三層構(gòu)架分別是表示層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層。表示層(USL)以WEB,WINFORM方式表示。如果邏輯層相當(dāng)強(qiáng)大和完善,無論表現(xiàn)層如何定義和更改,邏輯層都能提供完善的服務(wù)。業(yè)務(wù)邏輯層(BLL)主要是針對(duì)具體問題的操作,也可以理解成對(duì)數(shù)據(jù)層操作,對(duì)數(shù)據(jù)業(yè)務(wù)進(jìn)行邏輯處理。如果說數(shù)據(jù)層是積木,則邏輯層就是對(duì)積木進(jìn)行搭建。數(shù)據(jù)訪問層(DAL)主要是原始數(shù)據(jù)(數(shù)據(jù)庫或者文本文件等存放數(shù)據(jù)形式)操作層,而不是指原始數(shù)據(jù),為業(yè)務(wù)邏輯層或表示層提供數(shù)據(jù)服務(wù)。

        簡單的三層結(jié)構(gòu)程序一般包括DAL,BLL,WEB,Model幾個(gè)項(xiàng)目,它們的相互引用關(guān)系為:WEB引用BLL,Model;BLL引用DAL,Model;DAL引用Model;Model無引用。

        為使用戶實(shí)現(xiàn)簡單管理,應(yīng)先建立一個(gè)空白解決方案,然后添加如下項(xiàng)目及文:1) 添加ASP..NET Web Application項(xiàng)目,命名為UI,新建Web Form類型文件User.aspx(含User.aspx.cs)。2) 添加ClassLibrary項(xiàng)目,命名為BLL,新建Class類型文件UserBLL.cs。3) 添加ClassLibrary項(xiàng)目,命名為DAL,新建Class類型文件UserDAL.cs。添加SQLHelper引用(一般用自己寫的數(shù)據(jù)訪問類DataAccessHelper)。4) 添加ClassLibrary項(xiàng)目,命名為Model,新建Class類型文件UserModel.cs。5) 添加ClassLibrary項(xiàng)目,命名為IDAL,新建Interface類型文件IUserDAL.cs 6,添加ClassLibrary項(xiàng)目,并且命名為ClassFactory。

        2 文件在各層的應(yīng)用方法

        2.1 User.aspx文件和User.aspx.cs文件都屬于表現(xiàn)層

        User.aspx更容易理解,因?yàn)樗褪秋@示頁面。一般情況下,User.aspx.cs不應(yīng)在表現(xiàn)層,而應(yīng)該屬于業(yè)務(wù)邏輯層。但如果不進(jìn)行具體分層,User.aspx.cs處理業(yè)務(wù)歸屬邏輯層乃至操作數(shù)據(jù)庫都可以;但如果進(jìn)行分層,則應(yīng)在分層結(jié)構(gòu)中,User.aspx.cs只會(huì)處置與顯示有關(guān)的部分,其它內(nèi)容不應(yīng)觸及。

        若要實(shí)現(xiàn)用列表方式顯示用戶的功能,則提取信息工作由BLL完成。UI(本例中是User.aspx.cs)調(diào)用BLL得到UserInfo后,通過代碼綁定到User.aspx數(shù)據(jù)控件上,實(shí)現(xiàn)列表表現(xiàn)。在此過程中,User.aspx.cs對(duì)UI不起主要作用,只是用來傳遞數(shù)據(jù)。由于現(xiàn)實(shí)編碼大多采用此方法實(shí)現(xiàn),因此感覺User.aspx.cs不應(yīng)該屬于UI,而是應(yīng)該并入BLL負(fù)責(zé)邏輯處理。這就提出一個(gè)新要求,在每個(gè)用戶前面加一個(gè)相應(yīng)圖標(biāo),直接表示出用戶性別,其中不滿18歲的用戶用兒童圖標(biāo)表示。這個(gè)需求的實(shí)現(xiàn),需要User.aspx.cs來完成。

        2.2 NewBLL.cs添加方式

        public IList GetUsers()public UserInfo GetUser(int UserId):返回指定用戶的具體信息public bool AddUser(UserInfo User):新增用戶信息public bool ChangeUser(UserInfo User):更新用戶信息public void RemoveUser(int UserId):移除用戶信息后,此文件屬于營業(yè)邏輯層,專門用來處置與營業(yè)邏輯有關(guān)的操縱。

        有很多人把表示層傳過來的數(shù)據(jù)轉(zhuǎn)發(fā)到數(shù)據(jù)層,說明項(xiàng)目較為簡單或項(xiàng)目本身沒有與業(yè)務(wù)緊密結(jié)合,導(dǎo)致業(yè)務(wù)層沒有操作,只起到轉(zhuǎn)發(fā)作用。但這不代表營業(yè)層無關(guān)緊要,隨著項(xiàng)目增大或業(yè)務(wù)關(guān)系復(fù)雜化,業(yè)務(wù)層的作用將凸顯。此外,很多人容易把數(shù)據(jù)操作代碼劃分到業(yè)務(wù)層,并且把數(shù)據(jù)庫作為數(shù)據(jù)訪問層,造成錯(cuò)誤。例如,有些人覺得BLL層意義不大,將DAL的數(shù)據(jù)提上來處未作任何處理就轉(zhuǎn)發(fā)給UI。BLL層SelectUser(UserInfo userInfo)根據(jù)傳入的username或email得到用戶詳細(xì)信息;IsExist(UserInfo userInfo)判斷指定的username或email是否存在;然后,DAL相應(yīng)提供方法供BLL調(diào)用SelectUser(UserInfo userInfo)IsExist(UserInfo userInfo),這樣BLL確實(shí)只起傳遞作用。但如果這樣做,BLL.IsExist(Userinfo userinfo) { UerInfo user = DAL.SelectUser(User);return (userInfo.Id != null); },DAL無法實(shí)現(xiàn)IsExist()方法,BLL中有邏輯處理代碼。

        2.3 UserModel.cs實(shí)體

        Model在三層架構(gòu)中的位置和int,string等變量一樣,只用于數(shù)據(jù)存儲(chǔ),但它存儲(chǔ)比較復(fù)雜的數(shù)據(jù)。所以,若項(xiàng)目中都是比較簡單的對(duì)象,則不用model,直接傳遞參數(shù)也可以做三層架構(gòu)。

        現(xiàn)舉例說明model在各層參數(shù)傳遞中的作用。在各層間傳遞參數(shù)時(shí),可以設(shè)置為AddUser(userId,userName,userPassword,…,),也可以設(shè)置為AddUser(userInfo),但第二種方法更好。

        應(yīng)用model和普通變量時(shí),SelectUser(int UserId)SelectUserByName(string username)SelectUserByName(string username,string password)SelectUserByEmail(string email)SelectUserByEmail(string email,string password),可以概括為SelectUser(userId) SelectUser(user)。這里用user的Model工具包括username,password,email這3個(gè)參數(shù)的4種組合模式。UserId也可以合并到user中,但項(xiàng)目中別的BLL都實(shí)現(xiàn)id參數(shù)接口,故也留下這項(xiàng)。

        傳入userInfo的處理,需要依照前后次序用詳細(xì)代碼決定。UserDALcs public IList SelectUsers():返回全部的用戶信息列表public UserInfo SelectUser(int UserId):返回指定用戶的信息 public bool InsertUser(UserInfo User):新增用戶信息public bool UpdateUser(UserInfo User):更新用戶信息public void DeleteUser(int UserId):移除用戶信息 。

        許多人對(duì)數(shù)據(jù)訪問層比較迷糊:有一部分人不清楚定義,認(rèn)為數(shù)據(jù)庫是訪問層,其實(shí)DAL是數(shù)據(jù)訪問層,而不是數(shù)據(jù)存儲(chǔ)層,故數(shù)據(jù)庫不是這一層的;也有人把SQLHelper(或其同類作用組件)作為數(shù)據(jù)訪問層。SQLHelper的作用是削減重復(fù)性編碼,提高編碼效率,所以在注重效率或利用非數(shù)據(jù)庫數(shù)據(jù)源時(shí),可以拋棄SQLHelper。和數(shù)據(jù)源操作相對(duì)應(yīng)的代碼,屬于數(shù)據(jù)訪問層。

        此外,能夠另一個(gè)判斷三層架構(gòu)是否標(biāo)準(zhǔn)的方法就是,改變?nèi)龑蛹軜?gòu)中任何一層時(shí),是否會(huì)影響其它兩層。例如:把項(xiàng)目從C/S改成B/S(或相反),這樣除UI之外,BLL與DAL都不需要改變。

        猜你喜歡
        表示層
        OSI參考模型
        基于Spring的企業(yè)級(jí)Web項(xiàng)目架構(gòu)設(shè)計(jì)研究
        軟件(2019年6期)2019-10-08 06:27:21
        基于SSH框架科研管理系統(tǒng)的設(shè)計(jì)
        ASP.NET三層架構(gòu)體系間數(shù)據(jù)傳遞
        電腦迷(2013年9期)2013-04-29 00:44:03
        亚洲熟女国产熟女二区三区| 大肉大捧一进一出好爽视色大师| 无码aⅴ在线观看| 99久久久69精品一区二区三区| 在线观看高清视频一区二区三区| 亚洲av天堂免费在线观看| 人妻少妇精品视频无码专区| 国产成人精品三级麻豆| 国产精品一区二区久久精品蜜臀 | 久久青草国产免费观看| 丰满人妻被持续侵犯中出在线| 亚洲成av人片不卡无码| 亚洲欧美在线观看| 偷拍网日本一区二区三区| 国产av一区二区网站| 三年片免费观看影视大全视频 | 欧美国产亚洲精品成人a v| 激情网色图区蜜桃av| 国产精品一区二区三久久不卡| 国产成人无码a区在线观看视频| 国产小屁孩cao大人| 偷拍一区二区三区黄片| 国产精品高清一区二区三区不卡| 精品无码中文视频在线观看| 久久久亚洲精品午夜福利| 亚洲一区二区三区在线最新| 猫咪av成人永久网站在线观看| 欧洲色综合| 久久精品中文字幕免费| 日本久久伊人特级黄色| 性生交大全免费看| 久久免费精品国产72精品剧情 | 亚洲黄色精品在线播放| 又嫩又硬又黄又爽的视频| 欧美人与物videos另类xxxxx| 在线观看中文字幕一区二区三区| 蜜桃视频网站在线观看一区| 欧美怡红院免费全部视频| 国产成人av在线影院无毒| 狼狼色丁香久久女婷婷综合| 娜娜麻豆国产电影|