對“三層結(jié)構(gòu)”的深入理解――怎樣才算是一個符合“三層結(jié)構(gòu)”的_第1頁
對“三層結(jié)構(gòu)”的深入理解――怎樣才算是一個符合“三層結(jié)構(gòu)”的_第2頁
對“三層結(jié)構(gòu)”的深入理解――怎樣才算是一個符合“三層結(jié)構(gòu)”的_第3頁
對“三層結(jié)構(gòu)”的深入理解――怎樣才算是一個符合“三層結(jié)構(gòu)”的_第4頁
對“三層結(jié)構(gòu)”的深入理解――怎樣才算是一個符合“三層結(jié)構(gòu)”的_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、“三層結(jié)構(gòu)”是什么?“三層結(jié)構(gòu)”一詞中的“三層”是指:“表現(xiàn)層”、“中間業(yè)務(wù)層”、“數(shù)據(jù)訪問層”。其中:            表現(xiàn)層:位于最外層(最上層),離用戶最近。用于顯示數(shù)據(jù)和接收用戶輸入的數(shù)據(jù),為用戶提供一種交互式操作的界面。            中間業(yè)務(wù)層:負(fù)責(zé)處理用戶輸入的信息,或者是將這些信息發(fā)送給數(shù)據(jù)訪問層進(jìn)行保存,或者是調(diào)用數(shù)據(jù)訪問層中

2、的函數(shù)再次讀出這些數(shù)據(jù)。中間業(yè)務(wù)層也可以包括一些對“商業(yè)邏輯”描述代碼在里面。            數(shù)據(jù)訪問層:僅實現(xiàn)對數(shù)據(jù)的保存和讀取操作。數(shù)據(jù)訪問,可以訪問數(shù)據(jù)庫系統(tǒng)、二進(jìn)制文件、文本文檔或是XML文檔。    對依賴方向的研究將是本文的重點,數(shù)值返回方向基本上是沒有變化的。在一個如果只以分層的設(shè)計角度看,Duwamish7要比PetShop3.0復(fù)雜一些!而如果較為全面的比較二者,PetShop3.0則顯得比較復(fù)雜。但我們先不討

3、論這些,對PetShop3.0和Duwamish7的研究,并不是本文的重點。現(xiàn)在的問題就是:既然“三層結(jié)構(gòu)”已經(jīng)被分派到各自的項目中,那么剩下來的項目是做什么的呢?例如PetShop3.0中的“Model”、“IDAL”、“DALFactory”這三個項目,再例如Duwamish7中的“Common”項目,還有就是在Bincess.CN彬月論壇中的“Classes”、“DbTask”、這兩個項目。它們究竟是做什么用的呢? 對“三層結(jié)構(gòu)”的深入理解從一家小餐館說起一個“三層結(jié)構(gòu)”的Web應(yīng)用程序,就好象是一家小餐館。      

4、;      表現(xiàn)層,所有的.aspx頁面就好像是這家餐館的菜譜。            中間業(yè)務(wù)層,就像是餐館的服務(wù)生。            數(shù)據(jù)訪問層,就像是餐館的大廚師傅。          

5、  而我們這些網(wǎng)站瀏覽者,就是去餐館吃飯的吃客了  我們?nèi)ヒ患也宛^吃飯,首先得看他們的菜譜,然后喚來服務(wù)生,告訴他我們想要吃的菜肴。服務(wù)生記下來以后,便會馬上去通知大廚師傅要烹制這些菜。大廚師傅收到通知后,馬上起火燒菜。過了不久,服務(wù)生便把一道一道香噴噴的、熱氣騰騰的美味端到我們的桌位上而我們訪問一個基于技術(shù)的網(wǎng)站的時候,首先打開的是一個aspx頁面。這個aspx頁面的后臺程序會去調(diào)用中間業(yè)務(wù)層的相應(yīng)函數(shù)來獲取結(jié)果。中間業(yè)務(wù)層又會去調(diào)用數(shù)據(jù)訪問層的相應(yīng)函數(shù)來獲取結(jié)果。 為什么需要“三層結(jié)構(gòu)”?初探,就從數(shù)據(jù)庫的升遷開始一個站點中,訪問數(shù)據(jù)庫的程

