精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

總結(jié)J2EE項(xiàng)目開(kāi)發(fā)10大風(fēng)險(xiǎn)

開(kāi)發(fā) 后端
當(dāng)你開(kāi)始著手組織一個(gè)企業(yè)級(jí)Java項(xiàng)目的時(shí)候,就如同開(kāi)始同時(shí)輪回地扔好幾個(gè)魔術(shù)小球: 業(yè)主關(guān)系處理、持續(xù)而漫長(zhǎng)的設(shè)計(jì)開(kāi)發(fā)過(guò)程,以及保持健全與完整性,等等。每一個(gè)“小球”都會(huì)帶來(lái)其固有的風(fēng)險(xiǎn),有些顯而易見(jiàn),有些則不易發(fā)現(xiàn)。盡管如此,所有這些風(fēng)險(xiǎn)都是完全可以避免的。

當(dāng)你開(kāi)始著手組織一個(gè)企業(yè)級(jí)Java項(xiàng)目的時(shí)候,就如同開(kāi)始同時(shí)輪回地扔好幾個(gè)魔術(shù)小球: 業(yè)主關(guān)系處理、持續(xù)而漫長(zhǎng)的設(shè)計(jì)開(kāi)發(fā)過(guò)程,以及保持健全與完整性,等等。每一個(gè)“小球”都會(huì)帶來(lái)其固有的風(fēng)險(xiǎn),有些顯而易見(jiàn),有些則不易發(fā)現(xiàn)。盡管如此,所有這些風(fēng)險(xiǎn)都是完全可以避免的。本文作者Humphrey Sheil分析了威脅到企業(yè)級(jí)Java項(xiàng)目成功的10大風(fēng)險(xiǎn), 并一一列出了風(fēng)險(xiǎn)規(guī)避的策略方法。

--------------------------------------------------------------------------------

在過(guò)去這段時(shí)期里,我擔(dān)任過(guò)程序員、高級(jí)設(shè)計(jì)師以及架構(gòu)設(shè)計(jì)師等工作,見(jiàn)識(shí)過(guò)很優(yōu)秀的企業(yè)級(jí)Java項(xiàng)目,也見(jiàn)識(shí)過(guò)不好的,甚至很"丑陋"的項(xiàng)目。有時(shí)候我會(huì)自己?jiǎn)栕约海瑸槭裁匆粋€(gè)項(xiàng)目可以取得成功,而另一個(gè)卻走向失敗?很難定義出某種規(guī)則或標(biāo)準(zhǔn)來(lái)表明各個(gè)不同的項(xiàng)目應(yīng)該如何成功,J2EE項(xiàng)目也并不例外。但與此相反的是,我們可以從各個(gè)角度和層次上去考察項(xiàng)目失敗的原因,如果很好地避開(kāi)了這些風(fēng)險(xiǎn),項(xiàng)目就可以取得成功。在本文中,我將提出排名前10位的企業(yè)級(jí)Java項(xiàng)目風(fēng)險(xiǎn),供讀者參考。

在各種各樣的風(fēng)險(xiǎn)中,有些風(fēng)險(xiǎn)只是延緩了項(xiàng)目的進(jìn)度,有些帶來(lái)了一些不必要的工作,而另一些則會(huì)把成功的可能性徹底地消除。不過(guò),如果預(yù)先有了足夠的準(zhǔn)備和清醒的認(rèn)識(shí),那么并沒(méi)有不可避免的事情。這好比如果你是一名旅行者,你清楚地知道前面的道路在什么方向,做了充分的準(zhǔn)備,又有一位清楚知道哪里有危險(xiǎn)的向?qū)В@樣就會(huì)比較順利地到達(dá)自己的目的地。

本文采用了以下結(jié)構(gòu)來(lái)描述風(fēng)險(xiǎn):

風(fēng)險(xiǎn)名稱:風(fēng)險(xiǎn)的標(biāo)題(使用粗體)

項(xiàng)目階段:在哪個(gè)項(xiàng)目階段會(huì)發(fā)生風(fēng)險(xiǎn)情況

影響階段:會(huì)影響到以后的哪些階段

癥狀: 風(fēng)險(xiǎn)產(chǎn)生時(shí)的癥狀

規(guī)避方案:如何規(guī)避風(fēng)險(xiǎn)或者把其對(duì)項(xiàng)目的影響降低到最小程度

備注: 風(fēng)險(xiǎn)相關(guān)的補(bǔ)充說(shuō)明和提示

通過(guò)對(duì)企業(yè)級(jí)Java項(xiàng)目的仔細(xì)考察,本文將J2EE項(xiàng)目過(guò)程分解為以下幾個(gè)階段:

提供商選擇: 在開(kāi)始你的J2EE項(xiàng)目之前,要選擇最合適的提供商,從應(yīng)用服務(wù)器到開(kāi)發(fā)工具組合,一直至工作期間享用的咖啡的廠商。

 

設(shè)計(jì): 在遵照一系列嚴(yán)格的規(guī)范和軟件工程方法的前提下,可以開(kāi)始進(jìn)行足夠充分的設(shè)計(jì),然后再很自然地進(jìn)入開(kāi)發(fā)階段。在開(kāi)發(fā)之前,要周全地考慮好正在做什么,以及如何往下做的問(wèn)題。另外,我使用了一些設(shè)計(jì)模板來(lái)確信在進(jìn)入開(kāi)發(fā)之前,已經(jīng)想到了所有的問(wèn)題和可能的解決方案。但是,我有時(shí)也在該階段做一些編碼,有時(shí)候這樣做可以回答一些問(wèn)題,有效地判斷出性能上和模塊劃分上的問(wèn)題。

開(kāi)發(fā): 也就是程序開(kāi)發(fā)階段,選擇一些好的開(kāi)發(fā)工具,進(jìn)行精良的設(shè)計(jì)等等,在這個(gè)階段將顯示其優(yōu)越性,并且可以給開(kāi)發(fā)帶來(lái)很大的幫助。

穩(wěn)定性/負(fù)載測(cè)試:在該階段,系統(tǒng)架構(gòu)師和項(xiàng)目經(jīng)理應(yīng)該凍結(jié)住產(chǎn)品特性,并把焦點(diǎn)放在質(zhì)量以及產(chǎn)品參數(shù)(允許的并發(fā)用戶數(shù)量,故障恢復(fù)情況,等等)上。質(zhì)量和性能在該階段應(yīng)得到足夠的重視。當(dāng)然,最好應(yīng)該避免在前階段寫(xiě)出不良的運(yùn)行緩慢的代碼而到本階段來(lái)作很多的修改。

