亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        .Net下基于數(shù)據(jù)庫(kù)組件的ORM中間件的設(shè)計(jì)與實(shí)現(xiàn)

        2016-09-13 07:25:25郭亞平馬新春
        電子設(shè)計(jì)工程 2016年3期
        關(guān)鍵詞:數(shù)據(jù)庫(kù)用戶設(shè)計(jì)

        郭亞平,馬新春,張 麗

        (新疆電子研究所有限公司 新疆 烏魯木齊 830049)

        .Net下基于數(shù)據(jù)庫(kù)組件的ORM中間件的設(shè)計(jì)與實(shí)現(xiàn)

        郭亞平,馬新春,張 麗

        (新疆電子研究所有限公司 新疆 烏魯木齊830049)

        文中介紹.Net開(kāi)發(fā)環(huán)境下,通過(guò)自定義數(shù)據(jù)庫(kù)訪問(wèn)控件和對(duì)象關(guān)系映射技術(shù)(Object Relational Mapping,簡(jiǎn)稱ORM)實(shí)現(xiàn)的一種全新的數(shù)據(jù)持久層中間件。該中間件實(shí)現(xiàn)數(shù)據(jù)庫(kù)表對(duì)象到用戶UI控件的自動(dòng)映射,在降低對(duì)開(kāi)發(fā)人員數(shù)據(jù)庫(kù)開(kāi)發(fā)技術(shù)掌握水平要求的同時(shí),大大提高開(kāi)發(fā)效率,使開(kāi)發(fā)人員可以致力于后臺(tái)邏輯與用戶UI設(shè)計(jì),為用戶帶來(lái)更好的體驗(yàn)。本中間件通過(guò)我公司在新疆維吾爾自治區(qū)開(kāi)發(fā)的多個(gè)管理信息系統(tǒng)(MIS)的應(yīng)用與實(shí)踐,已經(jīng)驗(yàn)證了其快捷性、穩(wěn)定性和可伸縮性,能夠有效的提高軟件開(kāi)發(fā)效率。

        .Net;數(shù)據(jù)庫(kù)控件;對(duì)象關(guān)系映射;中間件;管理信息系統(tǒng)

        管理信息系統(tǒng) (Management Information System,MIS)是一個(gè)以人為主導(dǎo),利用計(jì)算機(jī)硬件、軟件、網(wǎng)絡(luò)通信設(shè)備以及其他辦公設(shè)備,進(jìn)行信息的收集、傳輸、加工、儲(chǔ)存、更新、拓展和維護(hù)的系統(tǒng)[1]。是當(dāng)前企事業(yè)以及政府信息化的一種主流的系統(tǒng)軟件模式。在管理信息系統(tǒng)中,通過(guò)數(shù)據(jù)訪問(wèn)層操作數(shù)據(jù)庫(kù)實(shí)現(xiàn)對(duì)信息的存儲(chǔ)訪問(wèn)是其最基本而且必不可少的組成部分。用傳統(tǒng)的方法開(kāi)發(fā)數(shù)據(jù)訪問(wèn)層,存在編碼工作重復(fù)、編碼質(zhì)量不一、代碼可移植性差、可重用性低、難以維護(hù)等問(wèn)題。對(duì)象關(guān)系映射(Object Relational Mapping,ORM)是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將應(yīng)用中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中,從而可以有效解決上述傳統(tǒng)數(shù)據(jù)訪問(wèn)層存在的問(wèn)題。目前已有的.Net下的幾種ORM中間件解決方案,如Nhibernate、Subsonic、Genome等,分別存在配置使用復(fù)雜、靈活性差以及開(kāi)發(fā)價(jià)格成本昂貴的缺點(diǎn)。

        筆者曾經(jīng)有過(guò)使用 Delphi開(kāi)發(fā) MIS的經(jīng)驗(yàn),對(duì)使用Delphi下使用Data Controls組件開(kāi)發(fā)數(shù)據(jù)庫(kù)管理信息系統(tǒng)的靈活和便捷深有體會(huì)。針對(duì)以上問(wèn)題,筆者認(rèn)為采用類似于Delphi下數(shù)據(jù)庫(kù)控件技術(shù)實(shí)現(xiàn)ORM持久層不失為一種快捷而且靈活的方案。本文從對(duì)數(shù)據(jù)庫(kù)管理信息系統(tǒng)的數(shù)據(jù)訪問(wèn)層一般實(shí)現(xiàn)方法的總結(jié)和分析出發(fā),介紹和討論了ORM技術(shù)的原理、實(shí)現(xiàn)方法和技術(shù)優(yōu)勢(shì)。在以上理論研究的基礎(chǔ)上,本文從用戶需求出發(fā),使用組件技術(shù)和可擴(kuò)展接口技術(shù),設(shè)計(jì)實(shí)現(xiàn)了一個(gè).NET平臺(tái)下的基于ORM技術(shù)的跨數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問(wèn)中間件。該中間件以自定義數(shù)據(jù)庫(kù)控件接口標(biāo)準(zhǔn)為基礎(chǔ),通過(guò)ORM技術(shù)屏蔽不同數(shù)據(jù)庫(kù)和數(shù)據(jù)對(duì)象間的差異,提供一個(gè)通用的數(shù)據(jù)訪問(wèn)層中間件,實(shí)現(xiàn)對(duì)用戶UI數(shù)據(jù)與數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)的自動(dòng)映射,最大程度的縮減代碼編制人員編寫(xiě)數(shù)據(jù)訪問(wèn)層的代碼數(shù)量,有效的提高管理信息系統(tǒng)開(kāi)發(fā)過(guò)程中的代碼編制效率。

        1 ORM技術(shù)簡(jiǎn)介

        對(duì)象關(guān)系映射(Object Relational Mapping,ORM)是通過(guò)使用描述對(duì)象和數(shù)據(jù)庫(kù)之間映射的元數(shù)據(jù),將數(shù)據(jù)庫(kù)應(yīng)用中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫(kù)中。本質(zhì)上就是將數(shù)據(jù)從一種形式轉(zhuǎn)換到另外一種形式。

        ORM技術(shù)是跟隨著面向?qū)ο蟮能浖_(kāi)發(fā)方法發(fā)展而產(chǎn)生的。面向?qū)ο蟮拈_(kāi)發(fā)方法是當(dāng)前企業(yè)級(jí)應(yīng)用開(kāi)發(fā)環(huán)境中的主流開(kāi)發(fā)方法[2]。關(guān)系數(shù)據(jù)庫(kù)是企業(yè)級(jí)應(yīng)用環(huán)境中永久存放數(shù)據(jù)的主流數(shù)據(jù)存儲(chǔ)系統(tǒng)[3]。對(duì)象和關(guān)系數(shù)據(jù)是業(yè)務(wù)實(shí)體的兩種抽象表現(xiàn)形式,業(yè)務(wù)實(shí)體在內(nèi)存中表現(xiàn)為對(duì)象,在數(shù)據(jù)庫(kù)中表現(xiàn)為關(guān)系數(shù)據(jù)。內(nèi)存中的對(duì)象之間存在關(guān)聯(lián)和繼承關(guān)系,而在關(guān)系數(shù)據(jù)庫(kù)中,關(guān)系數(shù)據(jù)無(wú)法直接表達(dá)多對(duì)多關(guān)聯(lián)和繼承關(guān)系。因此,對(duì)象-關(guān)系映射(ORM)中間件主要用于實(shí)現(xiàn)對(duì)象到關(guān)系數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)的映射。

        實(shí)際應(yīng)用中,我們通過(guò)ORM中間件在關(guān)系型數(shù)據(jù)庫(kù)和業(yè)務(wù)實(shí)體對(duì)象之間作一個(gè)映射,通過(guò)中間件屏蔽不同數(shù)據(jù)庫(kù)的差異,這樣我們?cè)诰唧w編寫(xiě)應(yīng)用邏輯的時(shí)候,就不需要再去編寫(xiě)復(fù)雜的SQL語(yǔ)句,只要通過(guò)操作ORM中間件就可以實(shí)現(xiàn)對(duì)象到關(guān)系的持久化任務(wù)。從而大大降低對(duì)開(kāi)發(fā)人員數(shù)據(jù)庫(kù)開(kāi)發(fā)技術(shù)掌握水平的要求,提高開(kāi)發(fā)效率。

        2 中間件技術(shù)

        中間件(Middleware)是基礎(chǔ)軟件的一大類,屬于可復(fù)用軟件的范疇。顧名思義,中間件處于操作系統(tǒng)軟件與用戶的應(yīng)用軟件的中間[4]。中間件在操作系統(tǒng)、網(wǎng)絡(luò)和數(shù)據(jù)庫(kù)之上,應(yīng)用軟件的下層,總的作用是為處于自己上層的應(yīng)用軟件提供運(yùn)行與開(kāi)發(fā)的環(huán)境,幫助用戶靈活、高效地開(kāi)發(fā)和集成復(fù)雜的應(yīng)用軟件。

        ORM中間件介于底層數(shù)據(jù)庫(kù)與上層管理信息系統(tǒng)應(yīng)用之間,以屏蔽不同數(shù)據(jù)庫(kù)之間的差異,支持?jǐn)?shù)據(jù)庫(kù)管理信息系統(tǒng)的開(kāi)發(fā)、運(yùn)行時(shí)共享,保障數(shù)據(jù)庫(kù)管理信息系統(tǒng)的可靠部署與管理等內(nèi)容為主要目標(biāo)。為數(shù)據(jù)庫(kù)管理信息系統(tǒng)提供了快速構(gòu)建的架構(gòu)支撐的工具與手段,對(duì)于數(shù)據(jù)庫(kù)管理信息系統(tǒng)的規(guī)范化和標(biāo)準(zhǔn)化具備凝煉作用。中間件結(jié)構(gòu)示意圖如圖1所示。

        圖1 中間件功能示意圖Fig.1 Middleware function diagram

        3 .Net開(kāi)發(fā)環(huán)境

        .Net是微軟的新一代技術(shù)平臺(tái),為敏捷商務(wù)構(gòu)建互聯(lián)互通的應(yīng)用系統(tǒng),這些系統(tǒng)是基于標(biāo)準(zhǔn)的,聯(lián)通的,適應(yīng)變化的,穩(wěn)定的和高性能的。從技術(shù)的角度,一個(gè).NET應(yīng)用是一個(gè)運(yùn)行于.Net Framework之上的應(yīng)用程序[5]。

        本中間件設(shè)計(jì)理念全部基于.Net開(kāi)發(fā)平臺(tái),屬于.Net開(kāi)發(fā)技術(shù)在數(shù)據(jù)庫(kù)管理信息系統(tǒng)開(kāi)發(fā)方面的應(yīng)用拓展。本中間件設(shè)計(jì)理念針對(duì)于客戶端/服務(wù)器(C/S)和瀏覽器/服務(wù)器(B/ S)架構(gòu)均適用。

        4 數(shù)據(jù)庫(kù)控件設(shè)計(jì)概念

        文中所述的數(shù)據(jù)庫(kù)控件是指滿足本中間件所規(guī)定的標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)接口定義的控件。為充分利用已有的各種控件,本中間件規(guī)定了一種標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)控件接口,現(xiàn)有的各類系統(tǒng)控件以及第三方控件通過(guò)實(shí)現(xiàn)該接口即可成為數(shù)據(jù)庫(kù)控件,從而保證本中間件的開(kāi)放性、兼容性和可擴(kuò)展性。該接口的主要定義如下:

        屬性:

        1)DBField:控件對(duì)應(yīng)數(shù)據(jù)到數(shù)據(jù)庫(kù)字段的映射。

        2)AllowEmpty:是否允許控件為空。

        3)DefalutValue:控件為空時(shí)候的默認(rèn)值。

        4)ValueType:控件值類型。

        5)Format:控件值格式。

        6)Caption:控件代表字段的中文含義。

        方法:

        1)CheckEmpty:檢查控件是否空值。

        2)CheckFormat:檢查控件值格式。

        3)GetValue:從控件取值。

        4)SetValue:向控件賦值。

        5)SetDefaultValue:為控件賦默認(rèn)值。

        事件:

        A、TriggerValueChangedEvent:觸發(fā)控件值改變事件。

        數(shù)據(jù)庫(kù)控件是本中間件的基礎(chǔ)。本中間件通過(guò)數(shù)據(jù)庫(kù)控件實(shí)現(xiàn)數(shù)據(jù)庫(kù)數(shù)據(jù)到用戶UI的自動(dòng)映射,同時(shí)自動(dòng)完成用戶UI控件數(shù)據(jù)到數(shù)據(jù)庫(kù)的持久化存儲(chǔ)功能,最大化的縮減數(shù)據(jù)訪問(wèn)層的代碼編寫(xiě)量。這里筆者只針對(duì)數(shù)據(jù)庫(kù)持久化的過(guò)程中的一對(duì)一模型接口設(shè)計(jì)做出了說(shuō)明。一對(duì)多模型接口設(shè)計(jì)類似,在此筆者不再縟述。

        5 ORM中間件的設(shè)計(jì)與實(shí)現(xiàn)

        5.1ORM中間件的設(shè)計(jì)目標(biāo)

        ORM中間件的主要目的是提供一個(gè)獨(dú)立的、可復(fù)用的數(shù)據(jù)持久化解決方案[6]。數(shù)據(jù)庫(kù)管理信息系統(tǒng)編碼人員利用這個(gè)中間件通過(guò)簡(jiǎn)單配置和屬性設(shè)定就可以完成用戶UI數(shù)據(jù)到數(shù)據(jù)庫(kù)的持久化工作,而基本不需要了解底層數(shù)據(jù)庫(kù)的的任何細(xì)節(jié)。在降低對(duì)開(kāi)發(fā)人員技能掌握要求的同時(shí),使開(kāi)發(fā)人員從傳統(tǒng)數(shù)據(jù)訪問(wèn)層代碼編寫(xiě)過(guò)程中繁瑣的、機(jī)械的工作中解脫出來(lái),致力于系統(tǒng)邏輯和用戶UI設(shè)計(jì),在提高軟件開(kāi)發(fā)效率的同時(shí),能夠?yàn)橛脩魩?lái)更好的用戶體驗(yàn)。

        5.2ORM中間件功能需求

        O/R Maping中間件主要功能特點(diǎn)如下:

        1)中間件應(yīng)忽略不同數(shù)據(jù)庫(kù)間的差異,通過(guò)定義標(biāo)準(zhǔn)數(shù)據(jù)庫(kù)訪問(wèn)接口來(lái)提供對(duì)不同數(shù)據(jù)庫(kù)的擴(kuò)展支持。

        2)中間件應(yīng)能夠根據(jù)目標(biāo)數(shù)據(jù)庫(kù)準(zhǔn)確的生成標(biāo)準(zhǔn)的增刪改sql語(yǔ)句,省去開(kāi)發(fā)人員代碼重復(fù)編寫(xiě)的麻煩。

        3)開(kāi)發(fā)人員通過(guò)簡(jiǎn)單的定義即可完成數(shù)據(jù)庫(kù)關(guān)系數(shù)據(jù)到用戶界面的映射和采集工作,從而使程序員專注于業(yè)務(wù)邏輯處理。

        4)支持單表、一對(duì)一以及一對(duì)多表間的數(shù)據(jù)處理工作,同時(shí)支持?jǐn)?shù)據(jù)庫(kù)事務(wù)處理,保證不同表數(shù)據(jù)間的完整性。

        5)提供豐富的事件處理接口,便于開(kāi)發(fā)人員應(yīng)對(duì)變化多樣的客戶端開(kāi)發(fā)要求。

        6)以組件、類的多態(tài)性和繼承性保證中間件的可擴(kuò)展性和可伸縮性。

        5.3ORM中間件結(jié)構(gòu)設(shè)計(jì)

        整個(gè)中間件由數(shù)據(jù)庫(kù)訪問(wèn)層(Data Access Layer)、持久層(Persistent Layer)和由數(shù)據(jù)庫(kù)控件組成的UI設(shè)計(jì)層組成。如圖2所示。

        其中數(shù)據(jù)訪問(wèn)層主要類和接口設(shè)計(jì)如下:

        DatabaseFactory類:數(shù)據(jù)庫(kù)工廠類,其主要作用是根據(jù)目標(biāo)數(shù)據(jù)庫(kù)的不同產(chǎn)生不同的數(shù)據(jù)庫(kù)訪問(wèn)類。

        ISqlMaker接口:主要實(shí)現(xiàn)自動(dòng)編寫(xiě)目標(biāo)數(shù)據(jù)庫(kù)的增刪改Sql語(yǔ)句。

        DbOperator類:調(diào)用ISqlMaker結(jié)果實(shí)現(xiàn)對(duì)具體數(shù)據(jù)表的增刪改操作。

        圖2 中間件結(jié)構(gòu)設(shè)計(jì)示意圖Fig.2 Middleware design schematic

        SortedListRow類:Dictionary類數(shù)據(jù)結(jié)構(gòu),類似于數(shù)據(jù)表的行對(duì)象,數(shù)據(jù)表對(duì)象以行對(duì)象集合SortedListRowCollection的形式展現(xiàn)。

        持久層主要類和接口設(shè)計(jì)如下:

        IDBControl接口:數(shù)據(jù)庫(kù)控件接口定義標(biāo)準(zhǔn)。

        IDBControlsContainer接口:數(shù)據(jù)庫(kù)控件容器接口,該接口負(fù)責(zé)在數(shù)據(jù)訪問(wèn)層和UI層之間傳輸數(shù)據(jù)。

        DbTransactionController類:事務(wù)處理類,負(fù)責(zé)多個(gè)數(shù)據(jù)庫(kù)容器間數(shù)據(jù)持久化的事務(wù)統(tǒng)一性處理工作。

        InputHelper類:UI數(shù)據(jù)有效性檢查及數(shù)據(jù)收集類,主要負(fù)責(zé)向用戶界面的數(shù)據(jù)控件收集數(shù)據(jù)以及賦值。

        UI層主要包括各種實(shí)現(xiàn)了數(shù)據(jù)庫(kù)接口定義的系統(tǒng)控件、第三方控件以及自定義控件。

        5.4ORM中間件主要類工作流程說(shuō)明

        中間件主要類工作流程如圖3所示。

        圖3 中間件工作流程示意圖Fig.3 Middleware work flow diagram

        如3圖中所示IDBControlsContainer容器接口類調(diào)用Input Helper類從符合IDBControl接口的數(shù)據(jù)庫(kù)控件獲取用戶數(shù)據(jù),同時(shí)進(jìn)行數(shù)據(jù)有效性驗(yàn)證,同時(shí)調(diào)用 DbTransaction Controller類將用戶數(shù)據(jù)封裝成為行數(shù)據(jù)對(duì)象SortedListRow及表數(shù)據(jù)對(duì)象 SortedListRowCollection。DbOperator類接收SortedListRow及 SortedListRowCollection類型對(duì)象,調(diào)用DatabaseFactory類創(chuàng)建目標(biāo)數(shù)據(jù)庫(kù)對(duì)象,進(jìn)而調(diào)用ISqlMaker接口對(duì)象自動(dòng)構(gòu)造相應(yīng)數(shù)據(jù)持久化SQL語(yǔ)句,從而完成用戶UI數(shù)據(jù)到目標(biāo)數(shù)據(jù)庫(kù)的持久化工作。反之,則可完成持久化數(shù)據(jù)到用戶UI界面的自動(dòng)映射工作。

        從上述類工作流程中我們可以看到,在UI設(shè)計(jì)人員完成用戶界面設(shè)計(jì)并設(shè)置相應(yīng)控件屬性之后,中間件就可以自動(dòng)完成用戶數(shù)據(jù)向底層數(shù)據(jù)庫(kù)的持久化工作,大量減少了代碼編寫(xiě)人員的代碼編寫(xiě)任務(wù),避免了重復(fù)而且機(jī)械性的工作,對(duì)提高工作效率,減少程序編制Bug有著重要意義。

        6 結(jié)束語(yǔ)

        數(shù)據(jù)庫(kù)管理信息系統(tǒng)是目前各類企事業(yè)單位實(shí)現(xiàn)信息化的主要手段,如何提高管理信息系統(tǒng)的開(kāi)發(fā)效率,有效解決傳統(tǒng)數(shù)據(jù)庫(kù)管理信息系統(tǒng)編制過(guò)程中編碼工作重復(fù)、編碼質(zhì)量不一、代碼可移植性差、可重用性低、難以維護(hù)等問(wèn)題,對(duì)于提高社會(huì)生產(chǎn)力有著重要意義。

        文中從上述問(wèn)題出發(fā),根據(jù)本人多年的.Net平臺(tái)管理信息系統(tǒng)的開(kāi)發(fā)經(jīng)驗(yàn),提出了一種全新的.Net平臺(tái)下基于數(shù)據(jù)庫(kù)控件的ORM中間件模式。該中間件已在我單位完成編制工作,并通過(guò)我單位在新疆維吾爾自治區(qū)實(shí)施的多個(gè)項(xiàng)目的應(yīng)用和實(shí)踐之后,取得了較為良好的使用效果。使用該中間件后,可以減少一般性管理信息系統(tǒng)數(shù)據(jù)訪問(wèn)層80%以上的代碼編寫(xiě)任務(wù),極大的提高了我單位的工作效率并帶來(lái)了良好的經(jīng)濟(jì)效益,極大地提高了我公司在新疆軟件行業(yè)的行業(yè)競(jìng)爭(zhēng)力。

        [1]史益芳,王志平.管理信息系統(tǒng)(2013版)[M].北京:人民郵電出版社,2013.

        [2]Timothy A.Budd.面向?qū)ο缶幊虒?dǎo)論[M].北京:機(jī)械工業(yè)出版社,2003.

        [3]薩師煊,王珊.?dāng)?shù)據(jù)庫(kù)系統(tǒng)概論(第四版)[M].北京:高等教育出版社,2006.

        [4]李文菲.基于中間件技術(shù)的數(shù)據(jù)交換平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[D].北京:中國(guó)科學(xué)院.2006

        [5]李律松.VisualC#數(shù)據(jù)庫(kù)高級(jí)教程[M].北京:清華大學(xué)出版社,2005.

        [6]韓萬(wàn)江.軟件工程案例教程[M].北京:機(jī)械工業(yè)出版社,2007.

        Design and implementation of the.Net ORM Middleware based on database control

        GUO Ya-ping,MA Xin-chun,ZHANG Li
        (Xinjiang electronic institute Co.,LTD,Urumqi 830049,China)

        This article describes how to achieve a brand new middleware of data persistence layer under the.Net environment through custom database access controls and object relational mapping technology.The middleware can map database tables with UI controls automatically,reducing database development requirement of the developers,and greatly Improve development efficiency,allows developers and users committed to the buiness logic and UI designment for better user experience.Through our several management information systems in Xinjiang Uygur Autonomous Region,The middleware has verified its quickness,stability and scalability.It can make software development more effectively.

        .Net;database access control;ORM;middleware;MIS

        TN02

        A

        1674-6236(2016)03-0029-03

        2015-03-19稿件編號(hào):201503253

        郭亞平(1978—),男,新疆阿克蘇人,工程師。研究方向:架構(gòu)設(shè)計(jì)。

        猜你喜歡
        數(shù)據(jù)庫(kù)用戶設(shè)計(jì)
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        數(shù)據(jù)庫(kù)
        關(guān)注用戶
        商用汽車(2016年11期)2016-12-19 01:20:16
        關(guān)注用戶
        商用汽車(2016年6期)2016-06-29 09:18:54
        數(shù)據(jù)庫(kù)
        關(guān)注用戶
        商用汽車(2016年4期)2016-05-09 01:23:12
        數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)
        国产精品人人做人人爽人人添 | 中文字幕久无码免费久久| 蜜桃一区二区免费视频观看| 亚洲成人精品在线一区二区| 在线视频播放观看免费| 国产高清成人午夜视频| 久久久久亚洲精品无码网址蜜桃 | 91社区视频在线观看| 久久综合一本中文字幕| 加勒比婷婷色综合久久| 亚洲av久久久噜噜噜噜| 亚洲国产区男人本色| 日韩中文字幕无码av| av福利资源在线观看| 男女射黄视频网站在线免费观看 | 亚洲第一最快av网站| 亚洲av无码专区亚洲av| 国产成人AⅤ| 亚洲一区免费视频看看| 五月天激情电影| 又硬又粗又大一区二区三区视频| 亚洲无码中文字幕日韩无码| 中文字幕在线乱码av| 最新中文字幕av无码不卡| 亚洲欧美日韩国产一区| 色噜噜精品一区二区三区 | 日韩午夜福利无码专区a| 国产福利姬喷水福利在线观看| 国产亚洲视频在线观看播放| 91九色国产老熟女视频| 中文字幕日韩人妻不卡一区| 澳门精品无码一区二区三区| 久久亚洲春色中文字幕久久久综合| 国产乱码人妻一区二区三区| 欧美第一黄网免费网站| 国产亚洲精品国看不卡| 男人天堂亚洲天堂av| 国内露脸少妇精品视频| 9久久精品视香蕉蕉| 日本免费影片一区二区| 免费无码av片在线观看播放|