WEB開發(fā)框架JACKER探討

2024-04-24    分類: 網(wǎng)站建設(shè)

沒有簡單的商業(yè)應(yīng)用,一個成熟的軟件就必然具有一定的復雜度。所以一個成熟的開發(fā)框架就必不可少。

介紹JACKER之前,先拋出一些我的觀點,這些觀點有的是我在多年的開發(fā)積累中形成,更多則是來自javaeye,在這里我也發(fā)過一些貼子,但看貼居多。有時我真的覺得技術(shù)積累還不是最重要的,最多讓你成為一個熟練的技工而已。最重要的是思想,理念的交流,以及溶入自己的思考。

我有幸在論壇中看到了很多開發(fā)理念的爭論,在翻閱這些貼子的同時,自己也不知不覺的就有了立場:

.分層開發(fā)

分層開發(fā)帶來的直接好處就是關(guān)注點分離,每個開發(fā)只要專注于自己一層的開發(fā),是開發(fā)專業(yè)質(zhì)量軟件的起點。

沒有一個開發(fā)會是全才,即使你了解每一層的開發(fā)技術(shù):

html+css+javascript,java:struts+spring+hibernate,xml等等,你敢說你精通這所有的技術(shù)么?我做了五年的開發(fā),接觸了很多,算是很有經(jīng)驗了,但坦白講,自己對html,css始終沒有太多興趣,javascript的掌握也只有所側(cè)重,用javascript實現(xiàn)一個時鐘或獨立完成一個javascript樹對我來說簡直就是不可想象;hibernate也只關(guān)注單表的配置和操作,其他地方?jīng)]時間做深究;xml操作則是了解了下dom4j的一部分,什么xpath因為用不著就沒看;

沒有全才,全才也不能這么用。讓他從頭到尾從界面到數(shù)據(jù)庫的實現(xiàn)一個軟件模塊的每個編碼細節(jié),這是對軟件質(zhì)量的犯罪。“全才”開發(fā)員的水平也有高有低,技術(shù)偏重也各不相同,一人一桿子捅到底的做法,后果就是一個系統(tǒng)里的各個模塊質(zhì)量參差不齊,界面風格難以統(tǒng)一,代碼混亂,公用配置文件并發(fā)沖突嚴重...

所以開發(fā)要分層,WEB開發(fā)首先要分出WEB層,業(yè)務(wù)層,而WEB層還要用MVC架構(gòu)再細分;

分層的開發(fā)需要分層的架構(gòu),分層的框架也強制要求分層的開發(fā)。你如果堅持一人包辦一個模塊的做法,那我覺得你還是采用jsp+javaBean的做法更合適,別選擇分層架構(gòu)了,讓一個人在各層間跳來跳去,會頭暈的;

分層開發(fā)的一個難點是管理,如何分配任務(wù)和各層集成調(diào)試給管理者提出了較高的要求。這是另一個話題這里就不多說了。

.DTO,WEB層,業(yè)務(wù)層

DTO就是Data Transfer Object,數(shù)據(jù)傳輸對象。DTO主要負責client(WEB層)和業(yè)務(wù)層的數(shù)據(jù)傳遞。DTO簡單的就是一些Java類型,比如:String,Integer,甚至List,Map等,更多就是POJO了,用屬性承載數(shù)據(jù)。雖然只有屬性的DTO被一些大師如Martin Fowler認為是“貧血的”,但我認為DTO很好的履行了它的職責:描述業(yè)務(wù)接口,傳輸業(yè)務(wù)數(shù)據(jù)。從調(diào)用業(yè)務(wù)層的角度,我把DTO細分為傳參PDTO和返回值RDTO。有屬性的DTO也從數(shù)據(jù)角度很好的描述了業(yè)務(wù)。所以DTO是必不可少的;

DTO有效的隔離了WEB層(調(diào)用層)和業(yè)務(wù)層,現(xiàn)在還有“貧血的”和“不貧血”之爭,我覺得使用“貧血”這樣的字眼有扣帽子之嫌,我更愿意稱這樣的DTO為簡單DTO,簡單DTO堅持了一個我認為必須堅持的原則:層次分明,不把業(yè)務(wù)邏輯擴散到WEB層。分層的目的不就是分離邏輯么,怎么WEB層還能訪問有業(yè)務(wù)邏輯的對象?包括業(yè)務(wù)常量,都是WEB應(yīng)該杜絕訪問的。而顯然“不貧血”的DTO不打算這么做;

“簡單即是美”,DTO也是。

另外,DTO和O/R mapping中的數(shù)據(jù)對象PO(比如:Hibernate的POJO)是兩回事,一個描述業(yè)務(wù),一個負責底層數(shù)據(jù)庫操作。你如果選擇了分層,就不要試圖用PO取代DTO傳遞到WEB層,自然更不需要hibernate的什么open session in view。原因很多:

分層帶來的一個好處是同步開發(fā),甚至WEB層可以先于后臺業(yè)務(wù)而實現(xiàn),只要業(yè)務(wù)接口定義好并且業(yè)務(wù)層有了模擬MOCK實現(xiàn)。試想數(shù)據(jù)庫還沒建立時,你的PO從何而來,又怎么能傳到WEB層去? 分層帶來的另一個好處是各層的可替換,和可獨立變化以應(yīng)對變化的需求,而DTO作為描述業(yè)務(wù)接口的對象類型應(yīng)該是相對穩(wěn)定的,這種要求下,可能某天你的業(yè)務(wù)層操作不用hibernate而使用ojb了,你還能堅持使用hibernate的PO來描述業(yè)務(wù)接口?或者你的O/R永遠不變,但頻繁的數(shù)據(jù)庫的重構(gòu)導致你的PO一改再改,你還敢用PO去取代相對穩(wěn)定的DTO么?

或許你會告訴我不需要同步開發(fā)或?qū)犹鎿Q或?qū)营毩⒆兓?,那你該考慮為什么選擇分層了,或許分層的架構(gòu)不是你想要的。

本文來源于成都網(wǎng)站建設(shè)公司與成都網(wǎng)站設(shè)計制作公司-創(chuàng)新互聯(lián)成都公司!

網(wǎng)頁標題:WEB開發(fā)框架JACKER探討
分享網(wǎng)址:http://muchs.cn/news19/325069.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷Google、網(wǎng)站策劃自適應(yīng)網(wǎng)站、App開發(fā)品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化