假如我要蓋一件小平房(做一個網(wǎng)站)
現(xiàn)在我要蓋一棟大樓(開發(fā)一個企業(yè)級項目)?
??????本質(zhì)上還是蓋房子,但是如果就像蓋小平房一樣的去做。結(jié)果是怎樣的呢?現(xiàn)在蓋到第?18?層了,突然說第?5?層內(nèi)側(cè)的電線堵住了,第?5?樓以上都沒有電,于是得把?5?樓以上的全拆了,拆到第?5?樓,把墻鑿開,把電線換一根,再繼續(xù)往上面蓋。
??????相信沒有哪棟大廈是這樣蓋出來的。于是就有了建筑師(軟件架構(gòu)師)這個職位,有了建筑設(shè)計學(xué)(軟件架構(gòu)學(xué))。
??????蓋大樓,步驟是這樣的:
??????企業(yè)級項目中,也是同樣的過程。
??????先用?UML?建模,建立數(shù)據(jù)庫模型,項目的分層架構(gòu)設(shè)計,使用框架讓整個項目健壯起來,動一處而不會牽動全身。?
??????Struts、Spring、Hibernate?都是為了讓項目更健壯而產(chǎn)生的。如果只是要做一個小網(wǎng)站,我覺得很沒有必要使用這些東西,就 ASP,PHP?一定能做得更快,就像蓋小平房一樣。就算要用Java,就用?JSP+JavaBean?就行了。如果是開發(fā)企業(yè)級項目,ASP、PHP?是絕對不能跟?J2EE?相提并論的。
??????Struts?是?MVC?框架,它的作用不是讓人能干什么(它能做的事?JSP?都能做),它的作用是不能讓人干什么。例如:設(shè)計師要砌墻工人在哪里砌磚,他就不能去別處砌。給程序語言嚴(yán)格的規(guī)范,讓它按照規(guī)范走,不能隨心所欲地去編代碼。這樣可以保證項目的高度一致性。?
??????Spring?是?J2EE?輕量級框架。它的做法好比把項目分成一個個地組件,哪一塊出了問題,換掉那一塊就是了。別的地方根本不用動。就好像我剛剛舉的第?5?樓電線出了問題,就在第?5?樓把墻鑿開,換一個電線即可,不用擔(dān)心第?5?樓的墻鑿開上面的會塌下來。?
??????Hibernate?是?ORM?工具,不能稱之為框架,它至少有一個好處,在項目做移植數(shù)據(jù)庫的時候,不用切換數(shù)據(jù)庫層的代碼。當(dāng)然它的好處很多。?
??????不過這些問題,都只有在大的項目開發(fā)中才會用到。所以如是是小項目開發(fā),不建議使用J2EE
- 買一塊地(租一臺服務(wù)器或虛擬主機(jī))
- 申請一個門牌號碼(購買一個域名)
- 買材料,請幾個工人,開始蓋房(準(zhǔn)備所需要的開發(fā)工具,搭建開發(fā)環(huán)境,找?guī)讉€程序員)
- 開始蓋房子(編寫程序代碼)
- 房子蓋好了,東敲敲西敲敲看牢不牢固(自己測試一下功能都齊全了沒)
- 如果有問題,比方說臥室不夠透氣,把臥室的墻多開一扇窗戶(哪個頁面有問題,刪除重新寫一個)比方說墻里面的電線發(fā)現(xiàn)有問題,把墻鑿開,換一根電線。
- 完工,交付使用。
現(xiàn)在我要蓋一棟大樓(開發(fā)一個企業(yè)級項目)?
??????本質(zhì)上還是蓋房子,但是如果就像蓋小平房一樣的去做。結(jié)果是怎樣的呢?現(xiàn)在蓋到第?18?層了,突然說第?5?層內(nèi)側(cè)的電線堵住了,第?5?樓以上都沒有電,于是得把?5?樓以上的全拆了,拆到第?5?樓,把墻鑿開,把電線換一根,再繼續(xù)往上面蓋。
??????相信沒有哪棟大廈是這樣蓋出來的。于是就有了建筑師(軟件架構(gòu)師)這個職位,有了建筑設(shè)計學(xué)(軟件架構(gòu)學(xué))。
??????蓋大樓,步驟是這樣的:
- 地還是要買,不過得做土地勘察,樣本采集,看地質(zhì)如何。
- 然后得畫圖紙,這圖紙一畫就是很久,要考慮到整棟大樓的方方面面,哪些墻可以供拆除,就在里面放電線水管什么的。哪些是主力墻不能拆除。這里的學(xué)問太多,無法一一說清楚。
- 然后就是打地基。這是相當(dāng)重要的環(huán)節(jié),地基沒打好,整棟樓都不穩(wěn)固。然后就是用鋼筋水泥等,打造整棟大樓的框架。讓房子非常堅固。
- 再后才是逐步完善大樓內(nèi)部,一層層的砌磚,一間間地粉刷,裝修。就算某一塊出了問題。去掉或者修復(fù)那一塊就行了,整棟大樓屹立不倒,穩(wěn)穩(wěn)當(dāng)當(dāng)。
??????企業(yè)級項目中,也是同樣的過程。
??????先用?UML?建模,建立數(shù)據(jù)庫模型,項目的分層架構(gòu)設(shè)計,使用框架讓整個項目健壯起來,動一處而不會牽動全身。?
??????Struts、Spring、Hibernate?都是為了讓項目更健壯而產(chǎn)生的。如果只是要做一個小網(wǎng)站,我覺得很沒有必要使用這些東西,就 ASP,PHP?一定能做得更快,就像蓋小平房一樣。就算要用Java,就用?JSP+JavaBean?就行了。如果是開發(fā)企業(yè)級項目,ASP、PHP?是絕對不能跟?J2EE?相提并論的。
??????Struts?是?MVC?框架,它的作用不是讓人能干什么(它能做的事?JSP?都能做),它的作用是不能讓人干什么。例如:設(shè)計師要砌墻工人在哪里砌磚,他就不能去別處砌。給程序語言嚴(yán)格的規(guī)范,讓它按照規(guī)范走,不能隨心所欲地去編代碼。這樣可以保證項目的高度一致性。?
??????Spring?是?J2EE?輕量級框架。它的做法好比把項目分成一個個地組件,哪一塊出了問題,換掉那一塊就是了。別的地方根本不用動。就好像我剛剛舉的第?5?樓電線出了問題,就在第?5?樓把墻鑿開,換一個電線即可,不用擔(dān)心第?5?樓的墻鑿開上面的會塌下來。?
??????Hibernate?是?ORM?工具,不能稱之為框架,它至少有一個好處,在項目做移植數(shù)據(jù)庫的時候,不用切換數(shù)據(jù)庫層的代碼。當(dāng)然它的好處很多。?
??????不過這些問題,都只有在大的項目開發(fā)中才會用到。所以如是是小項目開發(fā),不建議使用J2EE