6、序代碼散落在各個頁面中,就像夜空中的星星一樣繁多。這樣一動百動的維護(hù),難度可想而知。最難以忍受的是,對這種維護(hù)工作的投入,是沒有任何價值的有一個比較好的解決辦法,那就是將訪問數(shù)據(jù)庫的代碼全部都放在一個程序文件里。這樣,數(shù)據(jù)庫平臺一旦發(fā)生變化,那么只需要集中修改這一個文件就可以了。我想有點開發(fā)經(jīng)驗的人,都會想到這一步的。這種“以不變應(yīng)萬變”的做法其實是簡單的“門面模式”的應(yīng)用。如果把一個網(wǎng)站比喻成一家大飯店,那么“門面模式”中的“門面”,就像是飯店的服務(wù)生,而一個網(wǎng)站的瀏覽者,就像是一個來賓。來賓只需要發(fā)送命令給服務(wù)生,然后服務(wù)生就會按照命令辦事。至于服務(wù)生經(jīng)歷了多少辛苦才把事情辦成?那個并不是

7、來賓感興趣的事情,來賓們只要求服務(wù)生盡快把自己交待事情辦完。我們就把程序就看成是一個來賓發(fā)出的命令,而把新加入的LWordTask.cs程序看成是一個飯店服務(wù)生,那么來賓發(fā)出的命令就是:“給我讀出留言板數(shù)據(jù)庫中的數(shù)據(jù),填充到DataSet數(shù)據(jù)集中并顯示出來!”“把我的留言內(nèi)容寫入到數(shù)據(jù)庫中!”而服務(wù)生接到命令后,就會依照執(zhí)行。這就是TraceLWord2!可以在CodePackage/TraceLWord2目錄中找到 把所有的有關(guān)數(shù)據(jù)訪問的代碼都放到LWordTask.cs文件里,LWordTask.cs程序文件如下: #001 using System

8、;#002 using System.Data;#003 using  / 需要操作 Access 數(shù)據(jù)庫#004 using System.Web;#005#006 namespace TraceLWord2#007 #008    / #009    / LWordTask 數(shù)據(jù)庫任務(wù)類#010    / 

9、;#011    public class LWordTask#012    #013        / 數(shù)據(jù)庫連接字符串#014        private const string DB_CONN=DATA Source=C:DbFsTraceLWordDb.mdb"#015#016

10、        / #017        / 讀取數(shù)據(jù)庫表 LWord,并填充 DataSet 數(shù)據(jù)集#018        / #019        / 填充目標(biāo)數(shù)據(jù)集#020  &#

11、160;     / 表名稱#021        /  記錄行數(shù)#022        public int ListLWord(DataSet ds, string tableName#023        #024  

12、60;         string cmdText="SELECT * FROM LWord ORDER BY LWordID DESC"#025#026            OleDbConnection dbConn=new OleDbConnection(DB_CONN;#027    &

13、#160;       OleDbDataAdapter dbAdp=new OleDbDataAdapter(cmdText, dbConn;#028#029            int count=dbAdp.Fill(ds, tableName;#030#031         &

14、#160;  return count;#032        #033#034        / #035        /彈性地基上基礎(chǔ)梁、板的內(nèi)力分析是一個重要而又復(fù)雜的問題。為了正確地進(jìn)行分析,選擇符合實際情況的地基模型是非常重要的。對于地基模型【】【的選擇,應(yīng)用最廣泛的是文克爾地基模型和半無限彈性地基模型【刀

