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

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

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

    nighty

    折騰的年華
    posts - 37, comments - 143, trackbacks - 0, articles - 0

    B/S,C/S架構(gòu)混合使用

    Posted on 2008-05-06 12:43 寒武紀(jì) 閱讀(13763) 評(píng)論(25)  編輯  收藏 所屬分類: 軟件架構(gòu)

        一般而言,我們平常接觸的大多數(shù)項(xiàng)目都應(yīng)該是單純使用B/S或是C/S,除非在特殊場(chǎng)合,否則比較少混合使用B/S,C/S架構(gòu)。首先說一下對(duì)這二種架構(gòu)特點(diǎn)的一些個(gè)人理解。B/S應(yīng)該是目前很多項(xiàng)目都應(yīng)用的架構(gòu),瀏覽器的方式使得用戶的使用十分方便,用戶可以何時(shí)何地通過Internet訪問URL而進(jìn)行相應(yīng)的工作,升級(jí)維護(hù)也能比較集中,缺點(diǎn)就是瀏覽器的表現(xiàn)能力受限以及常常受非議的安全性問題,如果軟件的應(yīng)用范圍區(qū)域不集中,而且用戶經(jīng)常變換地點(diǎn)進(jìn)行訪問,那么這種架構(gòu)是非常適合的。C/S架構(gòu)的C端有非常強(qiáng)的處理能力,所以在交互表現(xiàn)和安全方面可以做得比瀏覽器強(qiáng),但是缺點(diǎn)也是非常明顯的,安裝部署、升級(jí)維護(hù)、版本兼容都是比較頭大的事情,一般的適用場(chǎng)景是集中的辦公室場(chǎng)所,用戶使用范圍相對(duì)穩(wěn)定,以及一些對(duì)業(yè)務(wù)處理非常復(fù)雜的場(chǎng)合,為了降低服務(wù)器的負(fù)荷,同樣需要C模式的支持。
        以前接觸過的電信領(lǐng)域,就有過混合架構(gòu)的軟件。但是都是非常寵大,一直都對(duì)其實(shí)現(xiàn)方案比較感興趣,但是都沒有機(jī)會(huì)進(jìn)一步了解。最近搜索了一下相關(guān)的資料,總結(jié)一下混合應(yīng)用的一些想法(只針對(duì)Java方向)。
        ①混合架構(gòu)的問題集中點(diǎn)。服務(wù)端共享,客戶端采用不同的表現(xiàn)方式,共享的應(yīng)該是業(yè)務(wù)層接口,持久層應(yīng)該是屏蔽的。應(yīng)用層的消息傳遞就是整個(gè)應(yīng)用的關(guān)鍵所在,雖然像Jakarta提供的httpClient這種模仿瀏覽器的組件,但是畢竟是模仿,在很多方面的功能還是缺失的。
        ②最傳統(tǒng)的方式是采用EJB做為服務(wù),這個(gè)寵然大物容易讓人害怕,不過在分布式的系統(tǒng)中它還是有應(yīng)用優(yōu)勢(shì)的,像電信和金融這種行業(yè)應(yīng)用還是比較廣的,而且現(xiàn)成的中間件和應(yīng)用服務(wù)器商都比較多,像Oracel、BEA、IBM、Sun都有成熟的應(yīng)用產(chǎn)品,當(dāng)然開發(fā)的成本和人力投入也是恐龍級(jí)數(shù)據(jù)的。
        ③有網(wǎng)友說在C端直接訪問數(shù)據(jù)庫(kù),B/S結(jié)構(gòu)不變,也就是通過數(shù)據(jù)庫(kù)進(jìn)行共享。這種方式是不可取的,二個(gè)缺點(diǎn):把服務(wù)器的業(yè)務(wù)邏輯搬到了C端上,嚴(yán)格上講是不安全的,升級(jí)維護(hù)也非常麻煩;并發(fā)控制的壓力都在數(shù)據(jù)庫(kù)上。
        ④采用RMI,這個(gè)老古董相信應(yīng)該很多人都不使用了,因?yàn)樗氖褂靡贿B串的手續(xù),比如服務(wù)接口定義必須實(shí)現(xiàn)Remote接口,服務(wù)Server在實(shí)現(xiàn)時(shí)必須繼承UnicastRemoteobject類,必須使用rmic指令產(chǎn)生stub和skeleton等,設(shè)置上繁雜。
        ⑤Spring 遠(yuǎn)程服務(wù)。這個(gè)應(yīng)該說是比較可取的,大家都比較喜歡輕量級(jí)的東西。就如第一點(diǎn)所說的,通過遠(yuǎn)程服務(wù),我們可以在客戶直接調(diào)用服務(wù)端的服務(wù)接口,就像本地調(diào)用一樣,Spring對(duì)遠(yuǎn)程服務(wù)提供了好幾種實(shí)現(xiàn)方案。
        ⑥WebService。適合異構(gòu)環(huán)境,但是WSDL的這種方式相對(duì)來說會(huì)比較耗費(fèi)資料,因?yàn)闃?biāo)準(zhǔn)定義除了業(yè)務(wù)內(nèi)容外,還有許多另外的說明內(nèi)容。
        Spring遠(yuǎn)程服務(wù)實(shí)現(xiàn)方案介紹:
        ⑴Spring + RMI。Spring把傳統(tǒng)的RMI方式的繁雜設(shè)置去掉,只要配置Bean文件就和定義服務(wù)接口可以。RMI的服務(wù)啟動(dòng)和管理都交給Spring來處理。RMI訪問的缺點(diǎn)就是對(duì)防火墻的穿透力比較差。
        ⑵Spring + Caucho的Hessian、Burlap。Hessian使用Http將對(duì)象以中性的二進(jìn)制消息進(jìn)行傳送,而不像RMI使用Java的序列化格式(這種序列化是專制的,不是Sun提供的序列化機(jī)制),由于是二進(jìn)制消息,所以不受限于某種實(shí)現(xiàn)語言,傳輸時(shí)所需要的帶寬較小是其優(yōu)點(diǎn)。Burlap是以XML文件格式傳送對(duì)象,XML文件有較高可讀性,應(yīng)用程序只要能解釋XML就能接收消息,當(dāng)然也不限于某種語言,但是組裝XML和解釋XML都需要消耗資源,當(dāng)傳輸大數(shù)據(jù)時(shí)性能應(yīng)該存在問題。
        ⑶Spring + Http Invoker。由于Hessian的序列化機(jī)制不是正統(tǒng)的Java序列化機(jī)制,所以當(dāng)遇到傳輸復(fù)雜的業(yè)務(wù)模型時(shí),就會(huì)存在各種問題,為此,Spring又提供了Http Invoker,同樣是使用Http傳送對(duì)象,而且是使用Java的序列化機(jī)制。相比RMI,Http對(duì)防火墻的穿透力要強(qiáng)。
        后來嘗試了最后的這種Http Invoker方式,是在Spring2.0版本下嘗試的,開發(fā)非常簡(jiǎn)單,網(wǎng)上也有大量的資料介紹。應(yīng)該說從這里入口可以做一些嘗試。目前遇到的一個(gè)項(xiàng)目就需要混合架構(gòu),B/S采用Spring2 + Struts2 + Hiberntae3,瀏覽器只提供一些查詢功能和數(shù)據(jù)展現(xiàn),C端采用Eclipse的RCP平臺(tái),共享服務(wù)器的業(yè)務(wù)接口,調(diào)用就采用Http Invoker遠(yuǎn)程服務(wù),復(fù)雜的業(yè)務(wù)功能都集中在C端上。



    剛進(jìn)場(chǎng)的時(shí)候戲就落幕

    Feedback

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2008-05-06 12:59 by origo
    想學(xué)習(xí)spring http Invoker 的C/S 模式和Spring2 + Struts2 + Hiberntae3的B/S模式的 可以訪問這個(gè)網(wǎng)站:http://soyframework.com 有詳細(xì)例子。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-06 15:24 by blackhero
    現(xiàn)在很多cs和bs混合的項(xiàng)目,互補(bǔ)不同

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-06 16:50 by 大道自然
    和我的想法差不多,但是我現(xiàn)在還沒有時(shí)間去實(shí)現(xiàn)C/S結(jié)構(gòu)

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-06 17:26 by 銀河使者
    以前也做過很多這處C/S和B/S混合的項(xiàng)目。但有些客戶端使用的不是java。當(dāng)然,服務(wù)端也非得使用象EJB一樣的重量級(jí)組件。如我做過的一個(gè)系統(tǒng)C/S部分的客戶端使用的是delphi,而服務(wù)端只是普通的jsp/servlet程序,也未使用web service,而是通過servlet來為C/S部分的客戶端(delphi客戶端)返回?cái)?shù)據(jù)(也包括一些加密數(shù)據(jù)),而客戶端通過http協(xié)議訪問servlet。當(dāng)然,B/S部分的還是jsp。這樣實(shí)現(xiàn)個(gè)人感覺比較簡(jiǎn)單。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-06 21:59 by jasin2008
    c/s 遠(yuǎn)程訪問如何維持會(huì)話狀態(tài),如何保證數(shù)據(jù)傳輸?shù)陌踩裕恢罉侵髟谶@方面是怎么解決的

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2008-05-07 09:10 by 寒武紀(jì)
    @jasin2008
    個(gè)人覺得C/S遠(yuǎn)程調(diào)用要像B/S那樣保持會(huì)話是比較困難的,遠(yuǎn)程調(diào)用和瀏覽器的Cookie機(jī)制脫節(jié),所以要模擬會(huì)話是有難度的。有網(wǎng)友給出了一些看法,我覺得這種想法挺不錯(cuò)的,可以參照一下。
    http://www.javaeye.com/topic/82492

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 09:12 by 銀河使者
    實(shí)際上C/S和B/S從底層技術(shù)上沒什么區(qū)別。C/S只是模擬瀏覽器來訪問服務(wù)端資源,至于會(huì)話狀態(tài),可以讀取http響應(yīng)頭的Session-cookie信息來處理,至于安全性,客戶端可以使用https協(xié)議訪問服務(wù)端,或是自已加密數(shù)據(jù)。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2008-05-07 11:32 by origo
    @大道自然
    目前有很多現(xiàn)成的組件可以用,c/s的實(shí)現(xiàn)還是比較容易的,swing的方式最忌諱的就是代碼混亂,沒有框架支持。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2008-05-07 11:33 by origo
    @jasin2008
    會(huì)話的維持保持在后臺(tái),每個(gè)請(qǐng)求維持一個(gè)會(huì)話,這方便B/S和C/S實(shí)現(xiàn)起來也差不多吧

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 14:27 by 銀河使者
    是的,從技術(shù)上差不多。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 16:37 by for_the_king
    運(yùn)用Swing+http invoker+spring+hibernate開發(fā)C/S架構(gòu)的系統(tǒng)從技術(shù)上沒有難度,而且java web start可以解決客戶端自動(dòng)升級(jí)的問題,兩年前我們公司一個(gè)項(xiàng)目采用這種方式客戶就非常喜歡,客戶又感受到了傳統(tǒng)C/S應(yīng)用的用戶體驗(yàn),而且沒有升級(jí)麻煩,只局限在局域網(wǎng)中使用等待一系列問題。樓主擔(dān)心的問題10行代碼就可以搞定(http://www.javaeye.com/topic/82492,這么笨的方法也虧這個(gè)人想的出來),首先擴(kuò)展SimpleHttpInvokerRequestExecutor的openConnection()方法把客戶端的信息(登錄用戶,客戶端選擇的locale等)加到URL后面,在服務(wù)器端寫一個(gè)filter把這些信息取出來放到threadlocal中,在Service中不就可以隨便用了嗎,httpinvoker本身就是無狀態(tài)的,干嘛非把httpSession牽扯進(jìn)來,想法就沒對(duì)。

    其實(shí)這種架構(gòu)最麻煩的莫過于界面的開發(fā),在我們?cè)瓉淼捻?xiàng)目中一會(huì)兒客戶想要一個(gè)可以翻頁的表格,過幾天他又想點(diǎn)擊表頭可以排序,單列排序他又不滿足了他又想多列排序,表格搞得差不多了表單又來了,Swing的布局管理非常靈活,要做好一個(gè)表單真得費(fèi)一番勁,而且客戶總喜歡把他們用VB,delphi做的系統(tǒng)拿來跟你比,說你界面丑陋啦,日期輸入不人性化啦...,用struts2半天就可以搞定的一個(gè)表單用Swing恁是搞了一個(gè)星期,寫界面的痛苦啊。總之,Swing的界面開發(fā)是個(gè)大麻煩,項(xiàng)目完了以后將一些可重用的組件整理了一下,但還是發(fā)現(xiàn)界面代碼一大堆,極難維護(hù),后來的項(xiàng)目只要客戶說C/S,我們也絕口不提C/S。

    后來在javaeye首頁上看到一家公司的富客戶端解決方案的廣告,進(jìn)去看了看第一感觸就是這個(gè)框架的作者當(dāng)時(shí)絕對(duì)和我一樣痛苦過,只不過他痛定思痛走的更遠(yuǎn)了一些,能夠把控件封裝起來,把項(xiàng)目中常見的問題在框架中一并解決了,現(xiàn)在只是感嘆如果這個(gè)框架能在兩年前出現(xiàn)那該有多好啊!

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2008-05-07 18:13 by 寒武紀(jì)
    樓上的想法不錯(cuò),沒有具體實(shí)現(xiàn)過,Http invoker也是最近才曉得。希望能進(jìn)一步深入了解。
    說起GUI的開發(fā)有強(qiáng)烈的同感,記得以前開發(fā)的第一個(gè)Swing項(xiàng)目的時(shí)候,項(xiàng)目不大,但是界面不少,表格、樹這些都需要用到。那時(shí)JDK和NetBean版本都很低,記得是1.4.X+4.1版本,Eclipse的VE太容易暴掉,所以就在NetBean那上面畫GUI,如果一個(gè)頁面控件多了NetBean里面的代碼就亂成一鍋粥。沒有辦法,在基本成型后就全部搬到Eclipse進(jìn)行重構(gòu)(工作量比較大)。最大的問題就是缺乏Application運(yùn)行管理內(nèi)核,想想當(dāng)初為了一個(gè)打開--編輯--保存--關(guān)閉編輯模型的功能,以及像構(gòu)建工具欄、狀態(tài)欄等這些基本框架,花了大量大量的時(shí)間和精力,還好,初出茅廬,有的就是精力,最后還是拼起來了。很多class都是上一二千行的,根本無法維護(hù)。后來轉(zhuǎn)去學(xué)習(xí)Eclipse RCP框架,感覺好多了,也成功在RCP平臺(tái)上構(gòu)建了一個(gè)大型項(xiàng)目的應(yīng)用。自從JDK6以后,Swing好像提升非常快,NetBean也開始支持RCP應(yīng)用,不久還有Application框架,而且像SwingLab這些高級(jí)組件也挺不錯(cuò)的。感覺以后開發(fā)Swing應(yīng)該比原來要容易一些。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 19:09 by 銀河使者
    做C/S的客戶端不必非得用java吧,雖然Java是跨平臺(tái)的,在國(guó)內(nèi)客戶端基本都是windows。個(gè)人認(rèn)為客戶端用delphi、c++ builder、vb,甚至C#比較好,可以用java做服務(wù)端。java的swing、awt或是SWT做GUI遠(yuǎn)不如delphi這些開發(fā)工具方便。如果非得要做的話,netbeans6.1提供的java gui比較好,layout也非常方便,大家可以試試。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 19:10 by 銀河使者
    我以前做過一個(gè)項(xiàng)目,客戶端就是用的delphi,服務(wù)端用的jsp+hibernate,效果很好。反正通訊用的都是tcp

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 22:42 by for_the_king
    還試圖用VB,VC,delphi做數(shù)據(jù)庫(kù)應(yīng)用的人醒醒吧,就拿客戶端不能自動(dòng)升級(jí)這一條就能讓我永遠(yuǎn)不會(huì)考慮他們,這些語言或架構(gòu)不適合做企業(yè)應(yīng)用,如果還沒搞明白什么是企業(yè)應(yīng)用,那我告訴你企業(yè)應(yīng)用至少要有應(yīng)用服務(wù)器。客戶端用delphi服務(wù)器端用jsp+hibernate通訊用TCP就更扯了,當(dāng)然了every language can do everything,向你們的架構(gòu)師的不畏復(fù)雜的精神和他這么有創(chuàng)意的架構(gòu)致敬。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-07 22:46 by for_the_king
    在blogjava上搜到一篇文章http://m.tkk7.com/knight-glory-ggg/archive/2008/03/05/183984.html
    估計(jì)是這個(gè)框架的作者寫出來宣傳框架的,不過作者將Swing做數(shù)據(jù)庫(kù)應(yīng)用面臨的問題說的很清楚,值得一讀。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-28 16:05 by 懶人
    @銀河使者
    有很多語言可以做客戶端的

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-28 17:42 by 銀河使者
    @懶人

    不是有很多語言,而是所有支持網(wǎng)絡(luò)技術(shù)(TCP協(xié)議)的語言或技術(shù)都可以做客戶端。包括flash、office。

    如果需要非常絢麗的效果,我看flash就很好,flash做動(dòng)畫可以其他語言比不了的啊。而且flash的script也可以使用TCP協(xié)議。這就足夠了。如果誰用flash做一個(gè)msn或QQ的客戶端,那效果遠(yuǎn)比msn或QQ要好的多了。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-28 17:52 by 銀河使者
    @for_the_king

    誰說delphi、vc做的東西不能自動(dòng)升級(jí)。我不知道你用過瑞星或其他的殺毒軟件沒。也是用VC或其他的語言寫的,不是也可以自動(dòng)升級(jí)。還有微軟的smallclient(智能客戶端),用C#或VB.net寫的C/S程序。不是也可以很好的自動(dòng)升級(jí)嗎!至于通過tcp協(xié)議訪問,當(dāng)然,用delphi做的程序不一定直接使用tcp。就象ajax可以使用json一樣,做個(gè)通用的映射組件,類似于web services,解決的方法非常多。

    但是web程序卻無法做到C/S的某些功能,至少很復(fù)雜。如做個(gè)樹、菜單。這些用delphi、vb,只要幾分鐘就可以做個(gè)很好的程序。還有更復(fù)雜的效果。
    最煩人的是web程序并不真正跨平臺(tái),ie6、ie7、firefox都得單獨(dú)考慮。除非你可以強(qiáng)迫用戶必須使用自己指定的瀏覽器。而C/S程序則是真正意義上的跨平臺(tái)。(只限于windows,客戶端是非windows時(shí)除外),在win98、win2000、winxp,2003,vista,windows2008上,只要能運(yùn)行起來,界面效果都一樣。


    至于什么是企業(yè)級(jí)應(yīng)用,我認(rèn)為沒有必要非得強(qiáng)調(diào)必須有什么,不能有什么。只要能滿足用戶的需要,其他的一切都不重要。主要得用戶滿意、然后才能老板滿意,最后才能自己滿意。

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2008-05-28 17:55 by 銀河使者
    另外,開發(fā)一個(gè)大的軟件系統(tǒng)不僅需要開發(fā)人員有團(tuán)隊(duì)精神。所使用的技術(shù)也應(yīng)團(tuán)隊(duì)合作。沒有哪一種技術(shù)可以適合于所有的領(lǐng)域和應(yīng)用。如進(jìn)行數(shù)據(jù)遷移,就可以利用數(shù)據(jù)庫(kù)本身的技術(shù),如sql server的DTS技術(shù)。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2008-07-21 19:20 by lucky
    www.soyframework.com目前最好的RCP框架了,不防試試

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2013-03-06 23:16 by harrison
    怒頂樓主,查找了半天相關(guān)的文獻(xiàn)資料

    # re: B/S,C/S架構(gòu)混合使用  回復(fù)  更多評(píng)論   

    2014-04-16 17:31 by Unbotrusive
    我同意“客戶端就是用的delphi,服務(wù)端用的jsp+hibernate”,效果確實(shí)很好。其實(shí)這個(gè)只要用上SOA 框架后,都能解決C/S 和B/S混合使用的問題。 只要在服務(wù)器上搭建能處理數(shù)據(jù)的SOA框架的處理服務(wù),然后再搭建客戶端,直接利用服務(wù)器的數(shù)據(jù),這樣就可以解決問題了。
    但是若按上面4樓的說法只用一種語言只得很麻煩,特別是JAVA 這種節(jié)目很差的語言。

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2014-10-02 15:42 by eagle
    可以幫我發(fā)個(gè)b/s和c/s混合架構(gòu)的例子不?我們最近要做,我只用.net做過b/s架構(gòu)的網(wǎng)站,現(xiàn)在要我負(fù)責(zé)這個(gè)混合結(jié)構(gòu)的c,好愁喲,不知道該怎么弄,求助樓主大神,360082175@qq.com是我的QQ郵箱

    # re: B/S,C/S架構(gòu)混合使用[未登錄]  回復(fù)  更多評(píng)論   

    2014-10-02 15:42 by eagle
    補(bǔ)充一下:用的語言是java,開發(fā)環(huán)境是eclipse

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: www.亚洲日本| 免费看美女让人桶尿口| 免费精品国产自产拍在线观看| 亚洲无删减国产精品一区| 国产成人亚洲精品91专区手机| 男人的好免费观看在线视频| 国产99视频精品免费专区| a一级毛片免费高清在线| 亚洲成AV人片在WWW| 国产人成亚洲第一网站在线播放| 亚洲精选在线观看| 亚洲av无码国产精品夜色午夜| 四虎永久免费网站免费观看| 在线免费观看一级毛片| 免费AA片少妇人AA片直播| 少妇无码一区二区三区免费| 国产一级a毛一级a看免费视频 | 国产一区二区三区免费观看在线| 美女羞羞视频免费网站| 亚洲色大网站WWW永久网站| 亚洲三级中文字幕| 亚洲国产中文在线二区三区免| 亚洲精品美女视频| 亚洲精品在线电影| 91亚洲视频在线观看| 亚洲熟妇无码久久精品| 亚洲理论片在线中文字幕| 亚洲成人网在线播放| 亚洲黄色免费在线观看| 亚洲美女视频免费| 久久精品国产亚洲AV蜜臀色欲 | 91精品国产免费| 91精品视频在线免费观看| 91香蕉在线观看免费高清| 18禁成人网站免费观看| 麻豆视频免费播放| 成人黄动漫画免费网站视频| 色妞WWW精品免费视频| 暖暖日本免费在线视频| 国产三级电影免费观看| 亚洲国产成人久久一区WWW|