亚洲精品中文字幕无乱码_久久亚洲精品无码AV大片_最新国产免费Av网址_国产精品3级片

J2EE培訓(xùn)

開(kāi)發(fā)完整J2EE解決方案的八個(gè)步驟

時(shí)間:2024-10-19 06:26:35 J2EE培訓(xùn) 我要投稿
  • 相關(guān)推薦

開(kāi)發(fā)完整J2EE解決方案的八個(gè)步驟

  摘要:Java 2企業(yè)版本(The Java 2 Enterprise Edition,J2EE)平臺(tái)由4個(gè)主要的部分組成:規(guī)范,參考實(shí)現(xiàn),兼容性測(cè)試包和BluePrints程序。BluePrints描述了一個(gè)分布式組件體系的最佳練習(xí)和設(shè)計(jì)指導(dǎo)方針。這篇文章介紹了一個(gè)由八個(gè)步驟組成的J2EE開(kāi)發(fā)方法論,該方法是基于Rational Unified Process和BluePrints應(yīng)用例子的。通過(guò)這篇文章,你將可以更好地理解J2EE體系的許多重要主題,并且可以應(yīng)用這些知識(shí)來(lái)擴(kuò)展和修改這個(gè)簡(jiǎn)單的方法論,從而解決各種特定的商業(yè)問(wèn)題。

