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

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

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

    soufan

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      22 隨筆 :: 0 文章 :: 0 評論 :: 0 Trackbacks

    轉(zhuǎn)載
    摘要
    :本文介紹了
    Web Services 的起源和基本原理,分析了在企業(yè)應(yīng)用中 Web Services 帶來的沖擊和變革,指出了 Web Services 的一些優(yōu)缺點(diǎn)以及如何正確地應(yīng)用 Web Services.

    無論是在計(jì)算機(jī)雜志還是在 Internet 上,目前最熱門的話題莫過于“ Web Services” 。各個(gè)平臺(tái)之間的鋒爭,各個(gè)新產(chǎn)品的發(fā)布,眾多新標(biāo)準(zhǔn)的制訂,大都和 Web Services 有關(guān)。

    我的一些朋友是這樣的一些人,他們總是用著最新的平臺(tái),嘗試著最新的技術(shù),他們喜歡變化,喜歡流行,用他們自己的話說,新技術(shù)創(chuàng)造新生活!可是,當(dāng)我的一個(gè)朋友,帶領(lǐng)他們一個(gè)部門的開發(fā)人員,花了兩個(gè)月的,將他們內(nèi)部的管理系統(tǒng)用 Web Services 重新設(shè)計(jì)和實(shí)現(xiàn)了一遍,卻發(fā)現(xiàn)在實(shí)際使用的情況下,系統(tǒng)性能非常糟糕。他提出了這樣一個(gè)問題:是不是 Web Services 現(xiàn)在還處于實(shí)驗(yàn)和市場炒作時(shí)期,根本沒有進(jìn)入實(shí)用的階段?簡單的回答是: Web Services 不是萬能的,它有它的應(yīng)用范圍和優(yōu)勢劣勢。

    Web Services 的起源

    Web 應(yīng)用的巨大成功和不斷發(fā)展,使其滲透到商業(yè)領(lǐng)域和個(gè)人生活的各個(gè)方面。人們只要使用瀏覽器,就可以享受到各種各樣的 Web 服務(wù),例如網(wǎng)上購物,網(wǎng)上交易,網(wǎng)絡(luò)游戲,預(yù)定車票,網(wǎng)上聊天和交友等等。與此同時(shí),由于 Web 技術(shù)所帶來的優(yōu)勢(統(tǒng)一的客戶端和較好的維護(hù)性),使一些傳統(tǒng)的應(yīng)用紛紛轉(zhuǎn)型到 BS 結(jié)構(gòu)上。

    然而,在發(fā)展中,逐步暴露了一些問題。所有這些 Web 頁面都是為人準(zhǔn)備的,是讓人去閱讀,去輸入,去判斷。因此各種反映視覺效果的內(nèi)容占用了大量的網(wǎng)絡(luò)帶寬,例如各種圖片,字體信息,文字排版樣式等。而真正含有高價(jià)值的一些信息,被深深埋在這些顯示信息中,很難被其他應(yīng)用和程序所使用。更重要的是,各種 web 服務(wù)之間缺少交互和通訊的機(jī)制。

    程序之間的互相通訊很重要嗎?簡單舉一個(gè)例子。

    假設(shè)你經(jīng)常去國外出差,在你回國以后,第一件事就是費(fèi)用報(bào)銷了。而你們公司有這樣的財(cái)務(wù)規(guī)定,所有的報(bào)銷款,都按報(bào)銷當(dāng)天的外匯比價(jià)進(jìn)行結(jié)算。因此在你填寫報(bào)銷單的時(shí)候必須先填寫每一筆在各個(gè)國家的花消,然后上網(wǎng)查出當(dāng)天的外匯比價(jià),填寫到報(bào)銷單上。剩下的事情也許不用你做了,你的報(bào)銷單填寫工具會(huì)自動(dòng)進(jìn)行換算和統(tǒng)計(jì)。

    覺得有什么不妥嗎?作為 IT 公司的員工,也許都有一個(gè)特點(diǎn),計(jì)算機(jī)能做的事情,盡量要計(jì)算機(jī)去做。外匯比價(jià)的查詢可以讓計(jì)算機(jī)自動(dòng)去做嘛!然而,讓你的程序自動(dòng)去網(wǎng)頁上查找指定的外匯比價(jià)可不是一件容易的事。因?yàn)檫@些網(wǎng)頁是給人閱讀的,人眼和大腦的反應(yīng)速度有多快,它們可以從一整頁信息中快速定位到你所要的內(nèi)容,而且無論網(wǎng)頁怎樣變化和改版都不會(huì)帶來太大的影響。而應(yīng)用程序想要做同樣的事就差得太遠(yuǎn)了。因此,現(xiàn)在需要的是專門為應(yīng)用程序制定的 Web 服務(wù)。

    隨著應(yīng)用程序之間通訊的需求越來越大,這就需要制定統(tǒng)一的標(biāo)準(zhǔn)和協(xié)議。 HP 公司是最先提出這個(gè)觀點(diǎn)的公司,他們制定了有關(guān)“ e-Speak” 的標(biāo)準(zhǔn)來保證應(yīng)用程序之間的交互,并聲稱將成為下一代 Internet 信息交互的標(biāo)準(zhǔn)。而隨后, MicroSoft 意識到此計(jì)劃的美好前景,便推出了 .Net 戰(zhàn)略; IBM 很快就發(fā)布了 Web Services Toolkit(WSTK) ,和 Web Services Development Environment(WSDE) ,申明對 Web Services 的全力支持。與此同時(shí), Oracle 也開發(fā)出自己的 Dynamic Services ,并和 Oracle 8i Release 2 集成在一起。在這以后, W3C 統(tǒng)一制定了 Web Services 的各種標(biāo)準(zhǔn)。而 SUN 公司在宣布了自己的 Web Services 的框架以后,將 Web Services 的標(biāo)準(zhǔn)溶入 J2EE 的環(huán)境,使 Web Services 有了廣泛支持的基礎(chǔ)和平臺(tái)。

    Web Services 的基本原理

    Web Services 是通過一系列標(biāo)準(zhǔn)和協(xié)議來保證程序之間的動(dòng)態(tài)連接。其中最基本的協(xié)議包括: SOAP, WSDL, UDDI

    • SOAP: 是“ Simple Object Access Protocol” 的縮寫, SOAP 是消息傳遞的協(xié)議,它規(guī)定了 Web Services 之間是怎樣傳遞信息的。簡單的說, SOAP 規(guī)定了:
      1.
      傳遞信息的格式為 XML 。這就使 Web Services 能夠在任何平臺(tái)上,用任何語言進(jìn)行實(shí)現(xiàn)。
      2.
      遠(yuǎn)程對象方法調(diào)用的格式。規(guī)定了怎樣表示被調(diào)用對象以及調(diào)用的方法名稱和參數(shù)類型等。
      3.
      參數(shù)類型和 XML 格式之間的映射。這是因?yàn)椋徽{(diào)用的方法有時(shí)候需要傳遞一個(gè)復(fù)雜的參數(shù),例如,一個(gè) Person 對象。怎樣用 XML 來表示一個(gè)對象參數(shù),也是 SOAP 所定義的范圍。
      4.
      異常處理以及其他的相關(guān)信息 .

    • WSDL: 是“ Web Services Description Language” 的縮寫 . 意如其名 ,WSDL Web Services 的定義語言。當(dāng)你實(shí)現(xiàn)了某種服務(wù)的時(shí)候 ( , 股票查詢服務(wù) ), 為了讓別的程序調(diào)用 , 你必須告訴大家你的服務(wù)的接口 . 例如 , 服務(wù)名稱,服務(wù)所在的機(jī)器名稱,監(jiān)聽端口號,傳遞參數(shù)的類型 , 個(gè)數(shù)和順序 , 返回結(jié)果的類型等等 . 這樣別的應(yīng)用程序才能調(diào)用你的服務(wù)。 WSDL 協(xié)議就是規(guī)定了有關(guān) Web Services 描述的標(biāo)準(zhǔn)。

    • UDDI: Universal Description, Discovery, and Integration 的縮寫。簡單說, UDDI 用于集中存放和查找 WSDL 描述文件,起著目錄服務(wù)器的作用。

    如上圖,一個(gè) Web Services 的生命周期是:

    1. 實(shí)現(xiàn)一個(gè) Web Services ,使其能夠接受和響應(yīng) SOAP 消息(現(xiàn)在有很多工具都可以幫助實(shí)現(xiàn))。

    2. 撰寫一個(gè) WSDL 文件用于描述此 Web Services 。(現(xiàn)在有很多工具可以自動(dòng)生成 WSDL 文件)。

    3. 將此 WSDL 發(fā)布到 UDDI 上。

    4. 其他的應(yīng)用程序(客戶端)從 UDDI 上搜索到你的 WSDL

    5. 根據(jù)你的 WSDL ,客戶端可以編寫程序(現(xiàn)在有很多工具可以自動(dòng)生成調(diào)用程序)調(diào)用你的 Web Services

    Web Services 的缺點(diǎn)

    由于是基于 XML 的應(yīng)用, Web Services 與生俱來地在擁有 XML 帶來的一切優(yōu)勢的同時(shí),不可避免地繼承了 XML 所帶來的一些限制。

    • Web Services 通常需要大量的 CPU 資源。因?yàn)?/font> XML 數(shù)據(jù)要經(jīng)過多步處理才能被系統(tǒng)使用。首先是效驗(yàn)( validate ),檢查它的格式是否符合 XML 的規(guī)范,以及根據(jù)應(yīng)用程序定義( DTD Schema )檢查是否符合語義上的規(guī)范;然后還要進(jìn)行解析( parse ),從 XML 文檔分解出單個(gè)的元素;最后還要轉(zhuǎn)換成應(yīng)用程序所需要的二進(jìn)制表達(dá)(例如,把“ 12” 轉(zhuǎn)換成整型 12 的二進(jìn)制表示)。

    • Web Services 還意味著占用較多的內(nèi)存資源。在進(jìn)行 XML 解析的時(shí)候,會(huì)產(chǎn)生大量的臨時(shí)內(nèi)存對象。特別是在處理 DOM 對象的時(shí)候。這些大量的臨時(shí)對象對于象 JAVA 這類自動(dòng)回收內(nèi)存的語言和系統(tǒng)其實(shí)是一種負(fù)擔(dān),大量的臨時(shí)對象將會(huì)使系統(tǒng)每隔一段時(shí)間就會(huì)進(jìn)行內(nèi)存回收,從而降低系統(tǒng)的性能。當(dāng)然,現(xiàn)在有的 Web Services 的產(chǎn)品(如 axis )采用了 SAX 技術(shù),大大減少了內(nèi)存的占用量。詳細(xì)信息請參考:( http://xml.apache.org/axis/index.html )。

    • 網(wǎng)絡(luò)資源的消耗也是 Web Services 應(yīng)用的一些限制。因?yàn)榛?/font> XML 數(shù)據(jù)的傳遞通常數(shù)據(jù)量要比二進(jìn)制的協(xié)議(如 RMI/IIOP )要大的多。這種額外的消耗在網(wǎng)絡(luò)資源比較緊張或網(wǎng)絡(luò)傳輸比較頻繁的應(yīng)用中會(huì)產(chǎn)生一定的影響。

    除了 XML 帶來的限制, Web Services 本身也具有一些缺點(diǎn):

    • 到目前為止, Web Services 還可以說是一種無狀態(tài)( stateless )的服務(wù)。
      所謂 stateless 就意味著不保存客戶端服務(wù)調(diào)用者的任何信息。這是由 Web Services 的本質(zhì)所決定的。 Web Services 在本質(zhì)上是要為應(yīng)用程序之間提供數(shù)據(jù)通訊的標(biāo)準(zhǔn),為企業(yè)應(yīng)用之間動(dòng)態(tài)地提供大顆粒度的服務(wù),所以 Web Services 并不適合于非常精細(xì)的基于會(huì)話的方法調(diào)用以及復(fù)雜的事務(wù)( transaction )處理之中。
      也許有人會(huì)對我這點(diǎn)提出異議!因?yàn)椋F(xiàn)在有很多 Web Services 的產(chǎn)品(如 WASD ),不但可以保存 session 的信息,使服務(wù)成為有狀態(tài)( stateful )的服務(wù),而且還實(shí)現(xiàn)了 remote interface ,可以在 Web Services 的會(huì)話中傳遞遠(yuǎn)程對象的句柄,讓客戶端可以操縱遞遠(yuǎn)程對象(詳細(xì)信息請參考: http://www.systinet.com )。原理上說,這并不難實(shí)現(xiàn),因?yàn)樵?/font> XML 數(shù)據(jù)中,可以互相傳送任何數(shù)據(jù),包括 sessionID transactionID ,有了這些 ID ,從技術(shù)角度上說,實(shí)現(xiàn)有狀態(tài)( stateful )的服務(wù)和事務(wù)處理并不復(fù)雜。但是,這樣功能缺少標(biāo)準(zhǔn)的支持,當(dāng)前版本的 WSDL 還無法表示這些復(fù)雜的服務(wù)。在企業(yè)內(nèi)部,你可以任意使用這些特殊的功能,可以自己定義會(huì)話狀態(tài)的交互協(xié)議,因?yàn)榉?wù)者和服務(wù)調(diào)用者之間的通訊都在你的控制之中;然而要將這些服務(wù)發(fā)布到 Internet 上,其他的應(yīng)用程序是無法根據(jù)標(biāo)準(zhǔn)去識別這些特殊功能。

    • 數(shù)據(jù)綁定也存在一些不足。
      因?yàn)樗械臄?shù)據(jù)傳遞都用 XML 格式,因此,需要在二進(jìn)制數(shù)據(jù)和 XML 數(shù)據(jù)之間有個(gè)轉(zhuǎn)換。但是,并不是所有的二進(jìn)制數(shù)據(jù)都能方便地用 XML 來表示,并不是所有的 JAVA 對象都能被 XML 所表示。因此,經(jīng)常在轉(zhuǎn)換過程中會(huì)出現(xiàn)語義丟失的情況。

    • 技術(shù)要求高,學(xué)習(xí)曲線較長。
      每一個(gè) Web Services 的產(chǎn)品,都有豐富的工具,能夠根據(jù) Web Services 的定義(如 WSDL 文件)方便地生成客戶端的程序;能夠?qū)⒁话愕姆?wù)程序,很容易就包裝成 Web Services 服務(wù)。因此,各個(gè) Web Services 的產(chǎn)品都聲稱自己的平臺(tái)容易使用,根本不需要了解 XML ,也不需要了解什么 WSDL UDDI SOAP 就能使用發(fā)布 Web Services 。特別是一個(gè)朋友告訴我,他在什么都不了解的情況下,用 .NET 花了 15 分鐘就發(fā)布了一個(gè) Web Services
      千萬不要醉心于這種簡便,這對于簡單的 Demo 也許是對的,可是對于真正意義上嚴(yán)肅的應(yīng)用,一定要了解 Web Services 的各個(gè)方面,設(shè)計(jì)整體結(jié)構(gòu)和解決方案,還要根據(jù)具體的應(yīng)用調(diào)整性能。所有這些都需要對 Web Services 知識的全面掌握。

    什么應(yīng)用適合Web Services

    Web Services 這么多的缺點(diǎn)是不是讓你很泄氣?其實(shí),已經(jīng)有很多成功的 Web Services 的應(yīng)用和越來越多的開發(fā)商的加盟,證明 Web Services 一定會(huì)成為新一代 WEB 信息通訊的主流。經(jīng)過不斷的發(fā)展, Web Services 一定能克服自身的弱點(diǎn),得到更廣泛的應(yīng)用。但就目前來說, Web Services 比較適合用于下列形式的應(yīng)用:

    • 基于 WAN Internet 的應(yīng)用

    要在 Internet 上創(chuàng)建基于二進(jìn)制協(xié)議的 RMI/IIOP 的應(yīng)用,一般都會(huì)遇上一個(gè)大麻煩 -- 防火墻。客戶端瀏覽器極大可能在 ISP 防火墻后,大多數(shù)防火墻都只能允許和外部的 HTTP 連接,因此想要 ISP 防火墻后的客戶端能和防火墻外的 RMI/IIOP 的應(yīng)用端口進(jìn)行連接的話,就要改變 ISP 的安全策略,讓客戶端能夠連接除了 80 以外的其他端口。可是當(dāng)運(yùn)行 RMI/IIOP 的應(yīng)用的服務(wù)器為了安全也在防火墻之后的 DMZ 中的話,那這個(gè)連接就更加復(fù)雜了,要跨越兩個(gè)防火墻。
    Web Services 由于使用的是 HTTP 協(xié)議,傳遞的是純文本的 XML 數(shù)據(jù),因此擁有穿透防火墻的良好性能。

    • 基于異構(gòu)平臺(tái)的應(yīng)用

    XML 語言本身就是跨平臺(tái)、跨語言的數(shù)據(jù)表示方法,在加上通用的 HTTP 等協(xié)議,使得 Web Services 天生就適用于基于異構(gòu)平臺(tái)的應(yīng)用。如果你的客戶端包含了各種不同的平臺(tái),例如,你希望你的服務(wù)即可以被 JAVA 程序所調(diào)用,又可以由 VB COM 程序所調(diào)用。你有兩種選擇:一種是為不同的平臺(tái)提供相應(yīng)的 API ,還要為不同的語言提供 API ;如果提供 Web Services ,所有平臺(tái)和語言都可以調(diào)用了!

    • 需要強(qiáng)安全特性的應(yīng)用

    很多人都認(rèn)為,安全性是 Web Services 的弱項(xiàng)。其實(shí)不然,經(jīng)過不斷的完善和各種新的協(xié)議的出臺(tái), Web Services 完全可以用于安全性很強(qiáng)的應(yīng)用環(huán)境下。并且,由于 Web Services 使用 HTTP 協(xié)議進(jìn)行傳輸,所以可以和容易就使用已經(jīng)很成熟的基于 HTTP 的各種安全技術(shù)。

    • EAI (企業(yè)應(yīng)用集成)
      這是目前 Web Services 應(yīng)用最看好的方向之一。大多數(shù)企業(yè)內(nèi)部都有著各種各樣的應(yīng)用系統(tǒng),它們是在不同的領(lǐng)導(dǎo)在任期間,由不同的軟件開發(fā)商開發(fā),因此運(yùn)行在不同的平臺(tái)和系統(tǒng)上,系統(tǒng)的開發(fā)語言也各不相同。由于現(xiàn)代企業(yè)信息自動(dòng)化要求的提高,各個(gè)系統(tǒng)之間的互動(dòng)和相互通訊便提到日程上。因此,保護(hù)原有投資,重用遺留系統(tǒng)是當(dāng)前很多中大型企業(yè)的重要任務(wù)。
      由于遺留系統(tǒng)的運(yùn)行平臺(tái)是異構(gòu)環(huán)境,因此企業(yè)應(yīng)用集成的代價(jià)一般來說是很高的。但如果使用 Web Services 作為應(yīng)用集成的手段,將會(huì)大大降低集成的消耗。 Web Services 與平臺(tái)和語言無關(guān)的特性,以及各種平臺(tái)和環(huán)境下的開發(fā)工具都是企業(yè)應(yīng)用集成的利器。
      另外,在開發(fā)新的應(yīng)用系統(tǒng)的時(shí)候,仍然需要考慮和其他系統(tǒng)的集成,需要考慮調(diào)用其他系統(tǒng)的功能,和被其他系統(tǒng)所調(diào)用。使用 Web Services 作為系統(tǒng)與外部交流的接口,能夠使新的系統(tǒng)和別的系統(tǒng)之間保持松耦合的關(guān)系,保持較高的可擴(kuò)展性。

    • 行業(yè)內(nèi)部 B2B 應(yīng)用
      行業(yè)內(nèi)部的應(yīng)用是 Web Services 的另外一個(gè)方向。因?yàn)樵谝粋€(gè)行業(yè)中,商業(yè)業(yè)務(wù)是很相似的,因此在行業(yè)內(nèi)部很容易形成服務(wù)的標(biāo)準(zhǔn),使所有的業(yè)內(nèi)企業(yè)共同遵守;但怎樣實(shí)現(xiàn)服務(wù)和使用什么樣的系統(tǒng),決定權(quán)在于各個(gè)企業(yè)自己。例如,電信運(yùn)營商之間的結(jié)算服務(wù),銀行之間的轉(zhuǎn)帳服務(wù)等都可以形成行業(yè)標(biāo)準(zhǔn),以 WSDL 的形式公布出來。各個(gè)企業(yè)之間可以選擇不同的平臺(tái)進(jìn)行服務(wù)的實(shí)現(xiàn)。

    提高Web Services的性能

    要想提高 Web Services 應(yīng)用的性能,需要對整個(gè)系統(tǒng)做全盤的考慮。一般來說,有以下幾點(diǎn)需要注意:

    1. Web Services 的顆粒度
      選擇 Web Services 的顆粒度是提高 Web Services 應(yīng)用的性能的主要手段。因?yàn)?/span> Web Services 使用的傳輸協(xié)議為 HTTP SMTP 等,這些協(xié)議都是面向無狀態(tài)的連接協(xié)議,每一個(gè)請求都要建立一個(gè)新的連接。因此 Web Services 的調(diào)用不能象數(shù)據(jù)庫 JDBC ODBC )接口一樣可以進(jìn)行精細(xì)而復(fù)雜的方法調(diào)用(例如,先獲得 Connection ,再獲得結(jié)果集,然后一行一行獲取結(jié)果)。 Web Services 比較適用于大顆粒度的應(yīng)用,在一個(gè)調(diào)用中便獲得所有的信息(比如說銀行之間的轉(zhuǎn)帳,在一次調(diào)用中就將包括金額和認(rèn)證等所有的信息都傳輸過去)。

    2. 謹(jǐn)慎使用 XML 接口
      系統(tǒng)之間的接口可以使用 XML ,這樣可以增加系統(tǒng)的靈活性;但不要使用 XML 作為系統(tǒng)內(nèi)部的接口,因?yàn)檫@不會(huì)帶來任何好處,盡量使用二進(jìn)制作為系統(tǒng)內(nèi)部的接口,避免不必要的 XML 文檔的解析和效驗(yàn);在處理 XML 的時(shí)候,盡快將 XML 轉(zhuǎn)換成內(nèi)部對象, XML 的傳遞只會(huì)增加系統(tǒng)的開銷。

    3. 最大可能性使用 CACHE
      當(dāng)有些信息是只讀的,或者在一段時(shí)間內(nèi)保持不變,就可以使用 CACHE 。無論是客戶端的 CACHE 還是服務(wù)器端的 CACHE ,都能大大提高系統(tǒng)的性能

    總結(jié)

    一旦 Web Services 得到更加廣泛的應(yīng)用,使得各種服務(wù)可以動(dòng)態(tài)查找和定位,這樣就提供了不同設(shè)備之間各種各樣的信息交互方式,將會(huì)大大改變商業(yè)運(yùn)做的模式和信息交流的風(fēng)格。

    你可以使用別人已經(jīng)成熟的功能來使自己提供更好的服務(wù),例如 google ,它的搜索引擎可以通過 Web Services 來訪問。這就意味著在你的系統(tǒng)中可以方便的嵌入使用 google 的強(qiáng)大搜索功能,而不論你的系統(tǒng)是運(yùn)行在什么平臺(tái)上,使 google 的搜索引擎成為你系統(tǒng)的一部分,(請參考 http://www.google.com/apis/ )。站在別人的肩膀上,畢竟要看得遠(yuǎn)些!

    面對 Web Services 你現(xiàn)在可以不行動(dòng),但你一定要準(zhǔn)備好!

    posted on 2007-03-04 14:12 soufan 閱讀(220) 評論(0)  編輯  收藏

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


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲国产精品成人久久久| 亚洲黄色免费网址| 秋霞人成在线观看免费视频 | 任你躁在线精品免费| 亚洲av日韩av无码黑人| 4399影视免费观看高清直播| 国产精品亚洲综合久久| 亚洲中文字幕视频国产| 亚洲综合一区国产精品| 亚洲日本一区二区三区在线不卡| 久操视频在线免费观看| 亚洲妇女无套内射精| 亚洲精品无码av人在线观看 | 久久青草精品38国产免费| 亚洲中文字幕久久久一区| 最新国产AV无码专区亚洲| 搡女人免费视频大全| 中文字幕免费在线看| 亚洲自偷自偷在线成人网站传媒| 夜夜春亚洲嫩草影院| 免费在线观看的网站| 国产午夜不卡AV免费| 亚洲JIZZJIZZ妇女| 亚洲日韩图片专区第1页| 内射无码专区久久亚洲| 免费大片av手机看片| 亚洲精品国产第1页| 亚洲区小说区图片区| 毛片免费vip会员在线看| 国产精品99精品久久免费| 老牛精品亚洲成av人片| 亚洲中文字幕久久精品无码2021| 最新国产AV无码专区亚洲| 国产无遮挡色视频免费视频| 曰批全过程免费视频播放网站| sihu国产精品永久免费| 亚洲精品色播一区二区| 亚洲欧洲日本精品| 久久精品国产亚洲AV麻豆不卡| 亚洲人AV永久一区二区三区久久| 国产成人精品免费视频大全五级|