15、。理論計算表明,文克爾地基模型僅適用于可壓縮土層厚度與基礎(chǔ)水平寬度三之比的情況,而半無限彈性地基模型適用于的土層,介于這兩者之間的是有限深彈性地基模型【和多層地基模型】。文克爾地基模型年,富斯首先提出了單位長度的基礎(chǔ)梁下的總地基反力與地基變形成正比,但是這種理論只能用于等寬度的基礎(chǔ)梁。后來,(于年提出的地基模型認(rèn)為“地基表面任一點上所受的單位面積上的壓力與相應(yīng)的地基豎向位移成正比”,這樣就使其適用范圍擴大到任何形狀的基礎(chǔ)梁。其數(shù)學(xué)表達(dá)示為:尸一單位面積的地基所受的壓力;),一地基豎向位移;一地基基床系數(shù),其值可用靜載試驗確定、或根據(jù)土的變形模量和泊松比推算。根據(jù)這一模型,地基的變形只發(fā)生在基底

16、范圍內(nèi),基底范圍以外沒有變形,這顯然與實際情況不符。由于該模型計算比較簡單,只要七值選擇得當(dāng),仍然可以得到比較滿意的結(jié)果。關(guān)于文克爾模型的適用條件目前還是一個不太明確的問題,太沙基【】(嘶)認(rèn)為作為一種近似方法,文克爾模型可用于計算任何土壤的地基反力和樁基反力,后藤裕根據(jù)福潑爾()的試驗也認(rèn)為該模型對大多數(shù)土壤適用【】,但是有些學(xué)者認(rèn)為該模型只有在一定的條件下才可以使用。該模型究竟在什么土壤上適用,要看受荷載后基礎(chǔ)底面地基反力的分布圖形與地基的變形情況。對基礎(chǔ)結(jié)構(gòu)內(nèi)力起決定作用的是基礎(chǔ)底面的反力圖形,文克爾模型對某種土壤是否適用,要看在同一荷載作用下實測地基反力圖形與計算反力圖形是否相似,如果

17、相似就適用,否則就不適用。一般情況下若無實測資料,可按表取經(jīng)驗值計算。(的地基假設(shè)實質(zhì)上是把土當(dāng)作無數(shù)個獨立的、互不相關(guān)的彈簧。沒有考慮土第一章緒論體的剪切對相鄰?fù)馏w的影響。不同基礎(chǔ)形式下其受力變形如圖所示。對于“力學(xué)性質(zhì)與液體接近的地基,如剪切強度極低的半流態(tài)淤泥或地基土塑性區(qū)相對較大時,就比較符合文克爾假定。另外,厚度不超過基底邊之半的薄壓縮層地基,因壓力面積較大,剪應(yīng)力較小,也與文克爾模型接近”。其受力變形如圖所示。表一基床系數(shù)的經(jīng)驗值基床系數(shù)土的分類土的狀態(tài)土的分類土的狀態(tài)基床系數(shù)(伽)淤泥質(zhì)粘土軟塑(硎)淤泥質(zhì)粉松散沙土中密密實粘土、粉質(zhì)粘可塑硬塑()¨毒塞專(),毒虐毒、

18、譬棗憊,囊毒毒:()圖文克爾模型受力變形圖綜合一些有關(guān)資料,可以得出文克爾地基模型的適用范圍如下:適用于高壓縮性軟土地基、薄的破碎巖層或不均勻的土層;對于抗剪強度很低的半液態(tài)土(如淤泥、軟黏土等)地基或基底下塑性區(qū)相對較大的地基;河海大學(xué)碩士學(xué)位論文當(dāng)?shù)鼗膲嚎s層下存在硬層且壓縮層很薄的地基;淺地基;對于動力荷載作用下的土一結(jié)構(gòu)相互作用問題,文克爾地基也能給出較好的解答。半無限彈性地基模型該模型是由蘇聯(lián)學(xué)者普洛克托兒于年在文克爾假設(shè)出現(xiàn)后提出的。這一計算模型是假定地基是半無限大的連續(xù)彈性體,應(yīng)用彈性理論計算地基的沉吲】。彈性理論的公式推導(dǎo),都是以假定物體是均勻連續(xù)的、完全彈性的和各向同性的為前

