




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
試談用JAVA實現(xiàn)三層體系結(jié)構(gòu)中用戶層與應(yīng)用層摘要:近些年來應(yīng)用程序使用多層體系結(jié)構(gòu)來設(shè)計已經(jīng)越來越普遍。本文從使用JAVA的角度來論述了三層結(jié)構(gòu)中優(yōu)點和實現(xiàn)應(yīng)用服務(wù)器層和用戶層的方法和手段。關(guān)鍵字:三層體系結(jié)構(gòu),用戶層,應(yīng)用服務(wù)器層,一.三層結(jié)構(gòu)的簡單描述及優(yōu)點三層體系結(jié)構(gòu),即用戶層、應(yīng)用層和數(shù)據(jù)庫服務(wù)器。用戶層主要指用戶界面,它要求盡可能的簡單,使最終用戶不需要進行任何培訓就能方便地訪問信息;第二層就是應(yīng)用服務(wù)器,也就是常說的中間件,所有的應(yīng)用系統(tǒng)、應(yīng)用邏輯、控制都在這一層,系統(tǒng)的復(fù)雜性也主要體現(xiàn)在應(yīng)用層;最后的數(shù)據(jù)庫服務(wù)器存儲大量的數(shù)據(jù)信息和數(shù)據(jù)邏輯,所有與數(shù)據(jù)有關(guān)的安全、完整性控制、數(shù)據(jù)的一致性、并發(fā)操作等都是在第三層完成。采用JAVA的三(N)層結(jié)構(gòu)的優(yōu)點.能有效降低建設(shè)和維護成本,簡化管理多層應(yīng)用結(jié)構(gòu)在各層次上的組件能單獨更新、替換或增加、拆除。因此,系統(tǒng)維護更方便,代價相對低得多。而且,因各組件互相獨立,更換組件就好比更換組合音響的一個部件,對系統(tǒng)其它部分并無影響,所以更新維護更加安全可靠??蛻舳瞬捎檬菘蛻魴C。因為,客戶機不必進行大量的計算或數(shù)據(jù)處理,它的硬件配置就不需要太高。通過將業(yè)務(wù)邏輯集中到中間層,系統(tǒng)獲得了對業(yè)務(wù)邏輯的獨立性,即當用戶的需求改變時,開發(fā)人員可以迅速地在中間層(應(yīng)用服務(wù)器)上更新業(yè)務(wù)邏輯,而無需將更新后的應(yīng)用提交到眾多的PC終端系統(tǒng)上去,即客戶端無需任何改動(改動眾多的客戶端并不是件輕松的事)。.適應(yīng)大規(guī)模和復(fù)雜的應(yīng)用需求如果說結(jié)構(gòu)化方法使軟件開發(fā)從一門手工藝術(shù)走向科學的工程方法,組件技術(shù)則使軟件工程從個體作坊走向大規(guī)模工業(yè)。雖然,結(jié)構(gòu)化方法對中小型系統(tǒng)開發(fā)能夠行之有效,但對大型系統(tǒng),結(jié)構(gòu)化分析的結(jié)果往往是錯綜復(fù)雜的網(wǎng)狀結(jié)構(gòu),而不是結(jié)構(gòu)清晰的層次結(jié)構(gòu)。這也正是面向?qū)ο蠓椒▽W誕生的原因。組件技術(shù)能使復(fù)雜系統(tǒng)的設(shè)計變得簡單可行,具有良好的伸縮性。三層或多層結(jié)構(gòu),可以將數(shù)據(jù)處理從客戶端轉(zhuǎn)移到應(yīng)用服務(wù)器和數(shù)據(jù)庫服務(wù)器上。這樣,盡管客戶端與應(yīng)用服務(wù)器之間可能存在著多個甚至數(shù)百個的連接,但是應(yīng)用服務(wù)器與數(shù)據(jù)庫服務(wù)器之間的連接卻只有少數(shù)幾個,從而達到減少通信線路上傳遞的數(shù)據(jù)量的目標。這樣的功能分配提供了很強的系統(tǒng)可伸縮性,使得在用戶數(shù)量急劇增加時還能保持系統(tǒng)性能的穩(wěn)定。即使在用戶數(shù)量很大的情況下,數(shù)據(jù)庫仍能保持良好的工作負載,保持系統(tǒng)的快速的響應(yīng)速度。.可適應(yīng)不斷的變化和新的業(yè)務(wù)需求任何應(yīng)用系統(tǒng)實施的重點不在于需求確定以后能否實現(xiàn)這些需求,而是在系統(tǒng)實施后如何適應(yīng)變化的需求。JAVA系統(tǒng)結(jié)構(gòu)和組件式系統(tǒng)的開發(fā)和維護過程中,技術(shù)人員可以按照新的需求,通過在不同系統(tǒng)層次上調(diào)度更新的組件或新加入的組件來調(diào)整舊的系統(tǒng),以適應(yīng)新的與不斷變化的要求。以往的系統(tǒng)只能靠專業(yè)維護人員或系統(tǒng)開發(fā)商的再次開發(fā)或修改原有系統(tǒng),才能滿足新的需求,代價往往很大,無法保證時間上的要求。.訪問異構(gòu)數(shù)據(jù)庫多層結(jié)構(gòu)的中間層即應(yīng)用服務(wù)器能夠提供廣泛的異構(gòu)數(shù)據(jù)庫訪問和復(fù)制能力。傳統(tǒng)的客戶機/服務(wù)器結(jié)構(gòu)則需要在客戶端安裝許多訪問異構(gòu)數(shù)據(jù)庫的驅(qū)動程序,而三層/多層結(jié)構(gòu)只要在中間層有相應(yīng)的驅(qū)動程序就可以訪問異構(gòu)數(shù)據(jù)源。.能有效提高系統(tǒng)并發(fā)處理能力傳統(tǒng)的一體化集中式系統(tǒng)或客戶服務(wù)器架構(gòu),在處理大信息量業(yè)務(wù)時,都可能形成瓶頸。而多層體系架構(gòu)的組件式系統(tǒng)將界面、界面發(fā)布、業(yè)務(wù)應(yīng)用邏輯及數(shù)據(jù)存儲分為多個層次分散管理,邏輯或物理地將它們分開,可減輕系統(tǒng)壓力,提高整體性能。并且中間層可以采取多機并行的方式,相互備份的方式,保證系統(tǒng)的高可用性。一般情況下進行數(shù)據(jù)分析時,每次查詢可能涉及到大量的數(shù)據(jù),往往需要較長的響應(yīng)時間,特別在分布式數(shù)據(jù)環(huán)境下,響應(yīng)時間有時長得令人難以忍受。三層(多)層結(jié)構(gòu)提供了客戶端與服務(wù)器之間的異步通信,使得客戶不必等待提交的分析處理結(jié)果而可以繼續(xù)執(zhí)行其他處理任務(wù)。6.能有效提高系統(tǒng)安全性多層體系結(jié)構(gòu)將數(shù)據(jù)與程序、數(shù)據(jù)控制與應(yīng)用邏輯分層獨立管理,能更嚴格地控制信息訪問;信息傳遞中采用數(shù)據(jù)加密技術(shù),可進一步減低信息失密的風險。應(yīng)用服務(wù)器內(nèi)建安全控制數(shù)據(jù)庫,實現(xiàn)應(yīng)用服務(wù)器與數(shù)據(jù)服務(wù)器的雙重權(quán)限控制,對權(quán)限的劃分更準確、靈活、嚴格。新系統(tǒng)在信息訪問、傳遞和存儲三個環(huán)節(jié)上均有嚴格的安全措施。由于利用JAVA的三層結(jié)構(gòu)具有這么多的優(yōu)點,以至于它的應(yīng)用越來越廣,現(xiàn)在幾乎所有的Web服務(wù)器都采用三(N)層結(jié)構(gòu),所以怎樣采用JAVA實現(xiàn)三(N)層體系結(jié)構(gòu)成了當今程序員希望掌握的一個熱點。二.利用JAVA實現(xiàn)三層體系結(jié)構(gòu)中的中間層:服務(wù)器應(yīng)用層。創(chuàng)建服務(wù)器創(chuàng)建一個Server類從Thread類繼承過來。聲明一個ServerSocket對象監(jiān)聽客戶請求。Server類的構(gòu)造函數(shù)創(chuàng)建和啟動ServerSocket線程。如果在啟動服務(wù)器時引發(fā)異常,將會產(chǎn)生一個出錯信息。此構(gòu)造函數(shù)的代碼如下 :PublicServer(){try{serverSocket=newServerSocket(1001);}catch(IoExceptione){fail(e,”Couldnotstartserver”);}“Serverstarted???”);This.start();}實現(xiàn)監(jiān)聽客戶請求服務(wù)器的run()方法和實現(xiàn)Runnable接口的所有線程一樣,擁有線程的指令。在這種情況下,服務(wù)器進入了個無限循環(huán)并監(jiān)聽客戶請求。當服務(wù)器安全連接到客戶機時,ServerSocket類的accept()方法接收此連接。服務(wù)器為客戶機創(chuàng)建一個用戶定義的類Connection的對象,將一個Socket對象傳入構(gòu)造函數(shù)??蛻魴C和服務(wù)器之間的通訊通過這個套接字發(fā)生。run()方法的代碼如下:Publicvoidrun(){try{while(ture){Socketclient=serverSocket.accept();Connectioncon=newConnection(client);}}catch(IoExceptione){fail(e,”Notlistening”);}}3啟動服務(wù)器main()方法的代碼如下。它創(chuàng)建了一個啟動線程的Publicstaticvoidmain(Stringargs[]){newServer();}Connection線程
Server類的對象。以下代碼片段描述了ConnectionClassConnectionextendsThread
類.{protectedSocketnetClient;protectedbufferedReaderfromClient;protectedPrintStreamtoClient;publicconnection(Socketclient){netClient=client;try{fromClient=newBufferedReader(newInputStreamReader(newClient.getInputStream());toClient=newPrintStream(newClient.getOutStream()));}catch(IoExceptione){try{netClient.close();}catch(IoExceptione1){“Unabletosetupstreams”+e1);Return;}}this.start();}publicvoidrun(){Stringlogin,password;Try{for(
;
;
){toClient.println(“Login:”);login =fromClient.readLine();if(logion==null)break;toClient.println(“Welcome!!Entercommand:
”);}}catch(IoExceptione){}finally{try{netClient.close();}catch(IoExceptione){}}}}Connection類創(chuàng)建一個 BufferedReader對象(fromClient)和一個 PrintStream對象(toClient)。FromClient使用getInputStream()方法檢索客戶端的輸入:toClient 使用getOutPutStream()方法使得服務(wù)器可以把輸出寫到客戶端。這樣一來;就開始了雙工通訊。當客戶連接到服務(wù)器時,服務(wù)器使用toClient對象的Println()方法將”Login:”寫到套接字上 ,它使用 readLien()方法將客戶機發(fā)送的登陸 ID存入字符串變量Login.println()方法用于將”Password:”。提示寫到套接字上.然后,服務(wù)器再次調(diào)用readLine()將用戶輸入存入另一個變量password。服務(wù)器中可以有一個驗證登陸ID和口令以加密的格式存儲,這將是解密的地方.如果用戶是經(jīng)過授權(quán)的,就可以使用已經(jīng)建立流對象開始對話。到了注銷的時候,服務(wù)器中斷循環(huán).這引起finally程序塊的執(zhí)行,關(guān)閉客戶套接字.關(guān)閉套接字是很關(guān)鍵的,如果讓連接開著,很快就將耗盡服務(wù)器的內(nèi)存.finally程序塊確保連接的關(guān)閉。注意:服務(wù)器是多線程的 ,每個客戶都要從服務(wù)器得到它自己的線程。三.利用JAVA實現(xiàn)三層體系結(jié)構(gòu)中的用戶層。;publicclassClient{publicstaticvoidmain(Stringstr[]){Socketsocket;PrintStreamout=null;BufferedReaderin=null;Try{socket=newSocket(“”,1001);out=newPrintStream(socket.getOutputStream());in=newBufferedReader(newInputStreamReader(socket.getInputStream()));}catch(UnknownHostExceptione){“Unknownhostname”);System.exit(1);}catch(IOExceptione){“I/Oerror”);System.exit(1);}BufferedReadersdtin=newBufferedReader(newInputStreamReader((System.in)));Stringlogin=in.readLine();StringlogName=stdin.readLine();out.println(logName);Stringpassword=in.readLine();Stringpass=stdin.readLine();out.println(pass);Stringstr=in.readLing();while((str=stdin.readLine())!=null){out.println(str);if(str.equal(“byebye”))break;}out.close();in.close();stdin.close();}}上述程序輸入“byebye”時中斷連接。這樣當應(yīng)用層的程序運行后,就可以運行客戶端的程序。當輸入了用戶名和密碼后,就可以輸入其他的信息了。直到輸入“byebye”為止。四.小結(jié)JAVA語言是一種使用越來越普遍的語言,而三(N)層體系結(jié)構(gòu)正方興未艾。本文通過使用JAVA語言來編寫應(yīng)用程序的服務(wù)器程序和客戶端程序。雖然只是簡單的實現(xiàn)了服務(wù)器與客戶端之間的通訊,但是如果體會了他的精髓,并輔以 SQLServer或其他的數(shù)據(jù)庫作為存儲、處理數(shù)據(jù)的第三層,這時的應(yīng)用程序?qū)哂蟹浅4蟮膶嵱眯?。出師表兩漢:諸葛亮先帝創(chuàng)業(yè)未半而中道崩殂,今天下三分,益州疲弊,此誠危急存亡之秋也。然侍衛(wèi)之臣不懈于內(nèi),忠志之士忘身于外者,蓋追先帝之殊遇,欲報之于陛下也。誠宜開張圣聽,以光先帝遺德,恢弘志士之氣,不宜妄自菲薄,引喻失義,以塞忠諫之路也。宮中府中,俱為一體;陟罰臧否,不宜異同。若有作奸犯科及為忠善者,宜付有司論其刑賞,以昭陛下平明之理;不宜偏私,使內(nèi)外異法也。侍中、侍郎郭攸之、費祎、董允等,此皆良實,志慮忠純,是以先帝簡拔以遺陛下:愚以為宮中之事,事無大小,悉以咨之,然后施行,必能裨補闕漏,有所廣益。將軍向?qū)?,性行淑均,曉暢軍事,試用于昔日,先帝稱之曰以為營中之事,悉以咨之,必能使行陣和睦,優(yōu)劣得所。
“能”,是以眾議舉寵為督:愚親賢臣,遠小人,此先漢所以興隆也;親小人,遠賢臣,此后漢所以傾頹也。先帝在時,每與臣論此事,未嘗不嘆息痛恨于桓、靈也。侍中、尚書、長史、參軍,此悉貞良死節(jié)之臣,愿陛下親之、信之,則漢室之隆,可計日而待也 。臣本布衣,躬耕于南陽,茍全性命于亂世,不求聞達于諸侯。先帝不以臣卑鄙,猥自枉屈,三顧臣于草廬
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 人教版八年級上冊第四單元第一課第一框《三國鼎立和西晉的統(tǒng)一》教學設(shè)計(含同步練習)
- 教學設(shè)計-浙教信息技術(shù)六(下)14 課《擴音系統(tǒng)的暢想》
- 第二單元 第二章 動物的類群2024-2025學年新教材七年級上冊生物新教學設(shè)計(人教版2024)
- Unit 1 You and me Section B 1a-2b 教學設(shè)計 2024-2025學年人教版七年級英語上冊
- 第四單元 第一課 美國政治的心臟:華盛頓 教學設(shè)計-人教版歷史與社會七年級上冊
- 《石鐘山記》教學設(shè)計 2023-2024學年統(tǒng)編版高中語文選擇性必修下冊
- 第 6 單元 第 20 章第2 節(jié) 性狀遺傳的物質(zhì)基礎(chǔ)2023-2024學年八年級上冊生物同步教學設(shè)計(北師大版)
- Starter Unit 2 Keep Tidy 2a-2e教學設(shè)計 2024-2025學年人教版(2024)七年級英語上冊
- 2025年游泳館職員的勞務(wù)合同
- 2025年二手房交易代理合同規(guī)范樣本
- 讓孩子變成學習的天使——由《第56號教室的奇跡》讀書分享
- 外陰及陰道炎癥
- 球泡檢驗標準
- 公安筆錄模板之詢問嫌疑人(書面?zhèn)鲉局伟舶讣?
- 振動分析基礎(chǔ)講義1
- 記賬憑證匯總表excel模板
- 鄧麗君經(jīng)典歌曲30首簡譜(共33頁)
- 故障診斷技術(shù)的國內(nèi)外發(fā)展現(xiàn)狀(共3頁)
- 園林綠化施工通用表格模板
- 人民檢察院信訪案件終結(jié)辦法
評論
0/150
提交評論