開(kāi)發(fā)完整J2EE解決方案的八個(gè)步驟

  在商業(yè)領(lǐng)域,我們使用Java 2企業(yè)版本(J2EE)來(lái)解決商業(yè)問(wèn)題,開(kāi)發(fā)商業(yè)的軟件,或者為其它的商業(yè)項(xiàng)目提供聯(lián)系的服務(wù)。如果一個(gè)公司要使用多層的體系來(lái)建立一個(gè)電子商務(wù)的網(wǎng)站,在其整個(gè)開(kāi)發(fā)周期中,通常都需要經(jīng)理、體系構(gòu)建人員、設(shè)計(jì)人員、編程人員、測(cè)試人員和數(shù)據(jù)庫(kù)專(zhuān)家參與進(jìn)來(lái)。

  為了讓不同的部分可以有效地工作,我們通常都需要一個(gè)軟件開(kāi)發(fā)流程。一個(gè)經(jīng)典的開(kāi)發(fā)流程包括有瀑布模型、快速應(yīng)用開(kāi)發(fā)(RAD)和最終編程。在這篇文章中,我們將集中介紹一個(gè)流行的軟件設(shè)計(jì)流程--Rational Unified Process(RUP)。RUP提供了一個(gè)專(zhuān)門(mén)的方法來(lái)為不同的角色分配任務(wù)。它的目標(biāo)是在一個(gè)可預(yù)計(jì)進(jìn)度和預(yù)算內(nèi),確保我們生產(chǎn)出高質(zhì)量的軟件以符合用戶(hù)的需要。

  我使用RUP作J2EE開(kāi)發(fā)有三個(gè)方面的原因。首先,RUP是以體系為中心的;在提交資源作全方位的開(kāi)發(fā)之前,它首先開(kāi)發(fā)出一個(gè)可執(zhí)行的體系原型。第二,RUP是迭代的而且是基于組件的。該體系的基本通常是包含有一個(gè)架構(gòu),它可以方便地通過(guò)迭代地增加組件,從而在不影響系統(tǒng)其它部分的基礎(chǔ)上,自定義和擴(kuò)展一個(gè)系統(tǒng)的功能。第三。RUP使用一個(gè)工業(yè)標(biāo)準(zhǔn)的語(yǔ)言--UML,可以將系統(tǒng)的體系和組件以可視化的模型展示。RUP有4個(gè)不同的開(kāi)發(fā)階段:初始(inception), 細(xì)化(elaboration), 構(gòu)建(construction)和轉(zhuǎn)換(transition)。這篇文章將從一個(gè)技術(shù)的觀點(diǎn)來(lái)介紹J2EE開(kāi)發(fā)的8個(gè)基本步驟,它是維持以體系為中心的。

  1、需求分析

  需求分析用來(lái)描述系統(tǒng)應(yīng)該和不應(yīng)該做什么,從而開(kāi)發(fā)者和用戶(hù)可以創(chuàng)建一個(gè)初始化的商業(yè)聯(lián)系。你可以用商業(yè)的概念、該領(lǐng)域的術(shù)語(yǔ)、框圖或者其它方法將功能性的需求寫(xiě)成文檔,而非功能性的需求,例如性能和事務(wù),可以寫(xiě)在附加的需求文檔中。你可以用文本或者HTML來(lái)創(chuàng)建高級(jí)別的UI模型,采取哪種方式,要看你在該項(xiàng)目中介入的深度。

  圖一展示了一個(gè)典型的電子商務(wù)系統(tǒng)。viewOrder圖說(shuō)明的是一個(gè)用戶(hù)通過(guò)web登錄至系統(tǒng),查看訂單的列表,并且可點(diǎn)擊進(jìn)去查看每張訂單的細(xì)節(jié)。addLineItems說(shuō)明的是用戶(hù)瀏覽產(chǎn)品目錄,選擇感興趣的產(chǎn)品,并且將它們加入到購(gòu)買(mǎi)訂單中。

  II、面向?qū)ο蟮姆治?/strong>

  分析產(chǎn)生問(wèn)題域模型:類(lèi)、對(duì)象和交互。你的分析應(yīng)該脫離任何的技術(shù)或者實(shí)現(xiàn)的細(xì)節(jié),而應(yīng)該包含有一個(gè)理想的模型。對(duì)象分析可幫助你理解問(wèn)題和獲得問(wèn)題領(lǐng)域方面的知識(shí)。你必須維護(hù)一個(gè)純領(lǐng)域的模型,它不包含技術(shù)的細(xì)節(jié),這是由于商業(yè)流程的改變要比信息技術(shù)慢得多。

  上面的兩步--需求分析和面向?qū)ο蟮姆治霾⒉皇荍2EE特有的,對(duì)于許多面向?qū)ο蟮姆椒ㄕ搧?lái)說(shuō),都是很常見(jiàn)的。圖2展示了一個(gè)高級(jí)別的對(duì)象分析模型,它是一個(gè)寵物店的例子應(yīng)用。它說(shuō)明了我們由需求分析use cases中確定的主要概念。我們將這些概念模型化到對(duì)象中,并且確定它們的關(guān)系。

  需求和對(duì)象分析的結(jié)果是J2EE體系開(kāi)發(fā)的一個(gè)入門(mén)點(diǎn)。要開(kāi)發(fā)一個(gè)體系,你可選擇一個(gè)垂直的部分--通常是一個(gè)關(guān)鍵的部分,例如是訂單領(lǐng)域的對(duì)象模型--來(lái)作對(duì)象設(shè)計(jì)、實(shí)現(xiàn)、測(cè)試和開(kāi)發(fā)。(一個(gè)垂直的部分,是一個(gè)RUP概念,是系統(tǒng)的一小部分。開(kāi)始點(diǎn)是use case的一個(gè)子集,如圖1所示,還有領(lǐng)域分析模型,如圖三所示。一個(gè)垂直部分的實(shí)現(xiàn)就會(huì)產(chǎn)生一個(gè)全功能的迷你系統(tǒng),包括所有層,例如用戶(hù)界面層的JavaServer Pages(JSPs),中層的商業(yè)對(duì)象,例如是Enterprise JavaBeans (EJBs)和后臺(tái)的數(shù)據(jù)庫(kù))。你可以將由原型中得到的經(jīng)驗(yàn)應(yīng)用到域?qū)ο笾,并且將這些認(rèn)識(shí)作為對(duì)象設(shè)計(jì)階段的一個(gè)設(shè)計(jì)指導(dǎo)方針。

  III、體系規(guī)范

  經(jīng)過(guò)前面的兩個(gè)步驟,商業(yè)領(lǐng)域的問(wèn)題和需求都應(yīng)該清晰了,F(xiàn)在我們將集中討論技術(shù)策略和體系上。一個(gè)體系就是各部分一起定義整個(gè)系統(tǒng)的藍(lán)圖:結(jié)構(gòu),接口和通信技術(shù)。我們可進(jìn)一步將一個(gè)體系劃分為企業(yè)和應(yīng)用體系。

  企業(yè)系統(tǒng)體系

  企業(yè)系統(tǒng)體系覆蓋了硬件和軟件架構(gòu),網(wǎng)絡(luò)拓?fù)洌_(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境等。這些都反映了一個(gè)企業(yè)的長(zhǎng)線投資。在開(kāi)發(fā)前,你需要評(píng)估現(xiàn)有的軟件和硬件架構(gòu),如果它不能完全支持J2EE的話,你可能會(huì)加入新的組件和升級(jí)你現(xiàn)有的系統(tǒng)。你需要徹底地評(píng)估硬件,包括有計(jì)算機(jī),路由器、交換機(jī)和網(wǎng)絡(luò)拓?fù),因(yàn)樗鼈兌紩?huì)影響系統(tǒng)的性能和穩(wěn)定,圖4展示了一個(gè)多層的網(wǎng)絡(luò)拓?fù)洹?/p>

  圖4中的多層企業(yè)體系擁有以下主要的組件:

  .Web瀏覽器客戶(hù)端,它可能處在客戶(hù)端公司的防火墻后面

  .HTTP服務(wù)器,它通常處在DMZ區(qū)

  .Web容器主機(jī)提供表現(xiàn)或者商業(yè)邏輯組件

  .應(yīng)用容器提供商業(yè)邏輯組件

  .關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS)和數(shù)據(jù)庫(kù)提供數(shù)據(jù)和數(shù)據(jù)邏輯

  所使用的系統(tǒng)體系類(lèi)型是根據(jù)你對(duì)安全、性能、可靠性的需求以及你公司的財(cái)政狀況而定的。要求很低時(shí),你甚至可以使用一臺(tái)二手的計(jì)算機(jī)和一條電話線。在Internet上,有許多開(kāi)放源代碼的操作系統(tǒng)、Web服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)管理系統(tǒng)。這些系統(tǒng)的花費(fèi)可能只有幾百美金,當(dāng)然,維護(hù)起來(lái)可能要麻煩一點(diǎn)。

  高端的客戶(hù),例如許多華爾街的財(cái)政機(jī)構(gòu),它們需要的是一個(gè)支持安全、高吞吐量和可應(yīng)付不可預(yù)計(jì)網(wǎng)絡(luò)通信的系統(tǒng)。在這種情況下,你通常就需要一個(gè)n層的體系,該體系帶有Web服務(wù)器和應(yīng)用服務(wù)器,并且設(shè)置為群集而達(dá)到容錯(cuò)的目的。

  你還需要評(píng)估軟件架構(gòu),包括Web服務(wù)器,安全管理軟件,應(yīng)用服務(wù)器,域名管理服務(wù)器,數(shù)據(jù)庫(kù)管理系統(tǒng)和第三方的軟件組件,如果你還沒(méi)有購(gòu)買(mǎi)你的應(yīng)用服務(wù)器,那么在評(píng)估過(guò)程中,選擇一個(gè)J2EE的生產(chǎn)商將是一個(gè)重要的部分。我要提醒你一點(diǎn),不同廠家對(duì)J2EE的實(shí)現(xiàn)是有很大不同的,有一些僅支持舊的J2EE版本。此外,一些Web容器或者應(yīng)用容器可能要比其它的快不少。除了實(shí)現(xiàn)J2EE規(guī)范外,許多的廠家還售賣(mài)J2EE體系的組件或者架構(gòu)。選擇一個(gè)穩(wěn)定的J2EE廠家也是重要的,因?yàn)檫@樣可以得到長(zhǎng)久的支持。你通?梢再(gòu)買(mǎi)或者在系統(tǒng)體系級(jí)別開(kāi)發(fā)的功能包括有:

  事務(wù)處理

  國(guó)際化和本地化

  群集和對(duì)象分布

  Session管理

  應(yīng)用性能測(cè)量和描述

  消息

  工作流管理

  入口和個(gè)性化管理

  層到層通信協(xié)議

  安全和防火墻

  應(yīng)用體系

  應(yīng)用體系建立在企業(yè)系統(tǒng)體系之上,指的是一個(gè)特別的項(xiàng)目或者應(yīng)用。在架構(gòu)完成后,體系建立人員就會(huì)研究如何建立一個(gè)專(zhuān)門(mén)的應(yīng)用。如果你的企業(yè)體系只是支持一個(gè)舊的J2EE版本,你可能就需要首先升級(jí)你的系統(tǒng)。如果由于預(yù)算或者時(shí)間關(guān)系而不能做升級(jí),那么就必須在舊版本的技術(shù)限制下工作。重要的是,要建立企業(yè)級(jí)的可重用組件。最終的目標(biāo)是要滿足客戶(hù)的需要。

  一個(gè)體系建立者并不是一個(gè)設(shè)計(jì)者;體系和設(shè)計(jì)是兩件不同的事情。一個(gè)應(yīng)用體系的范圍是系統(tǒng)的主要結(jié)構(gòu)、它的體系設(shè)計(jì)模式以及你可以在上面增加組件的架構(gòu)。體系主要是涉及實(shí)現(xiàn)的非功能性方面,而設(shè)計(jì)是和商業(yè)的use cases有關(guān),use cases是指你應(yīng)用來(lái)轉(zhuǎn)換域?qū)ο竽P蜑橐粋(gè)技術(shù)對(duì)象模型的部分。應(yīng)用體系是項(xiàng)目的結(jié)構(gòu),一個(gè)專(zhuān)門(mén)的應(yīng)用。你通常在應(yīng)用體系結(jié)構(gòu)開(kāi)發(fā)時(shí)要作出的決定包括有:

  層間的功能劃分

  模型域?qū)ο?/p>

  以前的系統(tǒng)需要保存的東西

  購(gòu)買(mǎi)的軟件組件

  需要建立的組件

  如何集成第三方的組件

  圖3中的訂單域?qū)ο蠼忉屃四闳绾巫龅侥P突驅(qū)ο。?duì)于當(dāng)前的Java技術(shù),你可以將域?qū)ο蠓植荚趲讉(gè)地方,包括有作為開(kāi)發(fā)者管理的持續(xù)對(duì)象放在Web容器中,作為EJB放在應(yīng)用服務(wù)器中,或者作為存儲(chǔ)過(guò)程放在RDBMS主機(jī)中。

  在寵物店的設(shè)計(jì)圖中,我們將訂單對(duì)象設(shè)計(jì)為一個(gè)實(shí)體bean、一個(gè)細(xì)節(jié)的對(duì)象和一個(gè)數(shù)據(jù)訪問(wèn)對(duì)象,如圖5和后面的圖6所示。當(dāng)你看到這些時(shí),你將會(huì)認(rèn)識(shí)到其體系的重要性。你可以想一下為什么一個(gè)在分析模型的域?qū)ο蟊挥成錇檫@么多對(duì)象,以及如果改變?cè)撛O(shè)計(jì)的話,將會(huì)發(fā)生什么事情。你也許已經(jīng)聽(tīng)到過(guò)EJB的好處,不過(guò)要注意的是不同廠家實(shí)現(xiàn)起來(lái)的性能是有區(qū)別的。當(dāng)新技術(shù)到來(lái)時(shí),在將其放在到一個(gè)系統(tǒng)之前,你需要做研究并且動(dòng)手做一些測(cè)試。其實(shí)所謂體系的開(kāi)發(fā),就是將設(shè)計(jì)和實(shí)現(xiàn)域?qū)ο竽P偷拇怪眽K轉(zhuǎn)換為設(shè)計(jì)其它許多域?qū)ο蟆?/p>

  在J2EE出現(xiàn)的早期,一些面向?qū)ο蟮脑O(shè)計(jì)者嘗試將域?qū)ο笥成涞綄?shí)體bean中,并且將它們?cè)趯娱g傳送。他們擁有非常好的UML框圖,不過(guò)得到的結(jié)果是一個(gè)慢的系統(tǒng),這是由于不必要的網(wǎng)絡(luò)通信造成的。由對(duì)象分析直接進(jìn)入對(duì)象設(shè)計(jì),而沒(méi)有一個(gè)體系的設(shè)計(jì),沒(méi)有清楚地理解一個(gè)新技術(shù),這樣通常都會(huì)導(dǎo)致一個(gè)項(xiàng)目失敗。

  可交付的體系

  由于J2EE體系是一個(gè)相對(duì)新的主題,因此一個(gè)可交付的J2EE體系并沒(méi)有很好地定義。在寵物店的例子應(yīng)用中,是很難看出體系在哪里結(jié)束和設(shè)計(jì)在哪里開(kāi)始。文檔由高級(jí)別的應(yīng)用體系檢查、Model-View-Controller設(shè)計(jì)模式的討論和一個(gè)體系概覽開(kāi)始。低級(jí)別的文檔就是源代碼。沒(méi)有UML框圖。Sun的J2EE企業(yè)體系認(rèn)證的委派部分要求所有的可交付體系都用UML表示。不過(guò),這里僅表示為一個(gè)類(lèi)框圖、一個(gè)組件框圖和一些對(duì)象交互框圖,。這些對(duì)于一個(gè)真正的J2EE應(yīng)用來(lái)說(shuō)都是不足夠的。要開(kāi)始的話,體系規(guī)范和流程至少需要以下的方面:

  一份系統(tǒng)體系文檔,用來(lái)描述你現(xiàn)有的硬件、軟件、網(wǎng)絡(luò)拓?fù)浜推渌慕M件。

  一個(gè)應(yīng)用體系文檔,用來(lái)描述應(yīng)用的主要結(jié)構(gòu),包括所有對(duì)于體系有重要作用的組件、use case組件和以前的組件的一個(gè)邏輯視圖。

  一個(gè)新組件設(shè)計(jì)指導(dǎo)方針,用來(lái)描述所有的設(shè)計(jì)方針和體系決定,解釋全部這些決定,并且說(shuō)明如果選擇其它的選項(xiàng)會(huì)有什么可能的結(jié)果。這些方針應(yīng)該包含所有重要的基本決定,以便進(jìn)行新組件的設(shè)計(jì)時(shí)可遵從這些規(guī)定,以維持系統(tǒng)體系的完整性。

  一個(gè)工作體系原型來(lái)評(píng)估新的技術(shù);從開(kāi)發(fā)和配置J2EE應(yīng)用中獲取經(jīng)驗(yàn);建立體系架構(gòu);通過(guò)測(cè)量性能、擴(kuò)展性來(lái)預(yù)示所冒的風(fēng)險(xiǎn);還有向客戶(hù)證明你的方法是可行的。

  在你開(kāi)發(fā)過(guò)幾個(gè)J2EE方案并且獲得更多的經(jīng)驗(yàn)后,原型將不再那么重要,這時(shí)一些UML框圖和一些設(shè)計(jì)方針就可能已經(jīng)足夠了。

  IV、對(duì)象設(shè)計(jì)

  在體系規(guī)范的指導(dǎo)下,設(shè)計(jì)可在技術(shù)上擴(kuò)展和適應(yīng)分析的結(jié)果。分析階段時(shí),域?qū)ο竽P突瘧?yīng)該和技術(shù)的細(xì)節(jié)無(wú)關(guān),而對(duì)象設(shè)計(jì)時(shí)則是和技術(shù)因素密切相關(guān)的,包括在體系開(kāi)發(fā)階段時(shí),采用哪一類(lèi)的平臺(tái)、語(yǔ)言和廠家。理論上,你不要修改商業(yè)對(duì)象,除非是為了維護(hù)它們基本的屬性和行為而必須這樣做。

  在體系決議的指導(dǎo)下,一個(gè)詳細(xì)的設(shè)計(jì)說(shuō)明應(yīng)該提到所有類(lèi)的規(guī)范,包括必要的實(shí)現(xiàn)屬性,它們?cè)敿?xì)的接口和偽代碼或者操作的純文本描述。規(guī)范的詳細(xì)程度應(yīng)該達(dá)到只要和模型框圖結(jié)合,就可得到所有必要的編程信息。在許多自動(dòng)化的軟件生產(chǎn)流程中,你可以從面向?qū)ο蟮目驁D中產(chǎn)生代碼的框架。要注意的是stub和skeleton通常是無(wú)需在框圖中展示出來(lái)的,因?yàn)樗鼈儗?duì)于設(shè)計(jì)者和編程者來(lái)說(shuō)都是透明的。我在圖6中包含它們只是為了說(shuō)明EJB的基本點(diǎn)。

  在你完成詳細(xì)的對(duì)象設(shè)計(jì)后,你就完成了域?qū)ο蟮膶?duì)象相關(guān)映射。這樣做的原因是,雖然面向?qū)ο蟮姆椒ㄕ撛谀壳笆潜容^先進(jìn)的,不過(guò)最流行和持久的商店都是關(guān)系型的。此外,一個(gè)客戶(hù)的IT架構(gòu)在許多方面都已經(jīng)反映了現(xiàn)有的投資和商業(yè)RDBMS廠家的選擇。因此將域?qū)ο竽P娃D(zhuǎn)換為關(guān)系模型或者數(shù)據(jù)庫(kù)表是非常重要的。有很多容器管理的工具,不過(guò)它們不能代替一個(gè)好的關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)。

  V、實(shí)現(xiàn)

  有了一個(gè)好的架構(gòu)和細(xì)節(jié)設(shè)計(jì),實(shí)現(xiàn)將是一個(gè)很清晰的任務(wù)。此外,由于我們?cè)隗w系原型階段設(shè)計(jì)和實(shí)現(xiàn)了系統(tǒng)的一個(gè)垂直部分,因此在實(shí)現(xiàn)階段我們不會(huì)碰到很多麻煩事情。在許多公司中,開(kāi)發(fā)者通常都是過(guò)早進(jìn)入實(shí)現(xiàn)階段,特別是當(dāng)經(jīng)理在監(jiān)視他們的時(shí)候,因?yàn)閷?duì)于他們,做其它的事情等于浪費(fèi)公司的時(shí)間。

  結(jié)果是,不再花時(shí)間來(lái)畫(huà)UML框圖,而是在代碼開(kāi)發(fā)中測(cè)試想法,這要花數(shù)星期和幾個(gè)月的時(shí)間,在這種情形下,所有的體系決議和設(shè)計(jì)都是在代碼階段作出的,通常要在幾個(gè)月后才會(huì)發(fā)現(xiàn)開(kāi)發(fā)已經(jīng)進(jìn)入了一個(gè)錯(cuò)誤的方向。

  VI、確認(rèn)

  確認(rèn)包括有測(cè)試以驗(yàn)證該系統(tǒng)符合設(shè)計(jì)并且滿足需求。在整個(gè)開(kāi)發(fā)周期中,驗(yàn)證發(fā)生在開(kāi)發(fā)和安裝階段。單元測(cè)試、集成測(cè)試和用戶(hù)容忍度測(cè)試都是重要的主題

  VII、組合和配置

  組件裝配和方案配置在J2EE的開(kāi)發(fā)中是特別重要的。開(kāi)發(fā)和安裝的環(huán)境可能是完全不同的。如果EJB處在系統(tǒng)中,你需要使用廠家的專(zhuān)門(mén)工具來(lái)提出產(chǎn)生容器的類(lèi),上面我也提到過(guò),Web或者應(yīng)用組件的配置對(duì)于不同的廠家都是不一樣的。你還必須考慮要配置的系統(tǒng)是否擁有任何廠家指定的代碼實(shí)現(xiàn)。在一個(gè)可擴(kuò)展的體系中,系統(tǒng)的結(jié)構(gòu)應(yīng)該是穩(wěn)定的,但是應(yīng)該可以支持增加配置新的或者舊的組件,而無(wú)需影響整個(gè)系統(tǒng)。

  VIII、運(yùn)作和維護(hù)

  在最后的階段,應(yīng)用交付到用戶(hù)的手中,你必須為他們提供培訓(xùn)、文檔和教育。用戶(hù)將會(huì)發(fā)現(xiàn)問(wèn)題和可能會(huì)提出新的改進(jìn)。你必須通過(guò)正確地修改管理過(guò)程來(lái)處理這些需求。你無(wú)需為了配置一個(gè)新的組件或者替換一個(gè)舊的組件而關(guān)閉一個(gè)正在工作的系統(tǒng)。

  體系開(kāi)發(fā)流程

  我們必須做許多體系的決定,因此我們必須整理出一個(gè)體系開(kāi)發(fā)的流程。對(duì)于一個(gè)企業(yè)來(lái)說(shuō),通常有許多應(yīng)用項(xiàng)目,其中的一些甚至?xí)缭綆啄辏瑥亩鴮?dǎo)致系統(tǒng)圍繞許多周期而變化。在你的領(lǐng)域中,許多同樣的項(xiàng)目中都會(huì)出現(xiàn)同樣的需求。你應(yīng)該很容易地重新使用一個(gè)擴(kuò)展的和可重用的體系,它們可能在上個(gè)項(xiàng)目周期或者其它的項(xiàng)目中。這樣會(huì)有一個(gè)對(duì)普遍架構(gòu)的需求,可重用的軟件架構(gòu)可為家族式的軟件應(yīng)用提供一個(gè)普遍的架構(gòu)。

  如果這是你的首個(gè)J2EE項(xiàng)目,你的體系必須被原型化,進(jìn)行測(cè)試、分析,然后再重復(fù)。BluePrint提供了許多好的設(shè)計(jì)指導(dǎo)方針和最佳的練習(xí),寵物店的例子也是一個(gè)很好的參考體系。要很快地提出一個(gè)好的并且是高質(zhì)量的解決方案的有效方法是使用和擴(kuò)展BluePrint參考體系,然后插入到你自己的商業(yè)組件中。

  使用參考體系

  就我的理解來(lái)說(shuō),寵物店體系的本質(zhì)是Model-View-Controller和Command模型。你可以將這些模型應(yīng)用到以Web-centric和EJB-centric的系統(tǒng)。對(duì)于每個(gè)域?qū)ο,一個(gè)視圖是用嵌套的JSP表現(xiàn)。一個(gè)controller處理與商業(yè)相關(guān)的事件,而域?qū)ο蠓庋b商業(yè)邏輯、事務(wù)和安全。我們使用前臺(tái)的servlet作為中央的controller,以接收和解釋所有用戶(hù)的操作。它分派商業(yè)事件到指定的域?qū)ο骳ontrollers,這些controllers可調(diào)用域?qū)ο髞?lái)改變持續(xù)的狀態(tài)。根據(jù)這個(gè)事件處理的結(jié)果,一個(gè)controller選擇下一個(gè)顯示的視圖。以下的組件對(duì)于體系都是很重要的,我們可以修改并且應(yīng)用在大部分的J2EE應(yīng)用:

  MainServlet: 前臺(tái)的組件是Web容器和該架構(gòu)之間的接口

  ModelUpdateListener: 是獲取模型更新事件的對(duì)象的接口

  ModelUpdateNotifier:在更新模型事件發(fā)生的時(shí)候通知監(jiān)聽(tīng)者

  RequestProcessor: 處理由MainServlet接收的全部請(qǐng)求

  RequestHandler:plug-n-play請(qǐng)求處理器組件的接口

  RequestHandlerMapping:包含有請(qǐng)求處理器映射規(guī)則

  RequestToEventTranslator:根據(jù)請(qǐng)求處理器的映射規(guī)則,中央請(qǐng)求處理器委派請(qǐng)求處理到plug-n-play請(qǐng)求處理組件。到商業(yè)事件的透明http請(qǐng)求

  EStoreEvent: 商業(yè)事件

  ShoppingClientControllerWebImpl: Proxy-to-EJB層前臺(tái)控制器

  ScreenflowManager: 控制屏幕流,選擇視圖

  ModelUpdateManager: EJB層模型更新管理器,通報(bào)由于一個(gè)事件而導(dǎo)致的模型修改

  ShoppingClientControllerEJB: EJB層前臺(tái),為EJB客戶(hù)提供遠(yuǎn)程服務(wù)

  StateMachine:中央事件處理器,根據(jù)狀態(tài)處理器的映射規(guī)則,委派事件處理至plug-n-play處理器組件

  StateHandler: EJB層狀態(tài)處理器接口

  StateHandlerMapping: 包含狀態(tài)處理器映射規(guī)則

  擴(kuò)展參考體系

  BluePrint的例子應(yīng)用是一個(gè)好的起點(diǎn),你還應(yīng)該修改它以配合不同的項(xiàng)目和領(lǐng)域。設(shè)計(jì)模型是可重用的微體系,你可以使用它來(lái)擴(kuò)展參考體系。BluePrint提供了一個(gè)非常有用的J2EE模型目錄,而23個(gè)“Gang of Four”模型都是極好的資源。例如,如果你想擴(kuò)展參考體系以支持工作流管理,你可以在配置或者運(yùn)行時(shí)使用中央controller來(lái)動(dòng)態(tài)注冊(cè)事件處理器。中央controller要求每個(gè)注冊(cè)的事件處理器處理一個(gè)事件,直到一個(gè)處理器返回一個(gè)指示已經(jīng)到達(dá)命令串末尾的信息。

  插入你的商業(yè)組件

  J2EE技術(shù)對(duì)于每個(gè)人都是一樣的,但是對(duì)于不同的領(lǐng)域,我們需要解決的問(wèn)題都是不同的。一旦你建立了一個(gè)基本的J2EE框架,你就必須利用一些use cases來(lái)展示該體系可為你的領(lǐng)域工作。你可以通過(guò)選擇一些情形,最好是該系統(tǒng)的一個(gè)重要的功能,或者使用得最多的而且可帶來(lái)明顯的技術(shù)上的冒險(xiǎn)的情形。由域分析模型開(kāi)始,然后嘗試映射你的域?qū)ο蟮礁叨撕偷投说脑O(shè)計(jì)模型,就象我們?cè)趫D5和6中的所示。實(shí)現(xiàn)低級(jí)別的設(shè)計(jì)模型,并且測(cè)試看它是否真正地運(yùn)作。如果所有都如設(shè)想般運(yùn)作,你就可以再重復(fù)上一步,即找冒險(xiǎn)的情形、更多的設(shè)想來(lái)測(cè)試以擴(kuò)展體系的覆蓋。在經(jīng)過(guò)反復(fù)的驗(yàn)證后,初始化的體系原型應(yīng)該就會(huì)變得穩(wěn)定。你可以認(rèn)識(shí)到哪些組件是可以購(gòu)買(mǎi)的,舊系統(tǒng)的哪些方面是應(yīng)該保留的,以及如何為它們做接口。下一步就是軟件設(shè)計(jì),你可以使用設(shè)計(jì)指南中指定的類(lèi)似方法和流程來(lái)進(jìn)行繼續(xù)的開(kāi)發(fā)。

  按部就班

  我們使用了一個(gè)流程的形式,將一個(gè)復(fù)雜的問(wèn)題分解為幾個(gè)小的部分,以便我們能更容易地理解和解決它們。在這篇文章中,我們將J2EE的開(kāi)發(fā)分解為8個(gè)步驟,集中介紹了體系和設(shè)計(jì)。我這里介紹了重要的體系主題和作出體系決定的一個(gè)流程。我還討論了J2EE體系的角色和可交付。

  學(xué)習(xí)通過(guò)這些步驟來(lái)開(kāi)發(fā)J2EE的方案就象學(xué)習(xí)舞蹈一樣。你首先需要自覺(jué)和堅(jiān)持不懈地練習(xí)基本的舞步。一旦你熟悉了它們,你就會(huì)想到將它們放在一起,并且更集中在曲子里每步的大小、速度、流和節(jié)奏。不過(guò)你不應(yīng)該被一個(gè)流程來(lái)限制你的創(chuàng)造力。相反,你應(yīng)該使用和擴(kuò)展該流程來(lái)滿足你的特定需要。要記住,你的最終目標(biāo)是設(shè)計(jì)出一個(gè)完整的J2EE方案來(lái)滿足你的客戶(hù)需求。

【開(kāi)發(fā)完整J2EE解決方案的八個(gè)步驟】相關(guān)文章:

J2EE開(kāi)發(fā)原則10-13

j2ee學(xué)習(xí)方法步驟10-08

中餐服務(wù)十八個(gè)步驟08-07

J2EE項(xiàng)目開(kāi)發(fā)風(fēng)險(xiǎn)匯總07-10

Java Web開(kāi)發(fā)和J2EE的區(qū)別08-29

J2EE架構(gòu)與開(kāi)發(fā)簡(jiǎn)答題05-15

J2EE開(kāi)發(fā)使用手冊(cè)目錄08-27

使用紫砂壺泡茶的八個(gè)步驟09-18

J2EE項(xiàng)目開(kāi)發(fā)10大風(fēng)險(xiǎn)盤(pán)點(diǎn)08-15

j2ee介紹08-30