19、提。對于巖性地基,可以把它看成是連續(xù)彈性體;但對于土壤地基來說,土壤是松散的顆粒體,不能承受拉力,它在受壓后,變形是由彈性變形和塑性變形兩部分組成的,并且塑性變形大于彈性變形。如果土壤受壓過大,它在基礎(chǔ)邊緣附近的部分會因為產(chǎn)生流動而進(jìn)入塑性狀態(tài)。盡管在土壤和彈性體之間存在著差別,還是可以把土壤地基當(dāng)作連續(xù)體看待。這是因為,按地基的工作條件,其主要是加載,而不是卸載,因此地基主要是受壓的。同時,在基礎(chǔ)設(shè)計中,地基的壓力是有限制的,塑性狀態(tài)只能是在很小的范圍內(nèi),故可以忽略。雖然這種方法比前兩種方法在理論上更為合理,但是這種假定也存在一定的問題,首先土體的應(yīng)力和應(yīng)變關(guān)系并不是線性的,尤其當(dāng)應(yīng)力超過地

20、基彈性平衡狀態(tài)時,靠近基礎(chǔ)邊緣部分的土壤進(jìn)入塑性狀態(tài),其土體不是理想的均質(zhì)彈性體,而是各向異性的彈塑性體。基于半無限彈性地基假定的近似解決方法有:多項式法】、鏈桿法【】、能量法以及國內(nèi)學(xué)者提出的方法【】【】。平面問題彈性力學(xué)的平面問題分為平面應(yīng)力問題和平面應(yīng)變問題。對于平面應(yīng)力問題,當(dāng)半平面體(島為變形模量,脅為泊松比)在邊界上受垂直于邊界的力尸作用時(如圖卜)鋤得到了邊界上距原點為,的一點相對于參考點(距原點距離為)的相對沉降為:,:竺蘭刀一()()。兀當(dāng)半平面體(取單位寬度)在邊界上作用有分布荷載口()時(如圖卜),則由上述的鋤觚解,可以得到與原點距離為的一點的沉降(仍是相對于參考點)為:

21、刁封卜帥卜帥糾,第一章緒論一一、一廠廠叩丑、一一,叫一,圖彈性半空間平面體受集中力作用圖彈性半平面體受均布荷載作用對于平面應(yīng)變問題,只需將式()和式()中磊換成南即可。彈性半空間問題彈性半空間地基模型假設(shè)地基是均勻的、各項同性的半無限大連續(xù)彈性體,土的力學(xué)性質(zhì)由變形模量磊和泊松比來表征。當(dāng)集中力尸作用于彈性半空間表面上時(如圖卜)表面上任意點處的豎直位移緲由解答給出:咖,等詈時,地基表面豎直位移為零。()式中:,可為地基表面上點與荷載作用點的距離。從式()中可以看出,當(dāng),專當(dāng)作用于地基表面某區(qū)域上的荷載為分布荷載黿(石,)時(如圖卜)表面豎直位移緲可由式()沿積分得到:咖,普兒穢黯()孝和為區(qū)

22、域內(nèi)任意點沿和,方向的坐標(biāo)。如果考慮界面摩擦,對水平位移也有類似的解答。河海大學(xué)碩士學(xué)位論文#038一一弋一弘釘訝二一一圖彈性半空間地基受集中力作用圖彈性半空間地基受均布衙載作用從式()可以看出,如果作用于彈性半空間體表面上的荷載為有限面積荷載時,可用積分法求得其應(yīng)力與位移表達(dá)式。事實上,這些積分是困難的,當(dāng)受荷載面積復(fù)雜或受荷不均勻時,就更難于積分,有時甚至積分不出來。在這種情況下一般采用數(shù)值方法。彈性半空間地基模型考慮了壓力的擴散作用,比文克爾地基模型在理論上要合理一些。但是該模型的擴散能力往往超過地基的實際情況,計算所得的位移量和地表位移范圍比實測結(jié)果要大。一般認(rèn)為造成這一問題的原因是實