成熟期:這不是一個(gè)真正的項(xiàng)目階段,而是一個(gè)固定的準(zhǔn)備階段。過(guò)去潛伏的錯(cuò)誤(來(lái)自于糟糕的設(shè)計(jì)和開(kāi)發(fā)、錯(cuò)誤的廠商選擇)可能出現(xiàn)并影響你的系統(tǒng)。

OK,以下讓我們進(jìn)入 top 10 項(xiàng)目風(fēng)險(xiǎn)!

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)1:沒(méi)有真正理解 Java, EJB, 和J2EE

這個(gè)問(wèn)題可以分解為3個(gè)部分,以便于分析。

描述: 沒(méi)有真正理解Java

項(xiàng)目階段:開(kāi)發(fā)

影響階段:設(shè)計(jì)、穩(wěn)定性測(cè)試、成熟期

對(duì)系統(tǒng)性能的影響:可維護(hù)性、可擴(kuò)展性、性能

癥狀:

重復(fù)開(kāi)發(fā)了JDK核心API中的功能或類

不懂得以下列表中的某些項(xiàng)(這只是一些主題或者實(shí)際例子而已):

垃圾收集器 (train, generational, incremental, synchronous, asynchronous)

對(duì)象在何時(shí)能被進(jìn)行垃圾收集 -- dangling references

使用的繼承機(jī)制及其權(quán)衡

over-riding和over-loading方法

為什么java.lang.String (在這里用你所中意的類代替) 提供的性能不好

Java中的pass-by參考語(yǔ)義和EJB中pass-by值的語(yǔ)義的比較

使用 == 或者使用equals() 方法 for nonprimitives

在不同平臺(tái)上Java線程的運(yùn)行順序方式(例如是否是搶先方式的)

新線程和本地線程的比較

Hotspot技術(shù)(以及為什么舊的性能調(diào)整技術(shù)降低了Hotspot 的優(yōu)化效果)

JIT,以及什么時(shí)候好的JIT變得不好(未安裝的JAVA編譯器,以及你的代碼運(yùn)行得剛夠良好)

API搜集

RMI

規(guī)避方案:

你需要不斷改進(jìn)Java方面的知識(shí),尤其是深入了解Java的優(yōu)勢(shì)和不足之處。Java的存在價(jià)值已經(jīng)遠(yuǎn)不止是一種語(yǔ)言,理解平臺(tái)(JDK及工具等)也是同樣重要的。具體地說(shuō),你應(yīng)該是經(jīng)過(guò)認(rèn)證的Java程序員,如果你不是的話,也許你有時(shí)會(huì)為還有那么多不知道的內(nèi)容而感到驚訝。另外,你可以加入Java的郵件列表。以前我曾加盟過(guò)的每一個(gè)公司都加入了這樣的郵件列表,從同行中學(xué)到技術(shù),這將是你最好的資源。

備注:

如果你或者你的團(tuán)隊(duì)中的成員不真正了解編程語(yǔ)言和平臺(tái),怎么還能保持成功的希望呢?強(qiáng)干的Java程序員之于EJB和J2EE,就象是鴨子之于水一樣。與此相反,比較弱的、沒(méi)有經(jīng)驗(yàn)的程序員只能開(kāi)發(fā)出質(zhì)量低劣的J2EE應(yīng)用程序。

描述: 沒(méi)有真正理解EJB

項(xiàng)目階段:

設(shè)計(jì)

影響階段:

開(kāi)發(fā)、穩(wěn)定化

對(duì)系統(tǒng)的影響:

維護(hù)

癥狀:

EJB在第一次被調(diào)用后沒(méi)有再被使用到(尤其是stateless session bean)

沒(méi)有重復(fù)利用價(jià)值的EJB

不理解開(kāi)發(fā)者要做什么,容器提供什么

EJB沒(méi)有依照規(guī)范定義(fire線程, 加載了本地庫(kù),試圖執(zhí)行I/O,等等)

解決方案:

要改進(jìn)關(guān)于EJB方面的知識(shí),可以找一個(gè)周末來(lái)閱讀EJB規(guī)范 (1.1版有314頁(yè)),然后閱讀2.0規(guī)范(524頁(yè)!),這樣可以了解到1.1沒(méi)有定義到的而在2.0規(guī)范中補(bǔ)充的內(nèi)容。EJB開(kāi)發(fā)者從18.1及18.2章節(jié)開(kāi)始閱讀是比較合適的。

備注:

不要從提供商的角度去看EJB,要確切地知道規(guī)范所支持的標(biāo)準(zhǔn)EJB模型和基于這些模型的特殊應(yīng)用之間的區(qū)別。這也會(huì)有助于你遷移到別的提供商的時(shí)候所用。

描述: 沒(méi)有真正理解J2EE

項(xiàng)目階段:

設(shè)計(jì)

影響階段:

開(kāi)發(fā)

對(duì)系統(tǒng)的影響:

維護(hù)、擴(kuò)展性、性能

癥狀:

"Everything is an EJB"的設(shè)計(jì)方式

用手工事務(wù)管理取代了容器-提供的機(jī)制

自定義方式的安全處理 -- J2EE平臺(tái)在企業(yè)級(jí)計(jì)算中,從表示邏輯到后臺(tái)處理,已具有最完整的集成安全架構(gòu);但很少用到其全部功能。

解決方案:

學(xué)習(xí)J2EE的關(guān)鍵組件,并且了解它們的優(yōu)缺點(diǎn),依次用它們替代每一個(gè)服務(wù);“知識(shí)就是力量”在這里是行之有效的。

備注:

只有知識(shí)能夠彌補(bǔ)這些問(wèn)題。好的Java開(kāi)發(fā)者會(huì)成為好的EJB開(kāi)發(fā)者,此后也應(yīng)逐漸成為J2EE得道高手。Java和J2EE知識(shí)掌握得越多,設(shè)計(jì)和開(kāi)發(fā)工作就會(huì)越出色。在設(shè)計(jì)階段一切都會(huì)有條不紊。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)2: 過(guò)度設(shè)計(jì)(Over-engineering) (采用 EJB或者不采用EJB)

項(xiàng)目階段:

設(shè)計(jì)

影響的項(xiàng)目階段:

開(kāi)發(fā)

對(duì)系統(tǒng)的影響:

維護(hù)、擴(kuò)展性、性能

癥狀:

過(guò)于龐大的EJB

開(kāi)發(fā)者無(wú)法解釋EJB做什么,以及其間的聯(lián)系

無(wú)法重復(fù)使用的EJB、組件或者服務(wù)

EJB啟動(dòng)了新的事務(wù),而該事務(wù)本該由一個(gè)已存在的EJB啟動(dòng)

為了安全,把數(shù)據(jù)分離級(jí)別定得太高

解決方案:

