久久中文视频-久久中文网-久久中文亚洲国产-久久中文字幕久久久久-亚洲狠狠成人综合网-亚洲狠狠婷婷综合久久久久

Rss & SiteMap

曙海教育集團論壇 http://www.bjzhda.cn

曙海教育集團論壇
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]
[瀏覽完整版]

標題:Java語言在軟件開發(fā)中的幾個認識誤區(qū)

1樓
wangxinxin 發(fā)表于:2010-12-11 10:09:12
軟件的生命性

  軟件是有生命的,這可能是老調(diào)重彈了,但是因為它事關分層架構的原由,反復強調(diào)都不過分。

  一個有生命的軟件首先必須有一個靈活可擴展的基礎架構,其次才是完整的功能。

  目前很多人對軟件的思想還是焦點落在后者:完整的功能,覺得一個軟件功能越完整越好,其實關鍵還是架構的靈活性,就是前者,基礎架構好,功能添加只是時間和工作量問題,但是如果架構不好,功能再完整,也不可能包括未來所有功能,軟件是有生命的,在未來成長時,更多功能需要加入,但是因為基礎架構不靈活不能方便加入,死路一條。

  正因為普通人對軟件存在短視誤區(qū),對功能追求高于基礎架構,很多吃了虧的老程序員就此離開軟件行業(yè),帶走寶貴的失敗經(jīng)驗,新的盲目的年輕程序員還是使用老的思維往前沖。其實很多國外免費開源框架如ofbiz compiere和slide也存在這方面陷阱,貌似非常符合胃口,其實類似國內(nèi)那些幾百元的盜版軟件,擴展性以及持續(xù)發(fā)展性嚴重不足。

  那么選擇現(xiàn)在一些流行的框架如Hibernate、Spring/Jdonframework是否就表示基礎架構打好了呢?其實還不盡然,關鍵還是取決于你如何使用這些框架來搭建你的業(yè)務系統(tǒng)。

  存儲過程和復雜SQL語句的陷阱

  首先談談存儲過程使用的誤區(qū),使用存儲過程架構的人以為可以解決性能問題,其實它正是導致性能問題的罪魁禍首之一,打個比喻:如果一個人頻臨死亡,打一針可以讓其延長半年,但是打了這針,其他所有醫(yī)療方案就全部失效,請問你會使用這種短視方案嗎?

  為什么這樣說呢?如果存儲過程都封裝了業(yè)務過程,那么運行負載都集中在數(shù)據(jù)庫端,要中間J2EE應用服務器干什么?要中間服務器的分布式計算和集群能力做什么?只能回到過去集中式數(shù)據(jù)庫主機時代。現(xiàn)在軟件都是面向互聯(lián)網(wǎng)的,不象過去那樣局限在一個小局域網(wǎng),多用戶并發(fā)訪問量都是無法確定和衡量,依靠一臺數(shù)據(jù)庫主機顯然是不能夠承受這樣惡劣的用戶訪問環(huán)境的。(當然搞數(shù)據(jù)庫集群也只是五十步和百步的區(qū)別)。

  從分層角度來看,現(xiàn)在三層架構:表現(xiàn)層、業(yè)務層和持久層,三個層次應該分割明顯,職責分明:持久層職責持久化保存業(yè)務模型對象,業(yè)務層對持久層的調(diào)用只是幫助我們激活曾經(jīng)委托其保管的對象,所以,不能因為持久層是保管者,我們就以其為核心圍繞其編程,除了要求其歸還模型對象外,還要求其做其做復雜的業(yè)務組合。打個比喻:你在火車站將水果和盤子兩個對象委托保管處保管,過了兩天來取時,你還要求保管處將水果去皮切成塊,放在盤子里,做成水果盤給你,合理嗎?

  上面是談過分依賴持久層的一個現(xiàn)象,還有一個正好相反現(xiàn)象,持久層散發(fā)出來,開始擠占業(yè)務層,腐蝕業(yè)務層,整個業(yè)務層到處看見的是數(shù)據(jù)表的影子(包括數(shù)據(jù)表的字段),而不是業(yè)務對象。這樣程序員應該多看看OO經(jīng)典PoEAA。PoEAA 認為除了持久層,不應該在其他地方看到數(shù)據(jù)表或表字段名。

  當然適量使用存儲過程,使用數(shù)據(jù)庫優(yōu)點也是允許的。按照Evans DDD理論,可以將SQL語句和存儲過程作為規(guī)則Specification一部分。

  Hibernate等ORM問題

  現(xiàn)在使用Hibernate人也不少,但是他們發(fā)現(xiàn)Hibernate性能緩慢,所以尋求解決方案,其實并不是 Hibernate性能緩慢,而是我們使用方式發(fā)生錯誤:

  “最近本人正搞一個項目,項目中我們用到了struts1.2+hibernate3, 由于關系復雜表和表之間的關系很多,在很多地方把lazy都設置false,所以導致數(shù)據(jù)一加載很慢,而且查詢一條數(shù)據(jù)更是非常的慢。”

  Hibernate是一個基于對象模型持久化的技術,因此,關鍵是我們需要設計出高質(zhì)量的對象模型,遵循DDD領域建模原則,減少降低關聯(lián),通過分層等有效辦法處理關聯(lián)。如果采取圍繞數(shù)據(jù)表進行設計編程,加上表之間關系復雜(沒有科學方法處理、偵察或減少這些關系),必然導致 系統(tǒng)運行緩慢,其實同樣問題也適用于當初對EJB的實體Bean的CMP抱怨上,實體Bean是Domain Model持久化,如果不首先設計Domain Model,而是設計數(shù)據(jù)表,和持久化工具設計目標背道而馳,能不出問題嗎?關于這個問題N多年就在Jdon爭論過。

 
共1 條記錄, 每頁顯示 10 條, 頁簽: [1]

Copyright © 2000 - 2009 曙海教育集團
Powered By 曙海教育集團 Version 2.2
Processed in .03125 s, 2 queries.
主站蜘蛛池模板: 国产精品久久大陆 | 欧美一级成人免费大片 | 黑人巨大videos极度另类 | 成人亚洲精品777777 | 久久国产免费观看精品1 | 99视频在线精品免费观看18 | 日本免费人成黄页在线观看视频 | 九九99久久 | 国产成人mv 在线播放 | 免费一区二区三区四区 | 久久久久久久久一次 | 成人网在线视频 | 午夜在线影院 | 日韩一区在线播放 | 亚洲一区高清 | 亚洲天堂在线视频观看 | 国产精品久久久久久久久久直 | 国产成人精品日本亚洲专区6 | 日韩黄色视屏 | 一级片图片 | 久久99精品一级毛片 | 精品国产一区二区三区在线 | 99精品国产高清一区二区三区香蕉 | 国产三级小视频在线观看 | re久久| 一级毛片免费视频观看 | 亚洲国产日韩精品 | 亚洲国产二区三区 | 欧洲美女与男人做爰 | 免费一级毛片无毒不卡 | 一级a爰片久久毛片 | 亚洲精品视频免费观看 | 久久99视频免费 | 色涩五月天 | 国产私拍福利精品视频推出 | 久久狠狠躁免费观看2020 | 亚洲自偷| 日本久久久 | 国产成人高清一区二区私人 | 步兵精品手机在线观看 | 加勒比一本大道香蕉在线视频 |