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

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

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

    [摘錄](méi)JAVA開(kāi)放源碼項(xiàng)目與工具在企業(yè)應(yīng)用開(kāi)發(fā)中的運(yùn)用

    摘錄地址: http://www-128.ibm.com/developerworks/cn/java/l-opens-app/index.html

    企業(yè)應(yīng)用開(kāi)發(fā)目前面臨的主要問(wèn)題

    企業(yè)應(yīng)用是指服務(wù)于商業(yè)目的,處理企業(yè)業(yè)務(wù)信息、數(shù)據(jù)的軟件系統(tǒng)。雖然隨著dot COM熱潮逐漸冷卻,企業(yè)開(kāi)始謹(jǐn)慎考慮自己在應(yīng)用系統(tǒng)開(kāi)發(fā)方面的投入,但是畢竟企業(yè)的業(yè)務(wù)流程需要專(zhuān)門(mén)的信息系統(tǒng)處理,從而提高自動(dòng)化程度、減少中間環(huán)節(jié)、加快信息處理速度。因此,目前國(guó)內(nèi)的企業(yè)應(yīng)用項(xiàng)目開(kāi)發(fā)還是日益火爆,尤其在電子政務(wù)、CRM、SCM等領(lǐng)域更是如此。

    但是,不論企業(yè)應(yīng)用開(kāi)發(fā)是采用自行開(kāi)發(fā)或者委托系統(tǒng)集成商進(jìn)行開(kāi)發(fā),都存在著下面一些情況:

    1. 大部分項(xiàng)目超時(shí)或者超出預(yù)算;
    2. 項(xiàng)目在部署以后BUG很多,而且修改的周期比較長(zhǎng);

      對(duì)于系統(tǒng)集成商來(lái)說(shuō),下面的情況更是比較普遍:

    3. 沒(méi)有統(tǒng)一的FRAMEWORK,每個(gè)項(xiàng)目都會(huì)重新設(shè)計(jì)ARCHITECTURE;
    4. 項(xiàng)目開(kāi)發(fā)過(guò)程的自動(dòng)化程度和重復(fù)步驟不是很多,人為引入的BUG很多;






    開(kāi)放源碼項(xiàng)目現(xiàn)狀

    開(kāi)放源碼運(yùn)動(dòng)在90年代開(kāi)始日益發(fā)展,目前已經(jīng)成為軟件業(yè)內(nèi)不可低估的一股勢(shì)力,比較著名的有Linux,、Apache、Tomcat、MySQL等。目前,開(kāi)放源碼的潮流已經(jīng)超出了操作系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)和WEB服務(wù)器等系統(tǒng)開(kāi)發(fā)領(lǐng)域,開(kāi)發(fā)在企業(yè)應(yīng)用開(kāi)發(fā)中尋找新的領(lǐng)地。尤其是對(duì)于企業(yè)應(yīng)用開(kāi)發(fā)的框架和CASE工具,開(kāi)放源碼項(xiàng)目都有很優(yōu)秀的解決方案。

    國(guó)外開(kāi)放源碼項(xiàng)目的集中地有 www.apache.org 以及 www.sourceforge.net ,其中,前者為大家奉獻(xiàn)了著名的Apache、Tomcat、Struts、Axis;而后者是最著名的開(kāi)源項(xiàng)目中心。同時(shí),國(guó)內(nèi)自90年代末開(kāi)始也有很多人投入到開(kāi)源項(xiàng)目的開(kāi)發(fā),比較集中的網(wǎng)址是 "共創(chuàng)軟件聯(lián)盟"( www.cosoft.org.cn ) 等等,他們除了提供各種CASE工具以外,還有一些項(xiàng)目是專(zhuān)注于特定領(lǐng)域的解決方案開(kāi)發(fā),如CRM等。







    JAVA開(kāi)發(fā)源碼項(xiàng)目與工具的應(yīng)用

    對(duì)于目前企業(yè)應(yīng)用開(kāi)發(fā)競(jìng)爭(zhēng)日益激烈,需求變更頻繁,各個(gè)系統(tǒng)集成商都面臨巨大的生存壓力。其中有兩個(gè)方面表現(xiàn)尤其突出:

    • 沒(méi)有統(tǒng)一的軟件開(kāi)發(fā)過(guò)程或者照搬重量級(jí)的軟件開(kāi)發(fā)過(guò)程,例如RUP等,但是往往由于時(shí)間等壓力的影響,并不能切實(shí)執(zhí)行;
    • 大部分企業(yè)仍然沒(méi)有擺脫手工作坊期間的做法,每個(gè)項(xiàng)目或者產(chǎn)品由于管理人員或者團(tuán)隊(duì)的不同,重新設(shè)計(jì)系統(tǒng)框架,浪費(fèi)大量的時(shí)間在結(jié)構(gòu)驗(yàn)證與調(diào)整上;

    企業(yè)應(yīng)用系統(tǒng)的開(kāi)發(fā)中,需求的變更是項(xiàng)目中唯一不變的東西,而且,為了保持開(kāi)發(fā)的一致性和利益最大化,系統(tǒng)集成商需要與客戶(hù)保持長(zhǎng)期的合作。因此,采取演進(jìn)式敏捷軟件開(kāi)發(fā),可以更好的保證項(xiàng)目質(zhì)量。在所有的敏捷軟件開(kāi)發(fā)方法中,XP是目前應(yīng)用最為廣泛的一種。它是一種高度動(dòng)態(tài)的過(guò)程,它通過(guò)非常短的迭代周期來(lái)應(yīng)對(duì)需求的變化;溝通、簡(jiǎn)單、反饋和勇氣是它的四大核心價(jià)值。同時(shí),它集中了業(yè)界的很多最佳實(shí)踐,目前已經(jīng)有18條之多,XP強(qiáng)調(diào)通過(guò)嚴(yán)格執(zhí)行全部的最佳實(shí)踐來(lái)獲得"極限"效果。

    同時(shí),出于復(fù)用和效率的考慮,尤其是對(duì)于系統(tǒng)集成商,企業(yè)應(yīng)用系統(tǒng)應(yīng)該具有自己的框架和結(jié)構(gòu)。擁有具有良好性能、經(jīng)過(guò)項(xiàng)目驗(yàn)證的系統(tǒng)框架,結(jié)合有效的軟件開(kāi)發(fā)過(guò)程,系統(tǒng)集成商可以快速、成功地開(kāi)發(fā)企業(yè)應(yīng)用系統(tǒng)。

    為了更好的開(kāi)發(fā)成功的系統(tǒng),系統(tǒng)集成商們可以試著從以下兩個(gè)方面著手解決問(wèn)題:

    • 結(jié)合開(kāi)源工具的支持,在組織內(nèi)部實(shí)施"敏捷軟件開(kāi)發(fā)方法";
    • 為核心業(yè)務(wù)領(lǐng)域建立靈活、有效的Framework;

    由于目前很多企業(yè)應(yīng)用是采用基于J2EE技術(shù)的網(wǎng)絡(luò)應(yīng)用程序開(kāi)發(fā),因此,下面主要介紹基于JAVA的開(kāi)源項(xiàng)目、工具的應(yīng)用。

    1. 開(kāi)源工具與XP

    XP的12條最佳實(shí)踐,對(duì)于所有的企業(yè)應(yīng)用開(kāi)發(fā)商而言,由于組織和文化的不同,不可能全部應(yīng)用,但是,下面幾個(gè)實(shí)踐是有條件逐步實(shí)施的:

    • 代碼規(guī)范:CODE STANDARD
    • 測(cè)試驅(qū)動(dòng)開(kāi)發(fā):TEST-DRIVEN DEVELOPMENT
    • 日構(gòu)建:DAILY BUILDING
    • 持續(xù)集成:CONTINUOUS INTEGRATION
    • 小步發(fā)布:SMALL RELEASE
    • 每日晨會(huì):DAILY MEETING
    • 每周40小時(shí)工作:40-HOURS A WEEK

    其中,CODE STANDARD和TDD是CONTINUOUS INTEGRATION、DAILY BUILDING和SMALL RELEASE的基礎(chǔ);而DAILY MEETING和40-HOURS A WORK是單獨(dú)的實(shí)踐過(guò)程,可以與其他的實(shí)踐想結(jié)合,增強(qiáng)項(xiàng)目小組的溝通,激發(fā)士氣。

    需要說(shuō)明的是以上最佳實(shí)踐并非XP所獨(dú)有,而是被最多的軟件開(kāi)發(fā)方法所應(yīng)用,其中"日構(gòu)建"就在微軟的軟件開(kāi)發(fā)方法中正式出現(xiàn)過(guò)。

    1. 代碼規(guī)范

      雖然大部分的企業(yè)在一定程度上推行代碼標(biāo)準(zhǔn)與規(guī)范,而且對(duì)于使用JAVA的應(yīng)用程序開(kāi)發(fā),也有SUN的推薦編碼規(guī)范,但是,實(shí)際的情況并不理想。

      主要的原因在于:一方面,開(kāi)發(fā)人員的習(xí)慣勢(shì)力很大;另一方面,代碼審查的力度不夠。如果能夠借助工具,從一定程度上幫助進(jìn)行代碼標(biāo)準(zhǔn)的執(zhí)行情況檢查,那么代碼審查就可以著重檢查程序的邏輯和性能等方面。

      開(kāi)源產(chǎn)品CheckStyle ( http://sourceforge.net/projects/checkstyle ) 可以幫助開(kāi)發(fā)組織解決代碼標(biāo)準(zhǔn)審查的問(wèn)題。

      目前的最新版本為3.0,它提供了兩種運(yùn)行方式:一種是命令行;一種是與Ant結(jié)合(Ant自1.5以后提供的OPTIONAL TASKS中有對(duì)于CheckStyle的支持)。同時(shí),SourceForge中有對(duì)于JBuilder等流行IDE的插件支持,可以定義Global、Project級(jí)別上的屬性文件, 但是,目前只是支持2.42版本。

      在3.x版本之前,CheckStyle的配置信息寫(xiě)在Property File中;而在3.x之后,配置信息為XML文件,配置更加靈活。3.0的發(fā)布版本中提供了針對(duì)Sun Code Conventions的特定Check File,可以參考使用。

      建議執(zhí)行情況:

      • 手動(dòng)執(zhí)行:開(kāi)發(fā)人員在IDE中手動(dòng)觸發(fā)CheckStyle檢查或者代碼審查時(shí)由審查者手動(dòng)執(zhí)行;
      • 自動(dòng)執(zhí)行:將CheckStyle與源碼控制系統(tǒng)(CVS)結(jié)合,在源碼Checkin的時(shí)候進(jìn)行規(guī)則判斷,如果不符合,則不允許代碼進(jìn)入系統(tǒng)。
    2. 測(cè)試驅(qū)動(dòng)開(kāi)發(fā)

      測(cè)試先行或者測(cè)試驅(qū)動(dòng)是XP的基本實(shí)踐之一,同時(shí)測(cè)試在軟件開(kāi)發(fā)中的重要作用正越來(lái)越得到人們的重視。審查和測(cè)試作為系統(tǒng)確認(rèn)和驗(yàn)證的有效方式,是項(xiàng)目質(zhì)量保證的重要措施。

      下面按照一般的測(cè)試分類(lèi),介紹各個(gè)領(lǐng)域內(nèi)的開(kāi)源測(cè)試工具:

      • 單元測(cè)試:JUnit ( http://www.junit.org )

        JUnit是由 Erich Gamma 和 Kent Beck 編寫(xiě)的一個(gè)回歸測(cè)試框架(regression testing framework),用于Java開(kāi)發(fā)人員編寫(xiě)單元測(cè)試之用。下面介紹的開(kāi)源測(cè)試工具,很多都是對(duì)于JUnit的擴(kuò)展。

        它目前的版本為3.7,為編寫(xiě)單元測(cè)試提供了主要的接口。目前主流的IDE都提供了對(duì)于JUnit的支持。

        XP強(qiáng)調(diào)測(cè)試先行,尤其重視單元測(cè)試。系統(tǒng)集成商需要通過(guò)軟件開(kāi)發(fā)過(guò)程的執(zhí)行,來(lái)強(qiáng)化JUnit的使用。

        目前很多商業(yè)測(cè)試軟件都提供了與JUnit的聯(lián)合使用,例如獲得1999和2000年Jolt測(cè)試類(lèi)工具亞軍和生產(chǎn)率大獎(jiǎng)的Jtest (ParaSoft公司產(chǎn)品,內(nèi)置200余條編碼規(guī)范,提供Java代碼靜態(tài)和動(dòng)態(tài)檢查,同時(shí)還可以自動(dòng)生成簡(jiǎn)單的測(cè)試用例等等)就可以導(dǎo)入和導(dǎo)出JUnit的測(cè)試用例。

      • 集成與功能測(cè)試:HttpUnit ( http://unit.sourceforge.net ) & Cactus ( http://jakarta.apache.org/cactus/ )

        HttpUnit是一套通過(guò)HTTP連接測(cè)試Web應(yīng)用程序的Java類(lèi)。在結(jié)合JUnit的情況下,HttpUnit可以作為一種創(chuàng)建測(cè)試程序的強(qiáng)大工具用來(lái)保證Web應(yīng)用程序正常的端對(duì)端功能。

        雖然JUnit自身就可以通過(guò)編寫(xiě)單一類(lèi)的測(cè)試程序?qū)Ψ?wù)器端Java代碼進(jìn)行測(cè)試,不過(guò),有了HttpUnit的幫助,JUnit就可以擴(kuò)展為模擬Web瀏覽器-Web服務(wù)器的工作方式對(duì)整個(gè)Web程序結(jié)構(gòu)進(jìn)行測(cè)試。

        Cactus為我們提供了一種測(cè)試SERVLET等WEB組件的有效手段。它是JUnit的一個(gè)擴(kuò)展,但是它又和JUnit有一些不同。Cactus的測(cè)試分為三種不同的測(cè)試類(lèi)別,JspTestCase, ServletTestCase, FilterTestCase, 而不是像JUnit就一種TestCase。Cactus的測(cè)試代碼有服務(wù)器端和客戶(hù)端兩個(gè)部分,他們協(xié)同工作。

        一般意義上,可以采用Cactus作集成測(cè)試;而使用HttpUnit做功能測(cè)試。

        雖然在集成與功能測(cè)試方面,有很多優(yōu)秀的開(kāi)源工具,但是在實(shí)際應(yīng)用過(guò)程中,還是采用商業(yè)測(cè)試軟件的比較多,對(duì)于復(fù)雜應(yīng)用更是如此。這是因?yàn)榧膳c功能測(cè)試大部分還是由專(zhuān)門(mén)的測(cè)試人員進(jìn)行,而他們對(duì)于已有的商業(yè)軟件,例如Rational Robot、E-Test Suite、WinRunner等都比較熟悉,同時(shí)商業(yè)軟件也提供了更為強(qiáng)大的功能。

      • 壓力與性能測(cè)試: JMeter ( http://jakarta.apache.org/jmeter/ )

        由于企業(yè)應(yīng)用越來(lái)越復(fù)雜,用戶(hù)數(shù)量也是越來(lái)越多,系統(tǒng)的性能參數(shù)以及眾多的非功能性需求在開(kāi)發(fā)中獲得了越來(lái)越多的重視。因此,很多壓力與性能測(cè)試工具也開(kāi)始出現(xiàn),這其中有一定影響的是Apache Software Foundation的JMeter。

        JMeter是100%的JAVA桌面應(yīng)用,用來(lái)測(cè)試系統(tǒng)的負(fù)載與性能。它最開(kāi)始設(shè)計(jì)是用來(lái)測(cè)試WEB應(yīng)用,后來(lái)加以擴(kuò)展,可以測(cè)試Http,F(xiàn)TP,支持JDBC的關(guān)系型數(shù)據(jù)庫(kù)的性能與壓力。同時(shí),JMeter提供一定的定制功能,系統(tǒng)集成商可以自行開(kāi)發(fā)針對(duì)EJB、CORBA或者SOAP的插件。

        壓力與性能測(cè)試方面,由于測(cè)試比較復(fù)雜,實(shí)際企業(yè)應(yīng)用測(cè)試中,也是采用商業(yè)測(cè)試軟件比較多,例如LoadRunner、JProbe Suite以及與JBuilder8 同步發(fā)布的OptimizerIT;

    3. 日構(gòu)建

      在軟件開(kāi)發(fā)的領(lǐng)域里有各種各樣的"最佳實(shí)踐",它們經(jīng)常被人們談起,但是似乎很少有真正得到實(shí)現(xiàn)的。這些實(shí)踐最基本、最有價(jià)值的就是:都有一個(gè)完全自動(dòng)化的創(chuàng)建、測(cè)試過(guò)程,讓開(kāi)發(fā)團(tuán)隊(duì)可以每天多次創(chuàng)建他們的軟件。

      "日創(chuàng)建"也是人們經(jīng)常討論的一個(gè)觀點(diǎn),McConnell在他的《快速軟件開(kāi)發(fā)》中將日創(chuàng)建作為一個(gè)最佳實(shí)踐來(lái)推薦,同時(shí)日創(chuàng)建也是微軟很出名的一項(xiàng)開(kāi)發(fā)方法。但是,我們更支持XP社群的觀點(diǎn):日創(chuàng)建只是最低要求。一個(gè)完全自動(dòng)化的過(guò)程讓你可以每天完成多次創(chuàng)建,這是可以做到的,也是完全值得的。

      Ant是Apache Jakarta的一個(gè)項(xiàng)目,是"不帶 make 缺點(diǎn)的 make"。Ant 正在成為開(kāi)放源代碼世界中實(shí)際上的標(biāo)準(zhǔn)。原因很簡(jiǎn)單:Ant 是使用 Java 語(yǔ)言編寫(xiě)的,這種語(yǔ)言可以讓創(chuàng)建過(guò)程在多種平臺(tái)上使用。

      Ant目前的版本為1.5,它的執(zhí)行是基于一個(gè)XML文件,配置文件由目標(biāo)樹(shù)構(gòu)成。每個(gè)目標(biāo)都包含了要執(zhí)行的任務(wù),其中任務(wù)就是可以執(zhí)行的代碼。在下面給出的例子中,mkdir 是目標(biāo) compile 的任務(wù)。mkdir 是建立在 Ant 中的一個(gè)任務(wù),用于創(chuàng)建目錄。 Ant 帶有一套健全的內(nèi)置任務(wù),也可以通過(guò)擴(kuò)展 Ant 任務(wù)類(lèi)來(lái)添加自己的功能。



      Ant內(nèi)置了對(duì)于JUnit、CVS、ClearCase、Visual SourceSafe以及CheckStyle的支持,通過(guò)于系統(tǒng)定時(shí)功能,例如Windows的"任務(wù)計(jì)劃"或者Linux/Unix的"cron",可以很方便的利用Ant來(lái)自動(dòng)完成每日構(gòu)建的工作。

    4. 持續(xù)集成

      持續(xù)集成是XP的重要實(shí)踐之一,Martin Fowler在參考文獻(xiàn)[6]中有詳細(xì)的介紹,上述實(shí)踐都是它的基礎(chǔ)。

      開(kāi)源項(xiàng)目中有一個(gè)著名的工具是用來(lái)幫助實(shí)現(xiàn)持續(xù)集成的:CruiseControl,其次,目前還有一款商業(yè)軟件AntHill也為持續(xù)集成提供了很好的支持。

      • CruiseControl ( http://cruisecontrol.sourceforge.net/ )

        CruiseControl是著名的ThoughtWorks公司的產(chǎn)品,目前它的源碼已經(jīng)公開(kāi),它是一個(gè)持續(xù)集成的框架。它包含,但是并不局限于Email通知、Ant以及其他源碼控制工具。同時(shí),它還提供了WEB界面來(lái)查看當(dāng)前和已往Build的詳細(xì)信息。

      • AntHill ( http://www.urbancode.com/projects/anthill/ )

        AntHill可以確保Build過(guò)程受控,同時(shí),幫助組織內(nèi)部的知識(shí)共享。它在每次Build之前從源碼控制系統(tǒng) (CVS、VisualSourceSafe、ClearCase等) 中獲取最新的源碼,同時(shí)在 Build完成之后為源碼分配一個(gè)唯一的數(shù)字進(jìn)行標(biāo)定。同時(shí),它還會(huì)在根據(jù)Build的情況,更新Intranet的信息。

    5. 小步發(fā)布

      有了以上實(shí)踐的支持,小步發(fā)布就有了實(shí)現(xiàn)的可能。XP強(qiáng)調(diào)在非常短的周期內(nèi)以遞增的方式發(fā)布新版本,從而可以很容易地估計(jì)每個(gè)迭代周期的進(jìn)度,便于控制工作量和風(fēng)險(xiǎn);同時(shí),也可以及時(shí)處理用戶(hù)的反饋。

      為了成功的進(jìn)行應(yīng)用系統(tǒng)的版本發(fā)布,需要SCM,尤其是源碼控制程序的配合。在開(kāi)源項(xiàng)目中,CVS (Concurrent Version System) 是最著名的版本控制程序。

      目前CVS的版本為1.5.11,它是一個(gè)將一組文件放在層次目錄樹(shù)中以保持同步的系統(tǒng)。人們可以從 CVS 服務(wù)器上更新他們的本地層次樹(shù)副本,并將修改的結(jié)果或新文件發(fā)回;或者刪除舊文件。CVS 基于客戶(hù)端/服務(wù)器的行為使得其可容納多用戶(hù),構(gòu)成網(wǎng)絡(luò)也很方便。這一特性使得 CVS 成為位于不同地點(diǎn)的人同時(shí)處理數(shù)據(jù)文件(特別是程序的源代碼)時(shí)的首選。所有重要的免費(fèi)軟件項(xiàng)目都使用 CVS 作為其程序員之間的中心點(diǎn),以便能夠綜合各程序員的改進(jìn)和更改。

      基于多個(gè)操作系統(tǒng)的CVS的客戶(hù)端軟件也很多,其中以WinCVS最為著名。

    2. 開(kāi)源項(xiàng)目與Framework:

    目前,對(duì)于基于J2EE的應(yīng)用程序開(kāi)發(fā),有很多開(kāi)源的Framework,例如Struts ( http://jakarta.apache.org/struts/ )、WebWork等,都提供了利用J2EE技術(shù)的優(yōu)秀解決方案。其中,Struts是目前應(yīng)用最為廣泛和獲得關(guān)注最多的框架之一。

    Struts目前的版本為1.1,它是基于Model2的MVC實(shí)現(xiàn)框架。Struts的核心是基于Servlet、JavaBean、ResourceBundles和XML技術(shù)的控制層。

    還有很多開(kāi)源項(xiàng)目為Struts提供支持,例如:

    • 配置文件GUI:Struts Console;
    • Code Generator:Easy Struts;
    • Unit-Test:StrutsTestCase;

    獲得2002年JAVA IDE大獎(jiǎng)的JBuilder 8更是內(nèi)置了對(duì)于Struts的支持,這也從另外一個(gè)側(cè)面體現(xiàn)了Struts的重要意義。

    同時(shí),需要注意的是,Struts本身并沒(méi)有提供Persistence層的標(biāo)準(zhǔn)實(shí)現(xiàn),但是,目前這個(gè)方面的解決方案比較多,系統(tǒng)集成開(kāi)發(fā)商可以根據(jù)具體情況加以選擇。

    如果可以在Struts等Framework的基礎(chǔ)上,結(jié)合不同業(yè)務(wù)系統(tǒng)的專(zhuān)業(yè)知識(shí),開(kāi)發(fā)獨(dú)立的系統(tǒng)平臺(tái),系統(tǒng)集成商的項(xiàng)目開(kāi)發(fā)速度和質(zhì)量都會(huì)有很大的提高。



    歡迎大家訪問(wèn)我的個(gè)人網(wǎng)站 萌萌的IT人

    posted on 2006-05-09 13:31 見(jiàn)酒就暈 閱讀(106) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): J2EE文章

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(3)

    我參與的團(tuán)隊(duì)

    隨筆分類(lèi)

    隨筆檔案

    文章分類(lèi)

    文章檔案

    收藏夾

    BLOG

    FRIENDS

    LIFE

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 成人无码区免费A片视频WWW | 亚洲午夜未满十八勿入| 国产黄色片在线免费观看| 中国xxxxx高清免费看视频| 久久久精品视频免费观看 | 日本免费xxxx| 色欲国产麻豆一精品一AV一免费| 一级黄色片免费观看| 亚洲成av人片天堂网无码】| 91亚洲自偷在线观看国产馆| 久久亚洲AV成人无码国产| 亚洲人成网站在线播放vr| 亚洲精品国产电影| 亚洲福利视频一区二区| 日本特黄特黄刺激大片免费| 国产在线a免费观看| 免费视频专区一国产盗摄| 美女内射毛片在线看免费人动物| 91视频免费网站| 99精品免费视品| 在线免费视频你懂的| 久99久无码精品视频免费播放| 四虎影视永久在线精品免费| 国产亚洲综合视频| 毛片亚洲AV无码精品国产午夜| 亚洲国产精品无码久久98| 亚洲日本在线电影| 亚洲欧美黑人猛交群| 亚洲日本在线电影| 色偷偷噜噜噜亚洲男人| 成a人片亚洲日本久久| 美女视频黄频a免费观看| 色多多免费视频观看区一区| 美女被艹免费视频| 男女一边桶一边摸一边脱视频免费| 一级做a爰性色毛片免费| 一区二区视频在线免费观看| 美女被免费网站91色| 国产羞羞的视频在线观看免费| 亚洲午夜免费视频| 99在线视频免费观看视频|