過(guò)度工程化的解決之道直接來(lái)自于極限編程 (XP)方法:用最小的設(shè)計(jì)和編程來(lái)滿足需求,除此之外別無(wú)它干。除非你需要明確知道今后可能的需求,如將來(lái)的負(fù)載要求,或者系統(tǒng)在最高負(fù)載下的表現(xiàn),否則大可不必為系統(tǒng)將來(lái)的情況做太多考慮或猜測(cè)。另外,J2EE平臺(tái)已經(jīng)定義了可伸縮性及出錯(cuò)恢復(fù)等特性,可以讓服務(wù)器系統(tǒng)為你進(jìn)行處理。

在最小的系統(tǒng)中,只包含一個(gè)個(gè)小組件,這些組件只做一件事,只要把這些要求做到的進(jìn)行實(shí)現(xiàn),系統(tǒng)穩(wěn)定性就已經(jīng)得到了提高,而且,你的系統(tǒng)的可維護(hù)性會(huì)變得很強(qiáng),在未來(lái)要增加功能以滿足新的需求也將變得容易。

備注:

除了上面所列方案之外,可以推行設(shè)計(jì)模式 -- 它們可以顯著地改進(jìn)你的系統(tǒng)設(shè)計(jì)。EJB模型本身也廣泛使用了設(shè)計(jì)模式。例如,每個(gè)EJB所帶的Home 接口就是Finder和Factory模式的實(shí)例。EJB的remote接口扮演了一種實(shí)際bean實(shí)現(xiàn)的代理,并且對(duì)于提供容器的能力也是至關(guān)重要的,這些容器截取調(diào)用信號(hào)并提供諸如透明(transparent)負(fù)載均衡的服務(wù)。忽視設(shè)計(jì)模式也是危險(xiǎn)的一部分。

我常提到要反對(duì)的另外一種危險(xiǎn)是:僅僅是為了使用EJB而使用EJB。在你的應(yīng)用中的某一部分可能并不需要EJB,甚至你的整個(gè)應(yīng)用都不需要。這是過(guò)度工程化所走的極端,而且我確實(shí)也目睹了一些良好的servlet和JavaBean應(yīng)用被重構(gòu)為EJB,而這樣做并沒(méi)有很好的技術(shù)上的理由。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)3: 沒(méi)有將業(yè)務(wù)規(guī)則和邏輯表現(xiàn)形式相分離

項(xiàng)目階段:

設(shè)計(jì)

影響的項(xiàng)目階段:

開(kāi)發(fā)

對(duì)系統(tǒng)的影響:

維護(hù)、擴(kuò)展性、性能

癥狀:

過(guò)于龐大、沒(méi)有邊際的JSP程序

在業(yè)務(wù)邏輯改變的時(shí)候必須修改JSP

在要求改變界面顯示的時(shí)候需要修改并重新配置EJB和其它后臺(tái)組件

規(guī)避方案:

J2EE平臺(tái)使你有機(jī)會(huì)將表示邏輯和導(dǎo)航控制相分離,進(jìn)而與業(yè)務(wù)規(guī)則相分離。這被稱為模式2結(jié)構(gòu)。

備注:

可以使用具有一致性的設(shè)計(jì)來(lái)進(jìn)行用戶界面框架的連接。(例如可以使用taglib),這將幫助你避免邏輯分離的問(wèn)題。有許多現(xiàn)成的好的方法可供選擇。對(duì)每一個(gè)分別進(jìn)行評(píng)估,然后采用最合適的框架。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)4: 沒(méi)有在開(kāi)發(fā)環(huán)境中進(jìn)行適當(dāng)?shù)呐渲?/STRONG>

項(xiàng)目階段:

開(kāi)發(fā)

影響的項(xiàng)目階段:

穩(wěn)定化、并發(fā)、成熟期

對(duì)系統(tǒng)的影響:

你的權(quán)衡

癥狀:

經(jīng)過(guò)多日或數(shù)周的時(shí)間才能過(guò)渡到成熟系統(tǒng)

風(fēng)險(xiǎn)存在與過(guò)渡期,帶有很多不確定性,有些主要的功能場(chǎng)景沒(méi)有被測(cè)試到

實(shí)際系統(tǒng)中的數(shù)據(jù)和開(kāi)發(fā)、測(cè)試中的數(shù)據(jù)不同

無(wú)法在開(kāi)發(fā)者機(jī)器上進(jìn)行組建

應(yīng)用行為在開(kāi)發(fā)、穩(wěn)定化及產(chǎn)品環(huán)境中各不相同

規(guī)避方案:

解決之道是忠實(shí)地在開(kāi)發(fā)環(huán)境中配置實(shí)際的環(huán)境,讓開(kāi)發(fā)所用環(huán)境接近于要實(shí)施產(chǎn)品的環(huán)境。如果未來(lái)環(huán)境是JDK 1.2.2及Solaris 7,那么不要在JDK 1.3及Red Hat Linux上進(jìn)行開(kāi)發(fā)。對(duì)于所用的應(yīng)用服務(wù)器也是如此。同樣,要快速地看一下產(chǎn)品數(shù)據(jù)庫(kù)中的數(shù)據(jù),并將這樣的數(shù)據(jù)用于測(cè)試。不要依賴于人工創(chuàng)建的數(shù)據(jù)。如果產(chǎn)品數(shù)據(jù)很敏感,則要使之變得不敏感,然后把它配置起來(lái)。開(kāi)發(fā)中未能預(yù)期到的產(chǎn)品數(shù)據(jù)將對(duì)以下過(guò)程產(chǎn)生破壞:

數(shù)據(jù)檢驗(yàn)規(guī)則

系統(tǒng)測(cè)試行為

系統(tǒng)組件構(gòu)建(特別地包括:EJB-EJB以及EJB-數(shù)據(jù)庫(kù))

最為糟糕的是,這樣還可能產(chǎn)生異常、空指針,以及你從沒(méi)見(jiàn)過(guò)的問(wèn)題。

備注:

開(kāi)發(fā)人員常把安全性問(wèn)題放到穩(wěn)定化階段才開(kāi)始解決。要防止這樣的陷阱產(chǎn)生,你也可以花費(fèi)同樣多的時(shí)間在業(yè)務(wù)邏輯中改進(jìn)安全性。

成熟期是一個(gè)復(fù)雜的過(guò)程,其中充滿了技術(shù)性問(wèn)題和非技術(shù)性問(wèn)題。你可能會(huì)陷于想不到的一大堆問(wèn)題中,這就是成熟化所意味的一切。開(kāi)發(fā)及穩(wěn)定化環(huán)境過(guò)程為你提供了制造更多這樣的問(wèn)題,以及發(fā)現(xiàn)這樣的問(wèn)題的地方,不斷去做,就可以大大減少風(fēng)險(xiǎn)。

