一:什么是三層體系結(jié)構(gòu):
    三層體系結(jié)構(gòu),顧名思義,我們將運(yùn)用程序從整體上分為三個獨立而又彼此相關(guān)聯(lián)的層次,這三層分別是:用戶層、業(yè)務(wù)邏輯層、數(shù)據(jù)層
。用戶層就是運(yùn)用程序與用戶的操作接口,比如說:網(wǎng)頁。在用戶層,常用到的技術(shù)如:html、css、javascript、asp/asp.net等.業(yè)務(wù)邏輯層
就是將一些業(yè)務(wù)處理的邏輯與規(guī)則經(jīng)過封裝,它提供一些接口與用戶層與數(shù)據(jù)層進(jìn)行交互。在邏輯層,當(dāng)今比較流行的技術(shù)和規(guī)范,如:
microsoft的com/dcom/com+/net組件,sun 的 ejb等。數(shù)據(jù)層主要是提供業(yè)務(wù)邏輯層的數(shù)據(jù)接口和后臺的數(shù)據(jù)管理,比較典型的數(shù)據(jù)庫管理系
統(tǒng)有:sql sercer 2000/2005 、orcale 8i/9i,db2等。三層體系結(jié)構(gòu)的好處是將運(yùn)用程序分成互相獨立的幾個層次,當(dāng)某層需要改變的時候,
不會對其他層次有大的影響,便于進(jìn)行運(yùn)用程序的維護(hù)。同時,層與層之間結(jié)構(gòu)清晰,易于我們進(jìn)行開發(fā)與部署。
二:用net開發(fā)三層體系結(jié)構(gòu)的思路:
net平臺的易操作、強(qiáng)大的功能,利于我們在短時間里開發(fā)較大規(guī)模、較復(fù)雜的運(yùn)用程序。下面,我們用一個簡單的例子(讀取數(shù)據(jù)庫中的數(shù)據(jù)
)來看看怎樣開發(fā)一個標(biāo)準(zhǔn)的基于三層體系結(jié)構(gòu)的運(yùn)用程序。
步驟一:我們在后臺采用sql server作為后臺數(shù)據(jù)庫管理系統(tǒng)。所以我們先打開sql server企業(yè)管理器,建立我們自己的數(shù)據(jù)庫,我們只是簡
單的取名字為stu,同時,需要建立一張表(student),表有三個字段,分別是id(學(xué)號),name(姓名),class(班級)。同時,我們先填入一些
數(shù)據(jù)到student表中,方便我們在程序設(shè)計完成后進(jìn)測試。
同時,我們需要在查詢分析器里面,建立一個存儲過程,請先不用管為什么要利用存儲過程,只是邏輯層在和數(shù)據(jù)庫進(jìn)行交互時需要用到。(
有興趣的可以查看一下使用存儲過程的好處,在這里我們不多做介紹)
存儲過程如下:
create proc p_select
as
select * from student
go
步驟二:我們先啟動vsnet運(yùn)用程序,選擇新建項目,選擇類庫,建立一個名為mylib的類庫,建立類庫的目的是對業(yè)務(wù)層的邏輯進(jìn)行封裝。在類
庫中,默認(rèn)的命名空間是mylib,在這里提示命名空間是因為我們在后面用戶層在實例化類時要用到。然后,我們在解決方案中會看到有一個默
認(rèn)的叫做class.vb的類。在代碼編輯區(qū),我們將class改成myclass.(其實也可以不改,修改只是方便我們在引用的時候,方便我們識別)。然后
我們再編寫類的代碼,在類中,我們需要定義一些變量和方法及屬性、事件等。在此類中,我們只是定義了一個如下:
提示:先要導(dǎo)入命名空間:imports system.data.sqlclient
類的代碼:
 
 public class mydata
        public conn as new sqlconnection("data source=(local);user id=sa;password='';database=xiaoxiao")
function mydataset() as dataset
            dim command as new sqlcommand()
            try
                dim myada as new sqldataadapter()
                dim myds as new dataset()
                conn.open()
                command.connection = conn
                command.commandtype = commandtype.storedprocedure
                command.commandtext = "p_select"   '加載是顯示數(shù)據(jù)的存儲過程
                myada.selectcommand = command
                myada.fill(myds, "1")
                return myds
                conn.close()
            catch
                msgbox("失敗")
            end try
        end function
    end class
然后,我們需要將剛建立的類編譯生成dll的文件,以便我們能引用使用他。點擊mylib右鍵--》生成,即可。
步驟三:點擊文件—》新建-》項目--》windows項目,我們建立一個windows的運(yùn)用程序,名為myform1在界面上布置一個button與datagrid的
控件。
為了能用到我們剛才創(chuàng)建的類,我們需要添加引用,將mylib引用到我們的myform1中.然后,我們在button下編寫代碼:
先導(dǎo)入命名空間:imports mylib
在button下的代碼:
   private sub button1_click(byval sender as system.object, byval e as system.eventargs) handles button1.click
        dim myds as new myclass()
        datagrid1.datasource = myds.mydataset
    end sub
然后,啟動程序,就能顯示數(shù)據(jù)庫stu中student表的數(shù)據(jù)。
三:實驗:
請讀者按照上面的提示,自己上機(jī)操作練習(xí),會對程序的開發(fā)理解更加深刻。
四:結(jié)論
我們先通過一個顯示數(shù)據(jù)庫信息的例子來構(gòu)建了一個標(biāo)準(zhǔn)的三層架構(gòu)的程序。主要的意圖是想做為想在net平臺上進(jìn)行高級開發(fā)的讀者學(xué)習(xí)的一個參考。當(dāng)然,這個例子的實際作用可能并不大,只是讓我們認(rèn)識到怎樣去開發(fā)三層結(jié)構(gòu)系統(tǒng)的大致的思路,如果想設(shè)計一個功能更強(qiáng)大的程序可能更復(fù)雜一些。文章中沒有附圖,可能看起來比較枯燥,但文字的講解看起來還是比較簡單的。希望能給一些讀者一些啟發(fā)。
鄭重聲明:此文章純屬個人原創(chuàng),目的在與和各位網(wǎng)友進(jìn)行學(xué)習(xí)開發(fā)上的交流,請不要隨意的復(fù)制和修改。如要引用,請注明出處。謝謝!
新聞熱點
疑難解答
圖片精選