23、際地基壓縮層的厚度是有限的,而且其變形模量隨深度變化。此外,這種模型所需的土的變形模量磊和泊松比鰳不容易測定也是一個缺點。雙參數(shù)和多參數(shù)地基模型文克爾地基模型不能擴散應(yīng)力和變形,因而在理論上存在著嚴(yán)重的缺陷。彈性半空間模型雖然在理論上較為完善,但在數(shù)學(xué)計算上存在著較大的困難。為此,人們發(fā)展了一些介于兩者之間的地基計算模型。雙參數(shù)地基模型就是其中的一類。這類模型采用兩個獨立的參數(shù)來表征地基土的特性,從理論上改進(jìn)文克爾模型中地基不連續(xù)的缺陷,在數(shù)學(xué)處理上比彈性半空間理論簡單。public void PostLWord(string textContent#039

24、60;       #040            / 留言內(nèi)容不能為空#041            if(textContent=null | textContent=""#042     

25、60;          throw new Exception("留言內(nèi)容為空"#043#044            string cmdText="INSERT INTO LWord(TextContent VALUES(TextContent"#045#046   

26、60;        OleDbConnection dbConn=new OleDbConnection(DB_CONN;#047            OleDbCommand dbCmd=new OleDbCommand(cmdText, dbConn;#048#049       

27、     / 設(shè)置留言內(nèi)容#050 new OleDbParameter("TextContent", OleDbType.LongVarWChar;#051            dbCmd.Parameters"TextContent".Value=textContent;#052#053     

28、60;      try#054            #055                dbConn.Open(;#056           

29、;     dbCmd.ExecuteNonQuery(;#057            #058            catch#059            #060 

30、60;              throw;#061            #062            finally#063       &#

31、160;    #064                dbConn.Close(;#065            #066        #067    #0

32、68  如果將數(shù)據(jù)庫從Access 2000修改為SQL Server 2000,那么只需要修改LWordTask.cs這一個文件。如果LWordTask.cs文件太大,也可以把它切割成幾個文件或“類”。如果被切割成的“類”還是很多,也可以把這些訪問數(shù)據(jù)庫的類放到一個新建的“項目”里。當(dāng)然,原來的文件應(yīng)該作以修改,LWord_DataBind函數(shù)被修改成: .#046        private void LWord_DataBind(#047 

33、0;      #048            DataSet ds=new DataSet(;#049            (new LWordTask(.ListLWord(ds, "LWordTable"#050#051  

34、;          m_lwordListCtrl.DataSource=ds.Tables"LWordTable".DefaultView;#052            m_lwordListCtrl.DataBind(;#053        . 原來的文件也應(yīng)

35、作以修改,Post_ServerClick函數(shù)被修改成: .#048        private void Post_ServerClick(object sender, EventArgs e#049        #050            / 獲取留言內(nèi)容#

36、051            string textContent=this.m_txtContent.Value;#052#053            (new LWordTask(.PostLWord(textContent;#054#055       

37、0;    / 跳轉(zhuǎn)到留言顯示頁面#056            Response.Redirect("ListLWord.aspx", true;#057        . 從前面的程序段中可以看出,和這兩個文件已經(jīng)找不到和數(shù)據(jù)庫相關(guān)的代碼了。只看到一些和LWordTask類有關(guān)系的代碼,這就符合了“設(shè)計模

38、式”中的一種重要原則:“迪米特法則”。“迪米特法則”主要是說:讓一個“類”與盡量少的其它的類發(fā)生關(guān)系。在TraceLWord1中,這個類和OleDbConnection及OleDbDataAdapter都發(fā)生了關(guān)系,所以它破壞了“迪米特法則”。利用一個“中間人”是“迪米特法則”解決問題的辦法,這也是“門面模式”必須遵循的原則。下面就引出這個LWordTask門面類的示意圖:  和兩個文件對數(shù)據(jù)庫的訪問,全部委托LWordTask類這個“中間人”來辦理。利用“門面模式”,將頁面類和數(shù)據(jù)庫類進(jìn)行隔離。這樣就作到了頁面類不依賴于數(shù)據(jù)庫的效果。以一段比較簡單的代碼來描述這三個程序的

39、關(guān)系: public class ListLWordprivate void LWord_DataBind(    (new LWordTask(.ListLWord( . ;     public class PostLWord    private void Post_ServerClick(object sender, EventArgs e       &

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論