你做的工程越多,你就越能了解什么是可行的,什么是不可行的。你可以對(duì)工程問(wèn)題進(jìn)行記錄,以避免同樣的錯(cuò)誤重復(fù)發(fā)生。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)5: 選擇了錯(cuò)誤的提供商

項(xiàng)目階段:

提供商選擇

影響階段:

設(shè)計(jì)、開(kāi)發(fā)、穩(wěn)定化/負(fù)載測(cè)試,成熟化

對(duì)系統(tǒng)的影響:

可伸縮性、性能、可維護(hù)性及穩(wěn)定性

癥狀:

開(kāi)發(fā)人員要使用更多的時(shí)間來(lái)處理工具方面的問(wèn)題,而不是很有成效地使用這些工具

為了應(yīng)付已知的和未知的問(wèn)題,而不得不進(jìn)行顯著的系統(tǒng)重新設(shè)計(jì)

在不同的工具之間很難進(jìn)行集成(應(yīng)用服務(wù)器與IDE工具,IDE工具與調(diào)試器,源碼控制與合成工具,等等)

對(duì)于IDE工具和調(diào)試器等,開(kāi)發(fā)人員往往排斥它們,而推崇自己所喜歡的工具

規(guī)避方案:

為了避免風(fēng)險(xiǎn)5,你需要一個(gè)很好的提供商選擇過(guò)程,風(fēng)險(xiǎn)10的規(guī)避也適用于此。

要真正衡量一種IDE工具是否最合適的方法是真正地進(jìn)行使用。而唯一來(lái)評(píng)估一種J2EE應(yīng)用的方法是建立一種概念試驗(yàn)來(lái)進(jìn)行證明,在試驗(yàn)中要包含你的應(yīng)用框架。事實(shí)上,你也不希望在花費(fèi)了3個(gè)月時(shí)間進(jìn)行了培訓(xùn)和開(kāi)發(fā)后,在使用時(shí)又發(fā)現(xiàn)一些bug。

假設(shè)在開(kāi)發(fā)到一半的時(shí)候,突然發(fā)現(xiàn)你的工具集有問(wèn)題,那么你早應(yīng)該知道,有些工具確實(shí)比另一些更重要。如果你所選的應(yīng)用服務(wù)器不能充分滿足你的需要,你只好修改原先的設(shè)定。如果IDE不好,則需要設(shè)置最低限度的代碼標(biāo)準(zhǔn),并讓開(kāi)發(fā)人員任意選擇他們認(rèn)為最為有效的工具。

備注:

要真正了解到哪一個(gè)供應(yīng)商對(duì)一項(xiàng)特殊的任務(wù)來(lái)說(shuō)最合適,其實(shí)并不是一件一次性決定的事情。你需要不斷地跟蹤與評(píng)估這個(gè)市場(chǎng)。例如,在過(guò)去的一年里我用過(guò)4種不同的IDE工具,這取決于我使用了什么樣的應(yīng)用服務(wù)器、平臺(tái),是否使用EJB等。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)6: 不了解你的提供商

項(xiàng)目階段:

提供商選擇

影響階段:

提供商選擇階段后面的所有階段:設(shè)計(jì)、開(kāi)發(fā)、穩(wěn)定化/負(fù)載測(cè)試、成熟化

對(duì)系統(tǒng)的影響:

可維護(hù)性、可伸縮性、性能

癥狀:

開(kāi)發(fā)所用周期超過(guò)了最壞預(yù)測(cè)的周期1/3以上

提供商已經(jīng)提供了某項(xiàng)功能,但開(kāi)發(fā)者在不知道的情況下重新進(jìn)行了該項(xiàng)功能的開(kāi)發(fā)

規(guī)避方案:

為了規(guī)避這樣的風(fēng)險(xiǎn),你可以盡可能地訂閱提供商的網(wǎng)上資源,例如郵件列表、新聞組、版本信息(尤其是其中的bug修復(fù)補(bǔ)丁的說(shuō)明等),你能從中得到無(wú)法估量之多的收獲。

一旦你已經(jīng)選定了提供商,那么立即就要投資進(jìn)行培訓(xùn),并且盡可能趕在項(xiàng)目啟動(dòng)以前。然后,逐漸在團(tuán)隊(duì)中建立起對(duì)此提供商的認(rèn)識(shí)及信任。試著建立幾個(gè)EJB并部署一下,再用你的表示層技術(shù) (Swing GUI, JSP等)來(lái)調(diào)用它們。如果你既要搭建開(kāi)發(fā)環(huán)境,又要同時(shí)在實(shí)現(xiàn)項(xiàng)目目標(biāo),就會(huì)產(chǎn)生一些不必要的沖突。實(shí)際上,我也見(jiàn)到過(guò)一直沒(méi)有進(jìn)行構(gòu)建過(guò)程的情況:“我們沒(méi)有時(shí)間。”因此,這些工作必須提早進(jìn)行。有些人會(huì)說(shuō):“我們的計(jì)劃中沒(méi)有為我們提供這些時(shí)間。”我的回答是:“你的計(jì)劃中并沒(méi)有不給你時(shí)間使你不這么做啊。”

備注:

在J2EE世界里,各提供商產(chǎn)品的技術(shù)兼容性究竟如何?讓我們看一下IBM和BEA的具體分析吧。兩者都分別在各自的應(yīng)用服務(wù)器中支持EJB 1.1。那么,實(shí)際上BEA WebLogic 5.1和IBM WebSphere 3.5究竟有多少相似之處呢?

BEA WebLogic和IBM WebSphere的系統(tǒng)配置和管理方式幾乎完全不同。

IBM在WebSphere中采用了全面的GUI環(huán)境,而與之相對(duì)的是,BEA 在WebLogic中提供一整套命令行。

IBM WebSphere使用IIOP來(lái)和CORBA異常進(jìn)行通訊,這些異常對(duì)程序員來(lái)說(shuō)是可見(jiàn)的;WebLogic根本沒(méi)有CORBA構(gòu)造,而缺省使用t3協(xié)議。

WebSphere和Visual Age銜接緊密,而WebLogic是IDE無(wú)關(guān)的,實(shí)際上,你幾乎可以使用任何的開(kāi)發(fā)工具。

由此可見(jiàn),差異還是相當(dāng)多。如果你是一種應(yīng)用服務(wù)器的專家,并不意味著你就是所有應(yīng)用服務(wù)器的專家。這種區(qū)別體現(xiàn)在IDE,debugger,build工具,配置管理等等方面。具備某提供商的某項(xiàng)特殊工具的使用經(jīng)驗(yàn),可以在評(píng)估該提供商的競(jìng)爭(zhēng)對(duì)手產(chǎn)品時(shí)具有一些便利。但是,不要奢望在不同產(chǎn)品之間進(jìn)行無(wú)縫的轉(zhuǎn)移或銜接。因此,你不得不花費(fèi)足夠多的時(shí)間在熟練掌握這些工具上。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)7: 設(shè)計(jì)中沒(méi)有充分考慮到可伸縮性和產(chǎn)品性能

