<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    beauty_beast

    上善若水 厚德載物

    目的:
    在實(shí)際項(xiàng)目中出于穩(wěn)定性以及團(tuán)隊(duì)開(kāi)發(fā)技能我一直沒(méi)考慮采用Spring框架,最近有時(shí)間就計(jì)劃學(xué)習(xí)Spring框架,為以后的項(xiàng)目開(kāi)發(fā)做相關(guān)的技術(shù)儲(chǔ)備。


    回顧:
    開(kāi)源框架在以前的項(xiàng)目中用過(guò)不少, struts,webwork,hibernate,前兩者屬于web框架,后者屬于ORM框架,這些框架基本都是側(cè)重于應(yīng)用的某個(gè)層面,不能稱(chēng)之為J2EE全面的框架,往往是需要和其他框架相結(jié)合,我開(kāi)發(fā)的項(xiàng)目采用過(guò)如下組合,有的根本就沒(méi)有框架,只是自己做了設(shè)計(jì)封裝
    a、servlet+jdbc,
    b、servlet+jsp+javabean+jdbc,
    c、struts+BD+DAO ,
    d、webwork+ejb+hibernate

    使用體會(huì):

    ?a、b就不要說(shuō)了,那時(shí)候的代碼結(jié)構(gòu)真是天馬行空,我當(dāng)時(shí)初學(xué),維護(hù)公司一個(gè)項(xiàng)目代碼,1個(gè)jsp實(shí)現(xiàn)一個(gè)模塊所有功能,我花了好長(zhǎng)時(shí)間才?讀懂代碼。
    ? 時(shí)代總是向前發(fā)展的,慢慢的系統(tǒng)結(jié)構(gòu)層次上是越來(lái)越清晰,開(kāi)發(fā)效率也越來(lái)越高,維護(hù)也越來(lái)越容易(基于一定的培訓(xùn)成本)。
    ?
    ?相對(duì)而言出于設(shè)計(jì)理念來(lái)講,個(gè)人更喜歡webwork+hibernate框架組合。?

    ?常有人討論同等開(kāi)發(fā)層面框架的優(yōu)缺點(diǎn),我所屬產(chǎn)品的另外一個(gè)項(xiàng)目團(tuán)隊(duì)曾經(jīng)為項(xiàng)目后續(xù)開(kāi)發(fā) 應(yīng)該采用struts還是webwork爭(zhēng)論的不可開(kāi)交,?其實(shí)個(gè)人認(rèn)為struts,webwork都是非常好的web框架,都有自身的優(yōu)缺點(diǎn):
    ?struts開(kāi)創(chuàng)web MVC框架之先河,2003-2004年開(kāi)發(fā)的項(xiàng)目基本都是采用struts框架(當(dāng)時(shí)招聘人的時(shí)候常問(wèn)會(huì)不會(huì)struts,會(huì)基本就招了?),實(shí)際MVC設(shè)計(jì)理念很早就提出了,在j2SE中有很多使用之處,但當(dāng)時(shí)沒(méi)有一個(gè)web框架開(kāi)發(fā)中很好的貫徹該設(shè)計(jì)理念,直到struts?出現(xiàn)(可能有,只是沒(méi)有apache更引人注意)。

    ?struts優(yōu)點(diǎn)使用用戶(hù)多,相關(guān)技術(shù)文檔比較全面,開(kāi)發(fā)遇到的問(wèn)題相關(guān)案例也比較多、比較容易解決,框架更加穩(wěn)定(這一點(diǎn)非常重要)。
    ?
    ?webwork相對(duì)于struts來(lái)講,的確有不少優(yōu)異之處,(也是情理之中的事,后發(fā)布的框架如果再?zèng)]有優(yōu)點(diǎn)別人也不會(huì)使用)
    ?個(gè)人認(rèn)為在開(kāi)發(fā)上主要有以下幾點(diǎn):

    ?1、頁(yè)面數(shù)據(jù)封裝成值對(duì)象功能比struts強(qiáng)大,webwork采用ognl類(lèi)型轉(zhuǎn)化。
    ?struts只能對(duì)簡(jiǎn)單類(lèi)型的數(shù)據(jù)對(duì)象以及文件對(duì)象封裝成值對(duì)象,?而webwork封裝的值對(duì)象基本沒(méi)有限制,值對(duì)象屬性還可以是List,Map這些對(duì)象(這個(gè)特性在我們開(kāi)發(fā)一些批量數(shù)據(jù)、復(fù)雜數(shù)據(jù)處理時(shí)非常方便),減少很多代碼量,代碼非常整潔。
    ?
    ?2、攔截器功能
    ?攔截器是webwork的一個(gè)亮點(diǎn),實(shí)際上也是業(yè)界比較流行的AOP的一個(gè)體現(xiàn),在實(shí)際開(kāi)發(fā)中你可以配置默認(rèn)的攔截器,?也可以為單獨(dú)的模塊指定特定的攔截器,并且可自定義攔截器,action執(zhí)行前后攔截都可以。?
    ?
    ?3、單元測(cè)試比較方便
    ?最早使用struts框架開(kāi)發(fā)測(cè)試時(shí),相關(guān)的單元測(cè)試基本是不好做的,無(wú)法脫離web環(huán)境,測(cè)試都是只做集成測(cè)試、系統(tǒng)測(cè)試。
    ?使用webwork可以簡(jiǎn)單對(duì)action相關(guān)屬性賦值,可以相關(guān)的單元測(cè)試,當(dāng)然前提是在對(duì)應(yīng)action中沒(méi)有引用web環(huán)境相關(guān)的對(duì)象。?
    ?其實(shí)webwork框架核心還是xwork框架,最早框架使用在C/S結(jié)構(gòu)下,webwork只是xwork的一個(gè)在web環(huán)境的實(shí)現(xiàn),只是ActionContext?上下文發(fā)生了變化,所以說(shuō)action能夠做到脫離web環(huán)境也是情理之中的。


    4、配置文件
    webwork配置文件可以采用引用、繼承其他配置文件方式,在團(tuán)隊(duì)開(kāi)發(fā)一般都是分模塊開(kāi)發(fā),這樣比較方便,配置管理更容易,不會(huì)沖突。

    5、模板技術(shù)集成
    ?我在實(shí)際應(yīng)用項(xiàng)目中是采用velocity模板做視圖展現(xiàn),因?yàn)樵趯?duì)應(yīng)版本的webwork框架中和velociy集成的相當(dāng)好,比較方便,?比直接寫(xiě)jsp代碼更整潔、同時(shí)利用velocity模板特性結(jié)合每個(gè)action的配置文件,可實(shí)現(xiàn)比較通用的頁(yè)面查詢(xún)、錄入等視圖的展現(xiàn)。
    ?而struts是沒(méi)有相關(guān)模板集成,不過(guò)struts的tag相對(duì)而言比webwork的tag好用,webwork如果視圖是jsp類(lèi)型,相關(guān)的tag真的比較麻煩,?雖然tag 庫(kù)很豐富,這也是我為什么使用velocity做視圖的原因 。?
    ?
    6、 框架的效驗(yàn)功能
    ?老實(shí)說(shuō),兩者框架的效驗(yàn)功能都比較麻煩,相對(duì)而言webwork更加麻煩點(diǎn),配置較多,驗(yàn)證接口實(shí)現(xiàn)太麻煩,我實(shí)際項(xiàng)目使用中還是?自定義了相關(guān)后臺(tái)驗(yàn)證接口, 要驗(yàn)證的相關(guān)action只要實(shí)現(xiàn)相關(guān)接口即可,相關(guān)攔截器負(fù)責(zé)攔截驗(yàn)證,?大部分的效驗(yàn)根據(jù)配置數(shù)據(jù)以及html對(duì)象自定義屬性通過(guò)javascript通用效驗(yàn),實(shí)際上現(xiàn)在基于XmlHttp的ajax技術(shù)應(yīng)用成熟的話(huà),?后臺(tái)驗(yàn)證接口的用途會(huì)逐漸淡化。
    ?
    ?說(shuō)明上述比較版本為 struts 1.0 /webwork 2.1.6,后續(xù)struts框架擴(kuò)展很多功能,不是很了解,可能和上訴描述不一定很吻合。
    ?
    ?現(xiàn)在兩者已經(jīng)合并,希望能結(jié)合兩者的優(yōu)勢(shì),發(fā)展出更好web框架。
    ?
    7、關(guān)于Hibernate還是DAO模式,個(gè)人建議采用hibernate+DAO相集合的模式,hibernate占主導(dǎo)地位。
    ?雖然DAO模式通過(guò)自動(dòng)生成代碼效率不會(huì)低,但如果需求變更就比較麻煩,維護(hù)修改代碼較多,測(cè)試工作量也較大,?但Hibernate不是萬(wàn)能的,在一些必要的應(yīng)用還是采用DAO模式,特別是性能相關(guān)的部分。
    ?
    ?
    ?廢話(huà)一大堆,也算把我的工作回顧了一遍,呵呵,這兩天簡(jiǎn)單了解Spring框架,個(gè)人感覺(jué)Spring更像一個(gè)全面的J2EE框架解決方案,?希望能夠有時(shí)間系統(tǒng)的學(xué)習(xí)一把,大家有興趣的請(qǐng)多多交流,我會(huì)將我的學(xué)習(xí)心得和大家分享。
    ?
    ?


    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?
    ?


    ?

    Feedback

    # re: Spring框架學(xué)習(xí)前言---我的開(kāi)源框架使用心得體會(huì)  回復(fù)  更多評(píng)論   

    2006-05-17 09:36 by Harryson
    很想聽(tīng)聽(tīng)關(guān)于d、webwork+ejb+hibernate 的好處.

    # re: Spring框架學(xué)習(xí)前言---我的開(kāi)源框架使用心得體會(huì)  回復(fù)  更多評(píng)論   

    2006-05-17 10:43 by 柳隨風(fēng)
    @Harryson
    呵呵,這是根據(jù)實(shí)際項(xiàng)目使用環(huán)境決定的,
    webwork的優(yōu)點(diǎn)我已經(jīng)介紹了,
    采用hibernate 是因?yàn)闇p少代碼量提高開(kāi)發(fā)效率,后期維護(hù)相對(duì)更好
    使用ejb主要有幾個(gè)原因:
    a、健壯、成熟、穩(wěn)定 (只使用無(wú)狀態(tài)會(huì)話(huà)Bean)
    b、容器管理事務(wù)
    c、做集群比較容易、方便
    并且負(fù)責(zé)的層面非常清晰,三者目前都比較成熟
    webwork web層
    ejb 業(yè)務(wù)層
    hibernate 持久層

    # re: Spring框架學(xué)習(xí)前言---我的開(kāi)源框架使用心得體會(huì)  回復(fù)  更多評(píng)論   

    2006-05-17 11:40 by Flyingis
    樓主的分析讓我學(xué)習(xí)不少,我先了解,具體使用什么框架看工作需要了。

    # re: Spring框架學(xué)習(xí)前言---我的開(kāi)源框架使用心得體會(huì)  回復(fù)  更多評(píng)論   

    2006-09-10 17:26 by ads
    hao
    主站蜘蛛池模板: 亚洲a∨国产av综合av下载 | 国产精品免费观看调教网| 午夜影视日本亚洲欧洲精品一区| 亚洲w码欧洲s码免费| 亚洲AV永久无码天堂影院| 国产亚洲色婷婷久久99精品91| 91精品国产免费| 青娱乐在线免费观看视频| 亚洲一区二区中文| 国产禁女女网站免费看| 久久免费观看国产精品88av| 亚洲日本va一区二区三区| 亚洲国产成人高清在线观看 | 猫咪免费人成网站在线观看| 亚洲综合婷婷久久| 又粗又黄又猛又爽大片免费| 亚洲精品视频在线免费| 一级毛片免费视频网站| 亚洲国产成人久久三区| 亚洲中文字幕不卡无码| 四虎影视www四虎免费| 色欲色香天天天综合网站免费| 深夜a级毛片免费无码| 亚洲精品亚洲人成在线麻豆| 免费精品国产自产拍在| 中国一级特黄的片子免费| 亚洲日韩AV一区二区三区四区| 亚洲AV无码专区亚洲AV伊甸园 | 亚洲精品无码av人在线观看| 大地资源二在线观看免费高清| 99久久99这里只有免费的精品| 亚洲av午夜国产精品无码中文字| 91情国产l精品国产亚洲区 | 亚洲国产精品第一区二区| 亚洲高清无码综合性爱视频| 成人免费视频观看无遮挡| 69精品免费视频| 久久久久免费精品国产| 国产视频精品免费视频| 美女免费视频一区二区| 亚洲av无码成人精品区一本二本|