WEB開發架構JACKER探討(一)

來源:互聯網
上載者:User
web

  沒有簡單的商業應用,一個成熟的軟體就必然具有一定的複雜度。所以一個成熟的開發架構就必不可少。

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

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

  .分層開發

  分層開發帶來的直接好處就是關注點分離,每個開發只要專註於自己一層的開發,是開發專業品質軟體的起點。

  沒有一個開發會是全才,即使你瞭解每一層的開發技術:

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

  沒有全才,全才也不能這麼用。讓他從頭到尾從介面到資料庫的實現一個軟體模組的每個編碼細節,這是對軟體品質的犯罪。“全才”開發員的水平也有高有低,技術偏重也各不相同,一人一杆子捅到底的做法,後果就是一個系統裡的各個模組品質參差不齊,介面風格難以統一,代碼混亂,公用設定檔並發衝突嚴重...

  所以開發要分層,WEB開發首先要分出WEB層,業務層,而WEB層還要用MVC架構再細分;

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

  分層開發的一個痛點是管理,如何分配任務和各層整合調試給管理者提出了較高的要求。這是另一個話題這裡就不多說了。

  .DTO,WEB層,業務層

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

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

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

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

  分層帶來的一個好處是同步開發,甚至WEB層可以先於後台業務而實現,只要業務介面定義好並且業務層有了類比MOCK實現。試想資料庫還沒建立時,你的PO從何而來,又怎麼能傳到WEB層去?
分層帶來的另一個好處是各層的可替換,和可獨立變化以應對變化的需求,而DTO作為描述業務介面的物件類型應該是相對穩定的,這種要求下,可能某天你的業務層操作不用hibernate而使用ojb了,你還能堅持使用hibernate的PO來描述業務介面?或者你的O/R永遠不變,但頻繁的資料庫的重構導致你的PO一改再改,你還敢用PO去取代相對穩定的DTO嗎?

  或許你會告訴我不需要同步開發或層替換或層獨立變化,那你該考慮為什麼選擇分層了,或許分層的架構不是你想要的。:)



相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。