項(xiàng)目階段:

設(shè)計(jì)

受影響的項(xiàng)目階段:

開(kāi)發(fā)、負(fù)載測(cè)試及成熟化

對(duì)系統(tǒng)的影響:

可伸縮性、性能、可維護(hù)性

癥狀:

無(wú)法忍受的速度緩慢

系統(tǒng)給服務(wù)器端增加的沉重負(fù)擔(dān),而無(wú)法利用到一些聚簇技術(shù)。

規(guī)避方案:

把精力集中于性能和可伸縮性方面的需求,明確開(kāi)發(fā)中要達(dá)到的性能指標(biāo)。如果你需要每秒50個(gè)事務(wù),而你的EJB設(shè)計(jì)只能提供40個(gè),那么你就需要考慮替代方案,諸如存儲(chǔ)過(guò)程,批處理,或者重新考慮OLTP的設(shè)計(jì)。

盡可能讓你的提供商加入進(jìn)來(lái),他們應(yīng)該非常清楚其產(chǎn)品的強(qiáng)項(xiàng)和弱處在哪里,然后給你提供最直接的幫助。

備注:

本風(fēng)險(xiǎn)與風(fēng)險(xiǎn)2 (over-engineering)似乎有些沖突。實(shí)際上,兩者相互影響。 我對(duì)風(fēng)險(xiǎn)2給出的解決方案是,只在絕對(duì)必要的情況下才進(jìn)行構(gòu)建。而對(duì)與性能和可伸縮性,你要預(yù)先劃分好什么是必須要做的。

如果你實(shí)現(xiàn)就識(shí)別出系統(tǒng)需要非常強(qiáng)的可伸縮性,并把它作為一個(gè)比較關(guān)鍵的需求,那么你首先需要選擇一個(gè)帶有很強(qiáng)的簇支持及事務(wù)型緩存的應(yīng)用服務(wù)器。另外,你應(yīng)把業(yè)務(wù)對(duì)象設(shè)計(jì)為EJB,從而可以充分利用服務(wù)器架構(gòu)的優(yōu)勢(shì)。 XP也沒(méi)有問(wèn)題,你仍然是只做絕對(duì)必要的工作。

我把這樣的觀點(diǎn)看作是一種檢查和平衡的方法。我們只需要最簡(jiǎn)單可能性的系統(tǒng),該系統(tǒng)只提供客戶所需要的功能與行為即可。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)8: 陳舊的開(kāi)發(fā)過(guò)程

項(xiàng)目階段:

開(kāi)發(fā)

影響階段:

穩(wěn)定化,成熟化

對(duì)系統(tǒng)的影響:

可維護(hù)性、代碼質(zhì)量

癥狀:

項(xiàng)目計(jì)劃看上去似乎類似于瀑布模型: “首先草構(gòu)設(shè)計(jì),然后在一個(gè)很長(zhǎng)的周期里進(jìn)行開(kāi)發(fā)。”

由于不存在構(gòu)建(build)過(guò)程,每次構(gòu)建都象是噩夢(mèng)

構(gòu)建的日期等于損失開(kāi)發(fā)的日期,因?yàn)槭裁匆矝](méi)有做成

在集成以前組件沒(méi)有分別被充分地測(cè)試過(guò),而集成測(cè)試意味著將2個(gè)不穩(wěn)定的組件放在一起,然后查看堆棧里的跟蹤結(jié)果。

規(guī)避方案:

好的軟件方法學(xué)將提高你的軟件生命期。此前我已經(jīng)提到XP方法,你可以在網(wǎng)上找到很多這方面的資料。

備注:

JUnit可以用來(lái)進(jìn)行單元測(cè)試,Ant工具可以進(jìn)行編譯與構(gòu)建,這2種工具都對(duì)XP方法有很好的支持。

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)9: 沒(méi)有好的架構(gòu)方式

項(xiàng)目階段:

開(kāi)發(fā)

影響階段:

開(kāi)發(fā)、穩(wěn)定化、成熟期

對(duì)系統(tǒng)的影響:

可維護(hù)性、可伸縮性、代碼質(zhì)量

癥狀:

在代碼中使用了很多次的核心庫(kù)中發(fā)現(xiàn)Bug。

沒(méi)有建立日志標(biāo)準(zhǔn) -- 于是系統(tǒng)的輸出很難讀取或者解析。

不良的不一致的異常處理。在有些站點(diǎn)中我們甚至可以看到,出錯(cuò)信息直接暴露給了最終用戶,例如在用戶在他的購(gòu)物車核帳時(shí)發(fā)送一條SQLException堆棧跟蹤信息,用戶接著會(huì)怎么做?打電話給數(shù)據(jù)庫(kù)管理員要求對(duì)primary key約束進(jìn)行修補(bǔ)嗎?

以下任務(wù)已經(jīng)被開(kāi)發(fā)者以各種方式處理了無(wú)數(shù)次了,這些都有必要放在任何構(gòu)架設(shè)計(jì)的第一批目標(biāo)中。

日志

異常處理

與資源的連接(數(shù)據(jù)庫(kù),名字服務(wù)等)

構(gòu)建JSP頁(yè)

數(shù)據(jù)合法性檢查

規(guī)避方案:

我是一個(gè)輕方法學(xué)的信徒和實(shí)踐者。我在JavaWorld 上的第一篇文章 -- "Frameworks Save the Day" -- 就是研討在企業(yè)Java環(huán)境中的架構(gòu)。即使你已經(jīng)開(kāi)始開(kāi)發(fā)了,此時(shí)考慮一下架構(gòu)仍然是值得的。可能你不得不忍受一下重構(gòu)帶來(lái)的異常處理和日志處理,但從長(zhǎng)遠(yuǎn)來(lái)看還是值得的,這樣即省時(shí)間又省錢。

備注:

讓我們想一下在構(gòu)架中基于組件開(kāi)發(fā)的可重用性的不同等級(jí)。第一級(jí)別是plumbing,具有0.9以上的可重用比例,也就是說(shuō),有90%的項(xiàng)目可以對(duì)它重復(fù)利用。 服務(wù)定義得越詳細(xì),重用比例就越低。換句話說(shuō),我需要構(gòu)建一個(gè)會(huì)計(jì)服務(wù),但要提供這些資源與用法的管理,以便于其它50%項(xiàng)目中可以對(duì)它們進(jìn)行重復(fù)利用。但是對(duì)那些項(xiàng)目來(lái)說(shuō),能得到這些資源,那真是太好了!

