• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            隨筆 - 181, 文章 - 2, 評(píng)論 - 85, 引用 - 0
            數(shù)據(jù)加載中……

            開發(fā)從遺留的企業(yè) IT 基礎(chǔ)架構(gòu)到基于 SOA 的企業(yè)架構(gòu)的移植策略

            學(xué)習(xí)如何為企業(yè)開發(fā)面向服務(wù)的體系結(jié)構(gòu)(Service Oriented Architecture,SOA)移植策略,該企業(yè)的 IT 基礎(chǔ)架構(gòu)包括業(yè)務(wù)筒倉(silo)的單獨(dú)業(yè)務(wù)線,并擁有許多集成的遺留應(yīng)用程序來支持業(yè)務(wù)目標(biāo)。本文包括開發(fā)成功的 SOA 移植策略所需行為的工作細(xì)化結(jié)構(gòu)范例,最終生成符合 IBM 客戶合約中 SOA 原則的實(shí)際應(yīng)用程序。

            SOA 介紹

            自從 Gartner Group [1]提出面向服務(wù)的體系結(jié)構(gòu)(Service Oriented Architecture,SOA)和企業(yè)服務(wù)總線(Enterprise Service Bus,ESB)以來,這些術(shù)語已經(jīng)用了好幾年了。然而,應(yīng)用 SOA 解決方案的實(shí)際細(xì)節(jié)僅僅是最近才出現(xiàn)的。

            那么,準(zhǔn)確地說面向服務(wù)的體系結(jié)構(gòu)是什么呢?“SOA 是一種組件模型,它通過應(yīng)用程序功能單元(稱為服務(wù))之間定義完善的接口和契約,來聯(lián)系應(yīng)用程序中的不同服務(wù)。”[2]。通過以上的定義,當(dāng)提取應(yīng)用程序作為服務(wù)時(shí),SOA 是在應(yīng)用程序之間構(gòu)建企業(yè)級(jí)集成層的模式集。SOA 解決方案提倡使用開放標(biāo)準(zhǔn),然而當(dāng)集成應(yīng)用程序時(shí),在某些地方還是需要使用專有技術(shù)。

            SOA 依賴于將應(yīng)用程序功能發(fā)布為服務(wù),這些服務(wù)可被外部各方調(diào)用。通常,對(duì) SOA 服務(wù)定義的一致觀點(diǎn)是[3]:

            • 服務(wù)通過明確的、與實(shí)現(xiàn)無關(guān)的接口來定義。
            • 服務(wù)被松散綁定,并且可以通過強(qiáng)調(diào)位置透明性和互操作性的通信協(xié)議進(jìn)行調(diào)用。
            • 服務(wù)封裝了可重用的業(yè)務(wù)功能。

            服務(wù)可存在于不同的級(jí)別上,并提供不同的粒度。通常認(rèn)為有以下服務(wù)級(jí)別[4]:

            • 技術(shù)功能(例如,日志記錄)
            • 業(yè)務(wù)功能(例如,getCustomerInfo)
            • 業(yè)務(wù)事務(wù)(例如,openAccount)
            • 業(yè)務(wù)流程(例如,processOrder)

            每一個(gè)粒度級(jí)別可能都需要一些合成度。在每個(gè)粒度級(jí)別上,服務(wù)定義以可復(fù)用的方式封裝其功能是很重要的。

            將應(yīng)用程序功能發(fā)布成服務(wù)使應(yīng)用程序可以高效解耦,這是 SOA 的一種需求。通過接口將功能發(fā)布成服務(wù),該接口將針對(duì)這項(xiàng)功能創(chuàng)建會(huì)話虛包(fa?ade)。可以通過直接修改應(yīng)用程序或者通過創(chuàng)建適配器(將請(qǐng)求轉(zhuǎn)換成特定于應(yīng)用程序的調(diào)用)來創(chuàng)建這樣的接口。

            當(dāng)應(yīng)用程序功能作為服務(wù)公開時(shí),創(chuàng)建服務(wù)消費(fèi)者和提供者之間路由消息的機(jī)制是很重要的。SOA 解決方案通過使用企業(yè)服務(wù)總線(Enterprise Services Bus,ESB)來滿足此需求。企業(yè)服務(wù)總線是為各種服務(wù)請(qǐng)求者和服務(wù)提供者提供連接層的一種消息代理,它確保二者之間合適的消息路由。服務(wù)請(qǐng)求者是組件,它調(diào)用由服務(wù)提供者發(fā)布的服務(wù)來實(shí)現(xiàn)內(nèi)部邏輯。

            雖然 ESB 最重要的任務(wù)是提供連接框架,但它也提供現(xiàn)代 IT 所需要的合適的服務(wù)級(jí)別和可管理性。實(shí)質(zhì)上,ESB 允許在基于 SOA 的架構(gòu)中集成服務(wù),并提供“服務(wù)請(qǐng)求者和服務(wù)提供者之間使用分布式中介功能的單一管理點(diǎn)”[4]。

            ESB 在服務(wù)請(qǐng)求者和提供者之間提供松耦合,允許用一個(gè)服務(wù)實(shí)現(xiàn)來替換另一個(gè),而且不會(huì)對(duì)該服務(wù)的消費(fèi)者造成影響。

            在 ESB 提供了服務(wù)之間連接性的同時(shí),其他 SOA 組件也提供了對(duì)發(fā)布、發(fā)現(xiàn)和調(diào)用服務(wù)的支持。這些組件包括業(yè)務(wù)服務(wù)目錄、業(yè)務(wù)服務(wù)編排和 ESB 網(wǎng)關(guān)。然而,這些組件的部署需要根據(jù)實(shí)際的業(yè)務(wù)需求來決定。舉個(gè)例子,許多較小的企業(yè)可能發(fā)現(xiàn)他們實(shí)際上并不需要 ESB 網(wǎng)關(guān),因此,將不必建立這些網(wǎng)關(guān),導(dǎo)致架構(gòu)過于復(fù)雜。

            業(yè)務(wù)服務(wù)目錄提供 ESB 所依賴的服務(wù)路由信息,同時(shí)支持服務(wù)請(qǐng)求者和提供者之間的通信。然而,業(yè)務(wù)服務(wù)目錄的主要任務(wù)是提供服務(wù)細(xì)節(jié),這些服務(wù)細(xì)節(jié)可用于執(zhí)行基礎(chǔ)架構(gòu)所支持的業(yè)務(wù)功能。實(shí)質(zhì)上,業(yè)務(wù)服務(wù)目錄是服務(wù)消費(fèi)者尋找支持他們操作的服務(wù)的地方。

            在業(yè)務(wù)服務(wù)目錄提供關(guān)于現(xiàn)有服務(wù)的信息的同時(shí),業(yè)務(wù)服務(wù)編排組件允許通過現(xiàn)有的低級(jí)服務(wù)組成新的服務(wù)。例如,可以通過定義包含幾個(gè)較低級(jí)別業(yè)務(wù)功能的工作流來創(chuàng)建新的業(yè)務(wù)事務(wù)。這樣的工作流成為新的服務(wù),并發(fā)布在業(yè)務(wù)服務(wù)目錄中。







            開發(fā) SOA 移植策略

            許多提供多種服務(wù)的大企業(yè)如今發(fā)現(xiàn),他們的 IT 已經(jīng)被嚴(yán)重拆分。主要是因?yàn)樵S多企業(yè)選擇允許每個(gè)業(yè)務(wù)部門維護(hù)它自己的 IT 需求,而不是依賴于集中管理的 IT 組織。因此,許多部門只創(chuàng)建與自身相關(guān)的應(yīng)用程序。通常,公司可能有一些賬單、帳目管理以及類似的支持不同業(yè)務(wù)方面的系統(tǒng)。而且,許多公司希望安裝“最佳”軟件,而不考慮同其它應(yīng)用程序的集成。后來他們發(fā)現(xiàn),將新的應(yīng)用程序加入 基礎(chǔ)架構(gòu)時(shí)經(jīng)常需要特定的方案。下面的圖 1 正是目前一些企業(yè)中 IT 基礎(chǔ)架構(gòu)的例子:


            圖 1.常見的遺留企業(yè) IT 基礎(chǔ)架構(gòu)
            常見的遺留企業(yè) IT 基礎(chǔ)架構(gòu)

            從上圖中可以注意到一個(gè) IT 難題,那就是大多數(shù)應(yīng)用程序之間直接相互通信。當(dāng)應(yīng)用程序需要修改或淘汰時(shí),這種依賴便成為一個(gè)實(shí)際問題。任何修改都可能會(huì)按其自身的方式更新每條唯一的通信線路。因此,這種變更可能代價(jià)高昂。這種情況被稱為應(yīng)用程序間的緊耦合,也逐漸成為讓一些企業(yè)頭疼的問題。

            另一方面,SOA 將松耦合作為成功的企業(yè)級(jí)應(yīng)用程序集成的一個(gè)主要原則。與緊耦合相反,松耦合是:

            限制請(qǐng)求者應(yīng)用程序代碼和提供者應(yīng)用程序代碼的相互了解。如果耦合的服務(wù)任何方面有所變化,那么,請(qǐng)求者或提供者的應(yīng)用程序代碼(更可能是兩者同時(shí))必須改變。如果任何一方(請(qǐng)求者、提供者或中介基礎(chǔ)架構(gòu))對(duì)解耦的服務(wù)任何方面作出改變,那么其它幾方不必隨之改變。[5]

            圖 1 也示例了當(dāng)在幾個(gè)業(yè)務(wù)區(qū)域內(nèi)部署具有所需功能的應(yīng)用程序時(shí)(例如,應(yīng)用程序 1 和應(yīng)用程序 1'),一些企業(yè)所采用的實(shí)踐行動(dòng)。通常,用每個(gè)部署稍微修改應(yīng)用程序以滿足特定業(yè)務(wù)區(qū)域的獨(dú)特需求。雖然讓多個(gè)應(yīng)用程序具有相同功能并沒有明顯的缺點(diǎn),但它們的存在可能表明:

            • 企業(yè)中可能存在數(shù)據(jù)副本,這會(huì)影響操作數(shù)據(jù)的準(zhǔn)確性。這是由以下原因造成的:大部分此種應(yīng)用程序依賴于相同的數(shù)據(jù)源, 且為了性能或其他原因,一部分?jǐn)?shù)據(jù)被本地存儲(chǔ)。
            • 維護(hù)多個(gè)應(yīng)用程序比支持單個(gè)解決方案需要更高的花費(fèi)。
            • 當(dāng)對(duì)這些應(yīng)用程序進(jìn)行合并,以減少對(duì)那些與被淘汰的方案互相依賴的應(yīng)用程序的影響時(shí),需要特別注意。

            通過采用 SOA 原則在企業(yè)級(jí)別上成功集成應(yīng)用程序可解決這些問題。

            值得注意的是,當(dāng)企業(yè)還未被深入劃分時(shí),應(yīng)用 SOA 是合理的。然而,當(dāng)公司內(nèi) IT 部門的數(shù)量很多,而且它們托管的應(yīng)用程序數(shù)量更多時(shí),實(shí)現(xiàn)基于 SOA 的企業(yè)體系結(jié)構(gòu)將是一項(xiàng)具有挑戰(zhàn)性的工作,需要精心規(guī)劃。

            將復(fù)雜的深入劃分的企業(yè)分割成一些單獨(dú)的域,事情可能會(huì)變得容易很多。第一,通過 ESB 發(fā)布特殊的應(yīng)用程序服務(wù),每一個(gè)域可以與企業(yè)其余部分解耦。第二,以后域內(nèi)的應(yīng)用程序可以啟用 SOA,而不會(huì)影響企業(yè)其余部分。

            按照業(yè)務(wù)功能(例如,銷售、賬戶管理、客戶服務(wù)等等)或?qū)崿F(xiàn)(比如大型機(jī)和 Unix 服務(wù)器)來對(duì)域的劃分進(jìn)行組織。然而,實(shí)質(zhì)上,域?qū)o密連接的應(yīng)用程序,因此,相比它們與企業(yè)的其余部分的關(guān)系,這些應(yīng)用程序彼此之間將具有更嚴(yán)重的依賴性。

            如果一組服務(wù)屬于單獨(dú)的域,那么可用下列準(zhǔn)則來定義:

            • 功能域是基于業(yè)務(wù)功能選擇的。這些域中的服務(wù)消費(fèi)域外部的有限數(shù)量的服務(wù),并對(duì)外部公開有限數(shù)量的服務(wù)。
            • 基于技術(shù)的域根據(jù)所利用的一系列技術(shù)來選擇。這些可能包括大型機(jī)應(yīng)用程序、分布式應(yīng)用程序等等。
            • 基于應(yīng)用程序的域是緊耦合的應(yīng)用程序集合。共享相同數(shù)據(jù)庫的電子商務(wù)應(yīng)用程序或大型機(jī)應(yīng)用程序的集合是這種劃分的一個(gè)例子。

            域的初始劃分也可以是純概念上的,對(duì)那些需要作為服務(wù)向企業(yè)其余部分公開的應(yīng)用程序功能進(jìn)行確認(rèn)。

            一旦確認(rèn)了服務(wù),需要通過使用網(wǎng)關(guān)和防火墻建立明確的邊界,從而使域彼此分離。這種分離提供了對(duì)應(yīng)用程序交互的更好的控制,并可進(jìn)一步對(duì)應(yīng)用程序進(jìn)行靈活的變更,而不會(huì)對(duì)企業(yè)其余部分產(chǎn)生重大影響。這種分離可通過幾種不同的方法實(shí)現(xiàn):

            • 將公開域功能的業(yè)務(wù)功能定義為粗粒度服務(wù):業(yè)務(wù)功能由企業(yè)需求驅(qū)動(dòng),而并非內(nèi)部的實(shí)現(xiàn)細(xì)節(jié)。業(yè)務(wù)功能可以在域內(nèi)部調(diào)用細(xì)粒度的技術(shù)服務(wù),對(duì)外部消費(fèi)者提供服務(wù)。定義業(yè)務(wù)功能的主要目的是限制域之間的交互。
            • 添加網(wǎng)關(guān)可以將一個(gè)域設(shè)定轉(zhuǎn)換為另一個(gè)域設(shè)定:通過添加更好的控制功能,網(wǎng)關(guān)也允許在外部實(shí)體間(例如業(yè)務(wù)伙伴)建立明確的界限。通常,網(wǎng)關(guān)可與業(yè)務(wù)功能合成為一個(gè)邏輯實(shí)體。然而,添加網(wǎng)關(guān)是由業(yè)務(wù)需求決定的,如果域共享相同的設(shè)定就不需要添加網(wǎng)關(guān)。使用下列方法之一可以實(shí)現(xiàn)網(wǎng)關(guān):

              • 透明/代理網(wǎng)關(guān)以消費(fèi)者認(rèn)為能直接與業(yè)務(wù)功能進(jìn)行交互的方式公開域服務(wù)。這種網(wǎng)關(guān)也可以基于企業(yè)基礎(chǔ)架構(gòu)需求對(duì)輸入和輸出的消息進(jìn)行轉(zhuǎn)換。當(dāng)域數(shù)據(jù)以非常特殊的格式(與企業(yè)級(jí)約定完全不同)存儲(chǔ)時(shí),需要進(jìn)行轉(zhuǎn)換。例如,按照企業(yè)策略,特定于域的二進(jìn)制數(shù)據(jù)可能需要轉(zhuǎn)換成 XML。
              • 防火墻允許增強(qiáng)對(duì)域的封裝。盡管,防火墻不去執(zhí)行任何轉(zhuǎn)換,但是它們限制消費(fèi)者僅能訪問域邊界內(nèi)預(yù)先定義的點(diǎn)。而且,防火墻的引入提供了對(duì)不遵循域的封裝規(guī)則的服務(wù)進(jìn)行檢測(cè)。

            分析發(fā)布到域外部的應(yīng)用程序功能時(shí),會(huì)發(fā)現(xiàn)實(shí)際的服務(wù)是細(xì)粒度功能的結(jié)合。將應(yīng)用程序功能編制為業(yè)務(wù)服務(wù)的一種機(jī)制是引入本地服務(wù)總線(Local Service Bus,LSB),將服務(wù)編排組件添加到這些域。

            本地服務(wù)總線是為單個(gè)域提供連接支持的企業(yè)服務(wù)總線的實(shí)例。通過服務(wù)編排組件進(jìn)行擴(kuò)展,使域可以組成 ESB 可消費(fèi)的更高級(jí)別的業(yè)務(wù)功能。

            下面,圖 2 演示了以上步驟生成的基礎(chǔ)架構(gòu):


            圖 2.已定義并分離的 IT 域
            已定義并分離的 IT 域

            一旦封裝了所有的域并公開了業(yè)務(wù)功能,通過 ESB 對(duì)其集成,并采用業(yè)務(wù)編排來創(chuàng)建更高級(jí)別的業(yè)務(wù)流程和事務(wù)就變得更加容易。一旦 ESB 是到位并且企業(yè)正在使用,就可以對(duì)域內(nèi)遺留應(yīng)用程序進(jìn)行移植,且對(duì)企業(yè)其余部分影響很小。

            下面(表 1)的工作細(xì)化結(jié)構(gòu)范例描述了企業(yè)將遺留基礎(chǔ)架構(gòu)移植到基于 SOA 的企業(yè)體系結(jié)構(gòu)所需要采取的主要步驟。盡管實(shí)際的任務(wù)清單是特定于對(duì)具體企業(yè)的,但是下面的清單為需要考慮的內(nèi)容提供了一種思路。

            表 1. 工作細(xì)化結(jié)構(gòu)

            ID 任務(wù)名稱
            1 SOA 移植規(guī)劃
            2 ? ? ? ? ? ?管理
            3 ? ? ? ? ? ? ? ? ? ? ? ?項(xiàng)目管理
            4 ? ? ? ? ? ? ? ? ? ? ? ?技術(shù)管理
            5 ? ? ? ? ? ?實(shí)現(xiàn)活動(dòng)
            6 ? ? ? ? ? ? ? ? ? ? ? ?收集信息
            7 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?協(xié)商
            8 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文檔分析
            9 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            10 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            11 ? ? ? ? ? ? ? ? ? ? ? ?分析
            12 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?功能方面
            13 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?收集信息
            16 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建信息
            17 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            18 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?技術(shù)方面
            19 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?收集信息
            22 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            23 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            24 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?應(yīng)用程序方面
            25 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?收集信息
            26 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?協(xié)商
            27 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?文檔分析
            28 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            29 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            30 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?域方面
            31 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?信息分析
            32 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            33 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            34 ? ? ? ? ? ? ? ? ? ? ? ?規(guī)劃變更
            35 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?ESB 規(guī)劃
            36 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?開發(fā) ESB 組織原則
            37 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?工作量估計(jì)
            38 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            39 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            40 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?LSB 規(guī)劃
            41 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 開發(fā) LSB 組織原則
            42 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 工作量估計(jì)
            43 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 創(chuàng)建文檔
            44 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 評(píng)審
            45 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?相關(guān)性規(guī)劃
            46 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?相關(guān)性分析
            47 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            48 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審
            49 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?接口規(guī)劃
            50 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?接口開發(fā)
            51 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?創(chuàng)建文檔
            52 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?評(píng)審







            結(jié)束語

            基于 SOA 的企業(yè)體系結(jié)構(gòu)的方法使得在對(duì)企業(yè) IT 基礎(chǔ)架構(gòu)進(jìn)行變更時(shí),相關(guān)的移植風(fēng)險(xiǎn)更小。通常,公司認(rèn)識(shí)到支持舊的基礎(chǔ)架構(gòu)是代價(jià)高昂的;然而,劇烈的變化是很有風(fēng)險(xiǎn)的。將企業(yè)劃分為多個(gè)域,并引入本地服務(wù)總線(Local Service Bus)的概念可以減輕風(fēng)險(xiǎn),并可用良好可控制步驟來將其移植到新的基礎(chǔ)架構(gòu)中。

            請(qǐng)記住解決方案只可以被有效地應(yīng)用于不同類的環(huán)境中,這點(diǎn)非常有用。同類環(huán)境不太可能從這種策略中獲益。

            posted on 2006-04-17 03:33 wsdfsdf 閱讀(138) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 技術(shù)文章

            国产精品美女久久久久网| 久久影院久久香蕉国产线看观看| 国产精品99久久不卡| 久久精品国产清高在天天线| 亚洲精品无码久久久久去q| 亚洲人成电影网站久久| 要久久爱在线免费观看| 久久久青草青青国产亚洲免观| 精品久久久久久国产牛牛app | 久久天堂AV综合合色蜜桃网| 国内精品综合久久久40p| 久久精品国产亚洲AV影院| 精品人妻伦九区久久AAA片69| 中文字幕人妻色偷偷久久| 日产精品99久久久久久| 狠狠色丁香婷婷久久综合不卡| 99热成人精品热久久669| 国产高清美女一级a毛片久久w| 国产精品无码久久四虎| 久久一本综合| 亚洲国产精品无码久久一线| 久久精品国产半推半就| 欧美久久久久久精选9999| 久久人人爽人人爽人人片AV麻烦| 热re99久久6国产精品免费| 久久777国产线看观看精品| 久久久久黑人强伦姧人妻| 成人久久免费网站| 麻豆精品久久精品色综合| 无码任你躁久久久久久久| 精品国际久久久久999波多野| 久久久久亚洲精品无码网址| 欧美大香线蕉线伊人久久| 国产精品va久久久久久久| 精品无码久久久久国产动漫3d | 国产精品9999久久久久| 国产—久久香蕉国产线看观看| 97久久国产综合精品女不卡| 成人午夜精品久久久久久久小说| 伊人久久久AV老熟妇色| 久久天天躁狠狠躁夜夜av浪潮|