畢業(yè)設(shè)計(jì)開(kāi)發(fā)日記連載1:“系統(tǒng)架構(gòu)”
Posted on 2007-02-27 17:43 冰浪 閱讀(2042) 評(píng)論(5) 編輯 收藏 所屬分類(lèi): WEB開(kāi)發(fā)???????? 本無(wú)意要寫(xiě)這個(gè)日記,但隨著設(shè)計(jì)的深入,收獲越多,感想越多,于是想把這一整個(gè)過(guò)程簡(jiǎn)要地記錄下來(lái),也是作為自己這個(gè)時(shí)期的一個(gè)總結(jié)吧。這個(gè)日記并不是嚴(yán)格意義上的日記,只是記錄下主要的該記錄的東西,所以也就沒(méi)有按日期進(jìn)行,而按階段分點(diǎn)敘述的形式進(jìn)行。
開(kāi)發(fā)日記連載1:“系統(tǒng)架構(gòu)”
????????? 我的畢業(yè)設(shè)計(jì)的課題為:高校學(xué)生會(huì)自動(dòng)化辦公系統(tǒng)(CSUOA:College Student Union Office Automatism)。這是我的自擬課題,這個(gè)想法是由于自己在學(xué)院學(xué)生會(huì)兩年的工作經(jīng)歷所得,學(xué)生會(huì)的事務(wù)比較繁雜,很是需要OA一類(lèi)的辦公系統(tǒng)來(lái)裝備;再者,在院學(xué)生會(huì)的兩年,我收獲不少,很是希望能在離開(kāi)生活了四年的大學(xué)校園之前,給培育自己的母校獻(xiàn)上一份薄禮,以至于自己不會(huì)愧對(duì)“網(wǎng)絡(luò)技術(shù)部部長(zhǎng)”一職。值得一提的是,我們班的畢業(yè)設(shè)計(jì)課題100%是我們學(xué)生自擬的,而其它五個(gè)班自擬畢業(yè)設(shè)計(jì)課題的很少,先不管自擬課題的質(zhì)量如何,至少我們有了自己的想法,這點(diǎn)就是一種成功,而且都已通過(guò)指導(dǎo)老師的審核。這點(diǎn)也深得系里領(lǐng)導(dǎo)老師的認(rèn)可。作為班級(jí)成員之一的我,深感自豪!
CSUOA課題的設(shè)計(jì)組有三人,澤遠(yuǎn),松金也是其中之一。由于是我提出的來(lái),所以需求分析之類(lèi)的前期工作基本上就是由我來(lái)負(fù)責(zé)了。在學(xué)校時(shí)要實(shí)習(xí),所以那里就沒(méi)有去想,既然決定提前回家了,我就計(jì)劃在家里著手準(zhǔn)備一下畢業(yè)設(shè)計(jì)的事了。
按我一開(kāi)始的設(shè)想,CSUOA用JSF+Spring+Hibernate三個(gè)框架組合來(lái)完成。其實(shí)最常見(jiàn)的組合是Struts+Spring+Hibernate,為什么我不選擇Struts而選擇JSF?當(dāng)時(shí)在決定學(xué)習(xí)Struts還是JSF時(shí)我看了很多兩者相關(guān)的文章,Struts流行了幾年了,似乎成了主流,但隨著發(fā)展,JSF也是因?yàn)镾un的推動(dòng),有意讓其成為JavaEE的標(biāo)準(zhǔn),而使JSF慢慢抬頭。JSF加入了事件驅(qū)動(dòng)等等更為便捷的技術(shù),可以說(shuō)是很大的一種進(jìn)步,但至今仍不甚完善。我覺(jué)得要學(xué)就學(xué)習(xí)更新更有前途的技術(shù)(我認(rèn)為JSF是有前途的),所以選擇了JSF。JSF作為客戶層,Spring完成業(yè)務(wù)層,Hibernate作為持久層。其實(shí)最為人所推崇的組合應(yīng)該是JSF+EJB3。但由于EJB3也是一個(gè)不太完善的技術(shù),最重要的是它需要JBoss等應(yīng)用服務(wù)器的支持,我所能用的服務(wù)器并不能做出支持,在畢業(yè)答辯時(shí),我無(wú)法完成程序的演示,所以我并沒(méi)有采用這種方案。
在畢業(yè)實(shí)習(xí)時(shí),公司采用struts來(lái)開(kāi)發(fā),分配下來(lái)的開(kāi)發(fā)任務(wù)也是基于struts的,所以為了工作需要,我又投入到了struts的學(xué)習(xí)中,struts沒(méi)有什么很難理解地方,所以看了下基本知識(shí),結(jié)合公司的實(shí)際項(xiàng)目源代碼學(xué)習(xí),很快就上手了。分下來(lái)的任務(wù)也很順利地完成了。在這個(gè)過(guò)程中我認(rèn)識(shí)到了struts在處理web表單數(shù)據(jù)的方便以及它清晰的MVC層次,因此自己喜歡上了struts!值得一提的是,在閱讀公司實(shí)際項(xiàng)目源代碼時(shí),我體會(huì)到了用DAO模式作為數(shù)據(jù)持久層進(jìn)行數(shù)據(jù)庫(kù)操作帶來(lái)的便捷,這也被我后來(lái)設(shè)計(jì)CSUOA所采用。
?????????? 隨著對(duì)項(xiàng)目思考的推進(jìn),我最終確定了CSUOA的系統(tǒng)架構(gòu)為:JSP+Struts+Hibernate。對(duì)于這個(gè)決定,我在此也簡(jiǎn)單說(shuō)明一下。
1、Struts替代JSF。在中國(guó),Struts還是主流,我應(yīng)該更多地為自己將來(lái)的工作著想,讓自己更快地融入公司的開(kāi)發(fā)團(tuán)隊(duì);JSF對(duì)于web表單元素的完全封裝,已經(jīng)讓我們看不到了html表單本來(lái)的面目,換句話說(shuō),已經(jīng)完全舍棄了JSP,JSF與JSP沒(méi)有交互。我還是比較喜歡struts的“純”,自己所寫(xiě)的每一行代碼做了什么事自己都清楚地知道,而JSF卻把很多東西藏了起來(lái),這讓我感到不安。
2、舍棄Spring。在這里,我不是覺(jué)得Spring不是主流或者不喜歡什么的,而是,這SSH三個(gè)框架對(duì)于自己還是不那么熟練,spring可以說(shuō)完全沒(méi)用過(guò),之前只用過(guò)struts和hibernate。對(duì)于這個(gè)畢業(yè)設(shè)計(jì),我并不想把大部分的時(shí)間花在對(duì)這幾個(gè)框架的學(xué)習(xí)上,雖說(shuō)上手不難,但要熟練掌握卻并非朝夕之事,所以我想把注意力縮小在struts和hibernate上。在后來(lái)的進(jìn)行設(shè)計(jì)的情況,也進(jìn)一步證明了這個(gè)決定的正確。
???????? 到此,CSUOA的大體架構(gòu)已基本確定。有些Java高手或許認(rèn)為:畢業(yè)設(shè)計(jì)做OA是不是太沒(méi)意思了,又沒(méi)什么技術(shù)含量。對(duì)此,我的想法是:一個(gè)小型的OA確實(shí)在功能上不具備什么創(chuàng)新或擴(kuò)展;OA其程序可大可小,你完全可以只用JSP來(lái)實(shí)現(xiàn)(當(dāng)然這里我不是說(shuō)用純JSP沒(méi)有技術(shù)含量),主要是要看設(shè)計(jì)者的設(shè)計(jì)思想及其具體實(shí)現(xiàn)。我不會(huì)去做什么如人工智能可行性研究或者其它更為高深的技術(shù)研究或?qū)崿F(xiàn),這并不現(xiàn)實(shí),而且在現(xiàn)階段自己也不具備這種能力。我還記得,在候捷的《深入淺出MFC》中讓我深深牢記的一句話:“勿在浮沙筑高臺(tái)”。我想做的,應(yīng)該做的就是把自己大學(xué)四年所學(xué)的知識(shí)濃縮在這個(gè)畢業(yè)設(shè)計(jì)上,對(duì)自己的知識(shí)做一些思考和總結(jié)。這就夠了。