--------------------------------------------------------------------------------

風(fēng)險(xiǎn)10: 項(xiàng)目計(jì)劃和設(shè)計(jì)基于市場(chǎng)效應(yīng),而脫離了技術(shù)現(xiàn)實(shí)

備注: 不斷有新人加入到Java/EJB的開(kāi)發(fā)領(lǐng)域中來(lái),不理解Java的人數(shù)一般比想象中還要多。

項(xiàng)目階段:

所有階段都會(huì)受到影響,包括提供商的選擇

影響階段:

所有階段都會(huì)受到影響

對(duì)系統(tǒng)的影響:

可維護(hù)性、可擴(kuò)展性、設(shè)計(jì)質(zhì)量、代碼質(zhì)量

癥狀:

輕率地進(jìn)行技術(shù)決策,認(rèn)為EJB只是為了便攜式處理的方便

選擇提供商的時(shí)候沒(méi)有隨即進(jìn)行產(chǎn)品的試用

在項(xiàng)目的生命周期內(nèi)還需要更換工具

規(guī)避方案:

不要輕易相信項(xiàng)目外部的任何人的看法,這些人可能已經(jīng)有一些既得利益,不要相信提供商的說(shuō)法(除非你早已經(jīng)了解),也不要相信白皮書(shū)。如果你要取得來(lái)自真實(shí)世界的關(guān)于應(yīng)用服務(wù)器的建議,可以在網(wǎng)上取得。你還可以下載這些工具進(jìn)行評(píng)估,用它們做一些原型,并運(yùn)行一下其中的樣例。(好的提供商都有這樣的樣例)。

總的來(lái)說(shuō),為你的項(xiàng)目選擇最好的提供商及工具需要時(shí)間,而你可能沒(méi)有太多的時(shí)間。你可以把選擇范圍限制在3-4個(gè)對(duì)象,然后用一周時(shí)間進(jìn)行比較和檢驗(yàn)。最后從中選出比較滿意的工具和產(chǎn)品。

備注:

如果你缺少J2EE經(jīng)驗(yàn),則可能會(huì)在項(xiàng)目前期就產(chǎn)生問(wèn)題。在前期所確定的決策會(huì)影響整個(gè)過(guò)程,并進(jìn)而影響項(xiàng)目的成功。好的J2EE咨詢專家將能夠幫助你選擇好的提供商,并為設(shè)計(jì)和開(kāi)發(fā)刻劃出一個(gè)好的構(gòu)形。

--------------------------------------------------------------------------------

僅僅只有這10項(xiàng)風(fēng)險(xiǎn)嗎?

10只是一個(gè)特定的數(shù)字,顯然,還有更多更多的風(fēng)險(xiǎn)會(huì)存在。只是我可以保證的是,如果你克服了所列的各項(xiàng)風(fēng)險(xiǎn),那么你的項(xiàng)目會(huì)有出色的表現(xiàn)并已打好了成功的基礎(chǔ)。

還有一項(xiàng)需要注意,即沒(méi)有任何東西可以代替經(jīng)驗(yàn)和計(jì)劃。如果你沒(méi)有經(jīng)驗(yàn),那么一定要想辦法取得并積累。千萬(wàn)不要一邊做項(xiàng)目一邊進(jìn)行培訓(xùn)。在開(kāi)發(fā)之前要預(yù)先做好充分的準(zhǔn)備,最好是在設(shè)計(jì)以前就進(jìn)行準(zhǔn)備。可以讓你的團(tuán)隊(duì)接受Java/J2EE顧問(wèn)的指導(dǎo),并確保這樣的指導(dǎo)能夠傳遞到整個(gè)其他的團(tuán)隊(duì)成員。

最后,還有必要提到以下幾點(diǎn):

軟件工程的外界影響

什么時(shí)候進(jìn)行單元測(cè)試,什么時(shí)候進(jìn)行集成測(cè)試?

設(shè)計(jì)模式

異常處理

結(jié)論

總的說(shuō)來(lái),以上10大風(fēng)險(xiǎn)是你在企業(yè)級(jí)Java項(xiàng)目開(kāi)發(fā)過(guò)程中將面對(duì)的主要困難。我也相信在你的旅程中一定還有更多的陷阱,但我比較確信的是我所提到的風(fēng)險(xiǎn)已經(jīng)涵蓋了主要的問(wèn)題。最后讓我們按照優(yōu)先級(jí)重新列舉一下10大風(fēng)險(xiǎn):

沒(méi)有真正理解Java, 沒(méi)有真正理解EJB, 沒(méi)有真正理解J2EE

過(guò)度設(shè)計(jì)(Over-engineering)

沒(méi)有將業(yè)務(wù)規(guī)則和邏輯表現(xiàn)形式相分離

沒(méi)有在開(kāi)發(fā)環(huán)境中進(jìn)行適當(dāng)?shù)呐渲?/P>

選擇了錯(cuò)誤的提供商

不了解你的提供商

設(shè)計(jì)中沒(méi)有充分考慮到可伸縮性和產(chǎn)品性能

陳舊的開(kāi)發(fā)過(guò)程

沒(méi)有好的架構(gòu)方式

項(xiàng)目計(jì)劃和設(shè)計(jì)基于市場(chǎng)效應(yīng),而脫離了技術(shù)現(xiàn)實(shí)

最后,讓我祝你好運(yùn)!

【編輯推薦】

  1. Java EE工作流管理系統(tǒng)jBPM
  2. jBPM數(shù)據(jù)庫(kù)表說(shuō)明:流程節(jié)點(diǎn)表
  3. jBPM 4.4正式發(fā)布 Java工作流管理系統(tǒng)
  4. jBPM實(shí)現(xiàn)高級(jí)交互模式詳解
責(zé)任編輯:金賀 來(lái)源: 博客園
相關(guān)推薦

2009-06-22 17:09:00

J2EE項(xiàng)目開(kāi)發(fā)流程

2009-06-18 16:13:14

J2EE開(kāi)發(fā)

2009-06-23 08:06:46

J2EE體系架構(gòu)J2EE模型J2EE設(shè)計(jì)模式

2009-06-23 16:50:24

2009-06-10 14:10:23

J2EE學(xué)習(xí)J2EE是什么

2011-06-07 09:37:32

J2EE

2009-03-31 09:39:13

J2EE事務(wù)并發(fā)并發(fā)訪問(wèn)

2009-06-23 16:51:56

J2EE運(yùn)行環(huán)境性能優(yōu)化

2009-06-11 17:06:11

J2EE歷史Java EE概述

2009-06-10 13:37:06

J2EE可伸縮性J2EE靈活性J2EE維護(hù)

2009-06-23 16:48:26

J2EE常見(jiàn)問(wèn)題J2EE平臺(tái)

2009-06-23 08:10:47

J2EE開(kāi)發(fā)開(kāi)源項(xiàng)目

2009-06-22 17:05:41

Java EEJava企業(yè)應(yīng)用

2009-06-23 08:12:48

J2EE調(diào)用存儲(chǔ)過(guò)程

2009-06-22 17:34:40

J2EE架構(gòu)

2009-06-18 15:54:57

J2EE下使用JNDI

2009-06-22 16:21:02

J2EE線程

2011-12-31 15:24:48

JavaJ2EE

2009-06-16 11:14:00

Hibernate+SJ2EE應(yīng)用開(kāi)發(fā)

2011-07-21 14:23:03

J2EE
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美高清无遮挡| 欧美性猛交xxxx乱大交退制版| 91免费看蜜桃| 久草视频精品在线| 网红女主播少妇精品视频| 欧美伊人久久久久久久久影院| 一区二区三区不卡在线| 亚洲经典一区二区三区| 亚洲免费网址| 综合网日日天干夜夜久久| 欧美专区第二页| 密臀av在线播放| 国产精品视频免费看| 国产精品一区电影| 欧美第一页在线观看| 卡通动漫精品一区二区三区| 在线欧美一区二区| 日本男女交配视频| melody高清在线观看| 国产不卡一区视频| 国产精品网站大全| 亚州国产精品视频| 一区二区三区在线| 一区二区三区国产在线观看| 丰满人妻一区二区三区大胸| 欧美三区四区| 精品日韩视频在线观看| 中文字幕在线亚洲精品| 神马精品久久| 成人免费毛片片v| 成人免费视频在线观看超级碰| 日本三级中文字幕| 亚洲激情中文| 日韩中文字幕不卡视频| 久久福利小视频| 日韩成人在线看| 欧美日韩一区二区欧美激情| 极品美女扒开粉嫩小泬| www在线观看播放免费视频日本| 国产日韩亚洲欧美综合| 精品免费日产一区一区三区免费| 国产99对白在线播放| 蜜桃视频在线一区| 国产成人精品视频在线观看| 国产福利拍拍拍| 影音先锋久久久| 欧美日本国产在线| 成年人一级黄色片| 97精品97| www.xxxx欧美| 五月婷婷综合激情网| 国产一区国产二区国产三区| 亚洲欧美国产精品久久久久久久 | 久久99精品久久久久久久久久久久| 777午夜精品福利在线观看| 久久久久久久久久久久久久免费看| 99久久99视频只有精品| 色偷偷偷亚洲综合网另类| 一区二区伦理片| 九一精品国产| 尤物tv国产一区| 亚洲女同二女同志奶水| 久久精品国产68国产精品亚洲| 有码中文亚洲精品| 99热6这里只有精品| 久久香蕉国产| 久久综合网hezyo| 久久久久99精品成人片试看| 午夜精品久久| 国模gogo一区二区大胆私拍| 日韩精品一区二区不卡| 日韩网站在线| 日韩av电影手机在线| 蜜臀99久久精品久久久久小说| 久久在线91| 国产中文字幕亚洲| 精品久久久无码中文字幕| 成人中文字幕合集| 农村寡妇一区二区三区| 高清日韩av电影| 亚洲日本青草视频在线怡红院| 强开小嫩苞一区二区三区网站| 亚洲卡一卡二| 韩曰欧美视频免费观看| 国内自拍视频一区| 成人影院网站ww555久久精品| 日韩视频在线永久播放| 呦呦视频在线观看| 精品一区二区三区在线| 美女久久久久久久久久久| 国产精品suv一区二区69| 亚洲欧美日韩精品一区二区| 国产精品一区电影| 亚洲精品一区二区三区蜜桃| 久久伊人中文字幕| 中文字幕日韩精品久久| 92久久精品| 欧美日韩中字一区| 熟妇高潮一区二区| 成人久久一区| 久久久女女女女999久久| 波多野结衣电车| 国产v综合v亚洲欧| 日本免费高清一区| 久久www人成免费看片中文| 色狠狠桃花综合| 91视频免费入口| 欧洲杯足球赛直播| 国模叶桐国产精品一区| 一级片视频播放| 久久伊99综合婷婷久久伊| 黄色一级片av| 777午夜精品电影免费看| 欧美成人伊人久久综合网| 免费一级做a爰片久久毛片潮| 欧美日韩三级电影在线| 国产精品视频自拍| 肉丝一区二区| 亚洲午夜视频在线| 三上悠亚在线一区| 九九久久成人| 久久免费精品视频| 99久久精品无免国产免费| 国产性色一区二区| 欧美爱爱视频免费看| 欧美a级大片在线| 日韩天堂在线视频| 国产美女www爽爽爽| 99视频有精品| 91成人综合网| 午夜电影一区| 超碰91人人草人人干| 国产三级理论片| 国产亚洲精品精华液| 欧美日本视频在线观看| caoporn成人免费视频在线| 综合久久五月天| 亚洲高清在线看| 久久久综合网站| 国产午夜福利视频在线观看| 欧美jizz19性欧美| 久久91超碰青草是什么| 精品人妻无码一区二区| 亚洲男女毛片无遮挡| 女同激情久久av久久| 久久一本综合| 国产欧美精品xxxx另类| 中文字幕在线播放| 欧美日韩色一区| 很污很黄的网站| 久久精品国产免费| 一区二区在线中文字幕电影视频| 91亚洲视频| 日韩中文在线视频| 国产农村妇女毛片精品| 亚洲天堂a在线| 无码人妻一区二区三区在线视频| 欧美a级在线| 国产福利不卡| 在线天堂资源| 国产亚洲欧美日韩一区二区| 国产天堂第一区| 亚洲欧美怡红院| 91丨porny丨九色| 狠狠入ady亚洲精品经典电影| 国产一区不卡在线观看| 中文在线а√天堂| 综合国产在线观看| 国内精品久久久久久久久久久| 亚洲最新视频在线观看| 精品人妻一区二区三区日产| 国产精品腿扒开做爽爽爽挤奶网站| 六十路精品视频| 巨大黑人极品videos精品| 精品国产一区二区三区久久狼黑人 | 午夜欧美视频| 精品久久sese| 99蜜月精品久久91| 久国内精品在线| 裸体xxxx视频在线| 51精品久久久久久久蜜臀| 成人观看免费视频| eeuss影院一区二区三区| 青青青在线播放| 天天色天天射综合网| 国产99午夜精品一区二区三区| 黄色aa久久| 日韩在线视频免费观看高清中文| 99热这里只有精品66| 午夜精品久久久| 蜜桃av免费在线观看| 丰满白嫩尤物一区二区| 成人羞羞国产免费网站| 91精品国产91久久综合| 精品视频第一区| 亚洲成人高清| 91国产精品视频在线| 日韩免费网站| 亚洲激情在线观看视频免费| 中文字幕+乱码+中文乱码91| 亚洲综合偷拍欧美一区色| 国产亚洲精品熟女国产成人| 国产超碰在线一区| www亚洲成人| 99精品免费网| 国产日产欧美一区二区| 精品久久久中文字幕| 国产伦精品一区二区三区四区视频| 麻豆精品蜜桃| 97欧美精品一区二区三区| 免费av网站在线看| 亚洲欧美日韩精品久久| 性猛交富婆╳xxx乱大交天津| 91高清视频免费看| 懂色av.com| 亚洲老司机在线| 国产又粗又黄又猛| av资源网一区| 亚洲熟女乱综合一区二区| 日本午夜精品一区二区三区电影| 日韩av高清在线看片| 午夜国产一区二区| 色99中文字幕| 免费国产自久久久久三四区久久| 电影午夜精品一区二区三区| 日韩护士脚交太爽了| 国产精品99久久久久久人| 69av成人| 欧美精品18videos性欧美| 成人影欧美片| 日韩亚洲第一页| 国产精品久久久久久久龚玥菲 | 粉嫩一区二区三区国产精品| 亚洲福利影片在线| 亚洲精品久久久久avwww潮水| 欧美日韩二区三区| 中文字幕+乱码+中文乱码91| 欧美最猛黑人xxxxx猛交| 色屁屁影院www国产高清麻豆| 亚洲成a人在线观看| 九九热精彩视频| 亚洲一线二线三线视频| 欧美极品aaaaabbbbb| 亚洲免费伊人电影| 日本a级片视频| 亚洲九九爱视频| 欧美三根一起进三p| 一区二区三区在线播放| 欧美日韩激情在线观看| 一区二区激情视频| 青青草偷拍视频| 亚洲图片欧美一区| 国产特黄大片aaaa毛片| 狠狠综合久久av一区二区小说| 国产精品免费av一区二区| 午夜国产不卡在线观看视频| 日韩欧美不卡视频| 欧美视频第一页| 天天综合久久综合| 欧美人体做爰大胆视频| 国产三级在线观看视频| 日韩美女视频一区二区在线观看| 亚洲经典一区二区三区| 亚洲精品久久久久久久久久久| 无码精品黑人一区二区三区| 亚洲另类欧美自拍| 国产大学生校花援交在线播放 | 精品蜜桃一区二区三区| 伊人久久大香线蕉| 亚洲精品中字| 亚洲午夜精品一区 二区 三区| 日日噜噜夜夜狠狠久久丁香五月| 亚洲特色特黄| 草草久久久无码国产专区| 天堂影院一区二区| 日韩av加勒比| 成人av在线播放网址| 日韩一级视频在线观看| 国产精品区一区二区三区| 欧美三级黄色大片| 午夜久久久久久久久久一区二区| 波多野结衣大片| 日韩精品一区二区三区视频播放 | 精品国模在线视频| segui88久久综合| 国产成人精品视频| 日本高清久久| 欧美中日韩免费视频| 亚洲色图插插| 欧美视频第三页| 国产一区二区不卡在线| 蜜臀av一区二区三区有限公司| 中文字幕日本不卡| 日韩视频免费观看高清| 欧美日韩国产综合一区二区三区 | 国产高清视频一区二区| 久久精品国产综合精品| 婷婷伊人综合| 蜜臀久久99精品久久久酒店新书| 国产毛片精品一区| 久久久久久国产精品无码| 樱桃国产成人精品视频| 亚洲中文字幕无码爆乳av| 日韩欧美国产小视频| 国产片在线观看| 97久久精品国产| 嫩呦国产一区二区三区av| 亚欧洲精品在线视频免费观看| 海角社区69精品视频| 午夜免费福利视频在线观看| 91伊人久久大香线蕉| www青青草原| 欧美日韩一区成人| 日韩精品系列| 欧美国产日韩二区| 成人免费91| 一区二区精品在线观看| 性高湖久久久久久久久| 日本人妻一区二区三区| 国产精品福利一区二区| 91精品国产综合久久久蜜臀九色| 日韩久久久精品| 黄色动漫在线观看| 国产精品极品美女在线观看免费| 欧美调教网站| 日韩 欧美 视频| 国产精品一级二级三级| 婷婷国产成人精品视频| 在线观看免费亚洲| 日本午夜在线视频| 国自产精品手机在线观看视频| 玖玖精品一区| 国产三级中文字幕| 久久 天天综合| 精品少妇一区二区三区密爱| 在线视频观看一区| 成人亚洲综合天堂| 国产精品久久久久9999| 精品国产一区二区三区久久久蜜臀| 东京热加勒比无码少妇| 99久久免费视频.com| 亚洲男人第一av| 日韩精品中文字幕在线观看| 国产精品xx| 快播日韩欧美| 久久久久久一区二区| 97伦伦午夜电影理伦片| 欧美性极品xxxx做受| 男女av在线| 国产精品久久久久久av下载红粉| 国产一区二区三区日韩精品 | 久久9999免费视频| 黄色网络在线观看| 国产河南妇女毛片精品久久久| 国精品无码一区二区三区| 欧美一区二区日韩一区二区| 怡红院av在线| 国产伦精品一区| 免费在线成人| 国产精品www爽爽爽| 欧美日韩视频专区在线播放| 二区在线播放| 国产嫩草一区二区三区在线观看| a91a精品视频在线观看| 天天插天天射天天干| 色婷婷av一区| 午夜伦全在线观看| 99久久精品免费看国产四区| 亚洲国产激情| 四虎永久免费在线观看| 欧美日韩国产精品自在自线| v天堂福利视频在线观看| 国产精品日韩一区二区免费视频| 国产日韩一区| 污污视频网站在线免费观看| 欧美大肚乱孕交hd孕妇| 超碰国产一区| av不卡在线免费观看| 不卡一区二区三区四区| 一级一片免费看| 久久亚洲影音av资源网| 精品精品国产毛片在线看| 久久黄色免费看| 亚洲六月丁香色婷婷综合久久| 欧美一区二区在线观看视频| 国产成人高潮免费观看精品| 久久久久久久久丰满| 亚洲最大免费视频| 欧美日韩在线不卡| av伦理在线| 亚洲欧洲一二三| www.av精品| 国产一区二区三区中文字幕| 国模精品一区二区三区色天香| 欧美另类69xxxxx| 深夜视频在线观看| 欧美中文字幕一二三区视频| 羞羞视频在线免费国产| 日本一区精品| 成人听书哪个软件好|