亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SQL Server XML 和 Web 應(yīng)用體系結(jié)構(gòu)

系統(tǒng) 2885 0

SQL Server XML 和 Web 應(yīng)用體系結(jié)構(gòu)


John A. Bocharov
Microsoft Developer Network
摘要: 本文概要介紹在一組基于 SQL Server XML 的解決方案中使用 Duwamish Books, Phase 4 應(yīng)用和更可靠的 Duwamish Online 應(yīng)用后所得到的體系結(jié)構(gòu)。
有關(guān) Microsoft® SQL Server™ 2000 中介紹的 SQL Server XML 技術(shù)套件的詳細信息,請參閱相關(guān)文檔 Duwamish Online SQL Server XML 分類瀏覽 (英文)。
您可以在 MSDN Online 代碼中心 (英文)查看 d5sqlxml.exe 示例代碼。
目錄
簡介
邏輯體系結(jié)構(gòu)
物理體系結(jié)構(gòu)
集成
影響
使用建議
總結(jié)

簡介


Microsoft SQL Server 2000 以其眾多的新功能閃亮登場,其中包括我們稱之為 SQL Server XML 的系列 XML 新技術(shù)。此技術(shù)套件包含諸多改進、增強和特性,使 SQL Server 成為更具 Web 特點的應(yīng)用程序,向 Microsoft .NET 版本邁進了一步。
SQL Server XML 可用于擴展、增強或替換 Web 應(yīng)用的體系結(jié)構(gòu)。新特性可分為兩個主要組件:
  • 數(shù)據(jù)庫組件,允許數(shù)據(jù)庫對 XML 進行讀、處理和寫操作

  • SQL Server XML Internet Server API (ISAPI) 應(yīng)用,允許通過 HTTP 訪問數(shù)據(jù)庫

無論是使用這兩個組件還是使用其中的一個,都可以獲得多個理想的體系結(jié)構(gòu)。為了測試新工具的功能和靈活性,我們檢驗了 Duwamish Online 的邏輯體系結(jié)構(gòu),并將其應(yīng)用到一組基于 SQL Server XML 的解決方案中。為了使研究更全面,我們在測試中同時使用了比較簡單的 Duwamish Books, Phase 4 應(yīng)用和更可靠的 Duwamish Online 應(yīng)用。下面是所得出的體系結(jié)構(gòu)的概述。

邏輯體系結(jié)構(gòu)


我們必須認識到不管應(yīng)用是什么形式,下面兩種體系結(jié)構(gòu)始終存在: 邏輯體系結(jié)構(gòu) ,是用于分析應(yīng)用的組織概念,而 物理體系結(jié)構(gòu) 則表示實施應(yīng)用的途徑。區(qū)分這兩個概念是非常必要的,因為這兩個體系結(jié)構(gòu)很少完全對應(yīng)(即使有過這種情況)。下面您將看到,與給定的邏輯設(shè)計相對應(yīng)的物理體系結(jié)構(gòu)會根據(jù)不同的情況而改變。
創(chuàng)建 Duwamish Online 及其以前版本時,我們根據(jù) Microsoft n -層準則確定邏輯體系結(jié)構(gòu)。該體系結(jié)構(gòu)包括由 Web 應(yīng)用執(zhí)行的公共操作,并不是專門針對 Duwamish Online 的。

圖 1:邏輯體系結(jié)構(gòu)
應(yīng)用分為五個邏輯層。距離客戶端最遠的是數(shù)據(jù)層,其中存儲了應(yīng)用所需的信息。它的上一層為數(shù)據(jù)訪問層,它從數(shù)據(jù)庫中數(shù)據(jù)的表示形式中提取數(shù)據(jù),并且包含所有數(shù)據(jù)庫操作公用的例程。數(shù)據(jù)訪問層直接由業(yè)務(wù)邏輯層使用。業(yè)務(wù)邏輯層通過隱藏來自更高層的事務(wù)邏輯和實施細節(jié)來提取業(yè)務(wù)事務(wù)。體系結(jié)構(gòu)的下一個邏輯層是工作流層,也稱為業(yè)務(wù)接口,它提供了一個到表示層的簡單界面(也稱為接口)。工作流層管理內(nèi)部狀態(tài),并使用業(yè)務(wù)邏輯層提供的自動操作來完成復(fù)雜的工作流。最后是表示層,它為用戶轉(zhuǎn)換工作流層返回的結(jié)果。有一些轉(zhuǎn)換比較簡單,例如通過 XSL 樣式表將結(jié)果轉(zhuǎn)換為 HTML;有些則比較復(fù)雜,例如通過電話線閱讀結(jié)果的語音算法。
下面是從這個邏輯體系結(jié)構(gòu)得出的幾個物理體系結(jié)構(gòu)。

物理體系結(jié)構(gòu)

分發(fā)負載


SQL Server XML 使數(shù)據(jù)庫具備除讀寫數(shù)據(jù)之外的很多其他功能。XML 功能允許存儲過程處理大量高度結(jié)構(gòu)化的數(shù)據(jù)。相關(guān)信息可以作為 XML 傳遞到存儲過程,從而允許業(yè)務(wù)邏輯或工作流以存儲過程(而不是 COM+ 或腳本)的形式實施。這意味著,現(xiàn)在您可以將更多應(yīng)用處理移到數(shù)據(jù)庫一級。如果決定采用這種方式,請切記數(shù)據(jù)庫是應(yīng)用中可伸縮性最小的部分。
決定應(yīng)用在數(shù)據(jù)庫和 Web 服務(wù)器之間分發(fā)處理的方式是非常關(guān)鍵的。這將影響應(yīng)用所需的軟件和硬件,開發(fā)應(yīng)用所需的專業(yè)技能,以及部署、更新和維護的過程。為遵循簡單性原則,我們將參考一個服務(wù)器配置,其中 Web 服務(wù)器執(zhí)行大部分工作,屬于“頭重”類型。而那種由數(shù)據(jù)庫服務(wù)器執(zhí)行大部分工作的配置則屬于“腳重”類型。
對于大多數(shù)應(yīng)用,有兩方面的因素決定其選擇“頭重”服務(wù)器:
  • 成本 :數(shù)據(jù)庫服務(wù)器所用的軟件和硬件比 Web 服務(wù)器所用的軟件和硬件成本高。

  • 可伸縮性 :在 SQL Server 2000 中,數(shù)據(jù)庫的可伸縮性在 SQL Server 7.0 的基礎(chǔ)上得到改善,但是為了充分發(fā)揮新硬件的功能,還需要仔細規(guī)劃和有效維護。

基于以上原因,基于“腳重”類型的服務(wù)器配置體系結(jié)構(gòu)留待以后討論。

Microsoft n -層物理體系結(jié)構(gòu)


作為比較,我們先看一個沒有使用 SQL Server XML 的 Duwamish Online ( http://www.duwamishonline.com/ ) 的物理體系結(jié)構(gòu)。它的設(shè)計目的是盡可能實現(xiàn)上面介紹的邏輯體系結(jié)構(gòu)。盡管每一層都設(shè)計為執(zhí)行一類邏輯操作,但是,仍然出現(xiàn)功能分布超出范圍的情況。例如,某些業(yè)務(wù)邏輯由數(shù)據(jù)庫中的存儲過程執(zhí)行以提高性能。那些熟悉 Duwamish Books, Phase 4 的用戶很快就會發(fā)現(xiàn)結(jié)構(gòu)的改變很小。

圖 2:Microsoft n -層體系結(jié)構(gòu)
此體系結(jié)構(gòu)允許每個組件專用于一個特定任務(wù),并使用最適合該任務(wù)的技術(shù)。緩存用 C++ 編寫以最大程度提高性能;使用 Active Server Pages (ASP) 和 XSL 來控制表示邏輯;由 Microsoft Visual Basic&reg; 執(zhí)行工作流、業(yè)務(wù)邏輯和數(shù)據(jù)訪問;用 Transact SQL (T-SQL) 控制組件和數(shù)據(jù)庫操作。未劃定技術(shù)界限的各層將按照將其作為單獨的 COM+ 組件實施來劃分。所有這些靈活性的代價是各層必須協(xié)同工作。跨環(huán)境調(diào)試是一項艱難的工作,必須非常細心,以確保適合一種環(huán)境的數(shù)據(jù)必須重新設(shè)置格式以適合其目標環(huán)境。(例如,字符串“a < b”存儲在數(shù)據(jù)庫中不會出現(xiàn)問題,但是如果沒有經(jīng)過轉(zhuǎn)義就放入 XML 文件中,將導(dǎo)致括號不匹配,從而損壞分析程序。)

讀取方物理體系結(jié)構(gòu)


Duwamish Online 在整個應(yīng)用中使用單一的物理結(jié)構(gòu)。與此相反,基于 SQL Server XML 的版本使用兩個互補的物理體系結(jié)構(gòu):一個用于讀取,另一個用于寫入。在我們的例子中,第二種比較合適,因為兩種使用情況需要不同類型的處理。
注意:??? 請參閱 http://msdn.microsoft.com/voices/news/sqlxml.asp (英文)中的完整體系結(jié)構(gòu)圖。

圖 3:讀取方體系結(jié)構(gòu)
SQL Server XML 技術(shù)用于所有層(從數(shù)據(jù)庫到表示)以最大限度地提高性能。SQL Server XML ISAPI 應(yīng)用代替 Web 層上的 ASP。ISAPI 應(yīng)用和 SQLOLEDB 提供程序自動執(zhí)行數(shù)據(jù)訪問,從而減小代碼量,縮短開發(fā)時間。獲得此性能的代價是失去了可靠的 ASP 對象模型和靈活性。下面一節(jié) 寫入方物理體系結(jié)構(gòu) 中將說明失去的功能,以及如何在必要時將應(yīng)用代碼集成到體系結(jié)構(gòu)中,從而重新獲得這種靈活性。
現(xiàn)在,讓我們看一些更細致的體系結(jié)構(gòu)特性。表示方法由 XSL 樣式表單獨控制。因為數(shù)據(jù)庫返回的數(shù)據(jù)為 XML,所以這一特性很有用。但是,使用 XSL 的好處是不依賴于技術(shù)。換句話說,模板、ASP 頁和 COM+ 組件可以使用同一個樣式表。模板包含工作流層。(模板是 XML 說明文件,它生成數(shù)據(jù)驅(qū)動的動態(tài) Web 頁,允許通過 HTTP 快速訪問數(shù)據(jù)庫,同時提供一定級別的數(shù)據(jù)提取和數(shù)據(jù)安全性。)模板通常使用存儲過程進行數(shù)據(jù)訪問,盡管它們也可以使用 XML Data Reduced (XDR) 架構(gòu),這種架構(gòu)提供了一種直觀的語法將數(shù)據(jù)庫對象映射到 XML 元素,還提供了使用 XPath(XML 路徑語言)進行數(shù)據(jù)庫查詢的能力。有關(guān)模板、XDR 架構(gòu)和實施細節(jié)的詳細說明,請參閱我以前的文章 Duwamish Online SQL Server XML 分類瀏覽
這種體系結(jié)構(gòu)沒有單獨的業(yè)務(wù)邏輯層。這是因為我們的應(yīng)用中的只讀操作只有很少的業(yè)務(wù)邏輯量,可以輕松地集成到數(shù)據(jù)訪問例程中。在其他情況下,業(yè)務(wù)邏輯層可作為數(shù)據(jù)庫中的一組存儲過程高效實施。有關(guān)這方面的設(shè)想和方法,請參閱本文后面的 以數(shù)據(jù)庫為中心的體系結(jié)構(gòu) 一節(jié)。
經(jīng)過驗證,最大的變化發(fā)生在數(shù)據(jù)庫層。新增的一組功能允許存儲過程直接讀寫 XML。事實上,所有數(shù)據(jù)檢索都通過 XML 來完成。
寫入方物理體系結(jié)構(gòu)
SQL Server XML 模板經(jīng)過高度流程化,能盡可能高效地通過 HTTP 訪問數(shù)據(jù)庫。為此付出的代價是功能集受到限制。在模板中找不到所需功能的情況下,SQL Server 的專用 ISAPI 應(yīng)用被替換為 ASP、ASP 和 COM+ 的組合或自定義的 ISAPI 應(yīng)用。
本節(jié)中說明的體系結(jié)構(gòu)適用于您的頁面要執(zhí)行下列操作的情況:
  • 訪問多個服務(wù)器上的數(shù)據(jù)庫

  • 處理在設(shè)計時未知其格式的 HTTP 請求

  • 調(diào)用 COM/COM+ 對象

  • 使用 COM+ 事務(wù)

  • 連接至 Internet 上的任何應(yīng)用或 Web 服務(wù),例如付款提供程序


圖 4:寫入方體系結(jié)構(gòu)
Web 層上的代碼表示應(yīng)用功能的四個層——數(shù)據(jù)訪問、業(yè)務(wù)邏輯、工作流和表示。在開發(fā)應(yīng)用時,請確保此代碼與體系結(jié)構(gòu)保持一致。這可使代碼的可讀性更高,也更易于維護。如果決定單獨使用 ASP,腳本類的效率會更高。如果在業(yè)務(wù)邏輯層或工作流層有大量復(fù)雜的處理,對這些層使用 COM+ 組件可能速度更快。相反,對于處理量相對較小的情況,使用腳本可能速度更快。
這種新體系結(jié)構(gòu)更出色的原因是,所有層(從數(shù)據(jù)到表示)都使用 XML 來傳輸和存儲信息。數(shù)據(jù)庫中的存儲過程使用這些新功能來讀寫 XML。數(shù)據(jù)訪問層利用 ADO 2.6 流與數(shù)據(jù)庫進行高效、基于 XML 的通訊。
更新穎的方法是將某些中間層下移到數(shù)據(jù)庫中。

以數(shù)據(jù)庫為中心的體系結(jié)構(gòu)


Duwamish Online 體系結(jié)構(gòu)基于這樣一種設(shè)想:因為數(shù)據(jù)庫的可伸縮性最低,它應(yīng)該設(shè)計成執(zhí)行盡可能少的任務(wù)。分布式分區(qū)視圖等新功能允許在多個服務(wù)器之間分擔(dān)工作量,從而提高了數(shù)據(jù)庫的可伸縮性,使開發(fā)人員可以選擇將大部分工作放在何處。
如果選擇將“腳重”服務(wù)器群集(數(shù)據(jù)庫方面功能更強)與 SQL Server XML 體系結(jié)構(gòu)一起使用,則另一種方法是使用與 n -層組件的分層方式相似的方式來對數(shù)據(jù)庫中的存儲過程進行分層。要實現(xiàn)這一點,必須有好的編程方法,例如選擇適當?shù)臄?shù)據(jù)結(jié)構(gòu)和盡可能避免重復(fù)代碼。

圖 5:以數(shù)據(jù)庫為中心的體系結(jié)構(gòu)
這種體系結(jié)構(gòu)中的表示層還包含用于訪問數(shù)據(jù)庫中的存儲過程的代碼。此代碼可能與傳統(tǒng)數(shù)據(jù)訪問層中的代碼相同。但是,調(diào)用此代碼時數(shù)據(jù)訪問層可能會出錯,因為這些例程調(diào)用工作流層提供的接口。
在使用存儲過程進行開發(fā)工作時應(yīng)該小心避免出現(xiàn)缺陷。讓我們先來看一個設(shè)計,這個設(shè)計使用了幾個智能存儲過程,它們先執(zhí)行該層的公共任務(wù),然后再執(zhí)行在下一個層上繼續(xù)執(zhí)行其代碼路徑的邏輯切換。在工作流層中調(diào)用“智能過程”將對應(yīng)于若干個不同的操作之一。此過程如下所示:
      CREATE PROCEDURE /* 這是一個智能過程,執(zhí)行工作流操作 */DoWorkflow???/* Action 用于選擇該調(diào)用的多個操作之一 */???@Action nvarchar(255),/* SomeOtherParameters 是一個占位符,用于工作流所需的其他輸入 */???@SomeOtherParameters ntextAS/* 執(zhí)行工作流的公共操作 */Execute SomeCommonWorkflowOperationsIf @Action = N'Action1'BEGIN??????/* 執(zhí)行 Action 1 */???Execute BusinessLogicAction1ENDElse If @Action = N'Action2'BEGIN??????/* 執(zhí)行 Action 2 */???Execute BusinessLogicAction2ENDGO
    

第一次調(diào)用此過程時,SQL Server 優(yōu)化執(zhí)行恰好第一次運行的任何代碼路徑。這使其余代碼路徑的運行效率降低,盡管它們的成本可能更高或者使用的頻率更高。
為確保優(yōu)化執(zhí)行所有代碼路徑,可為每個操作創(chuàng)建一個單獨的過程,盡可能避免切換邏輯。為防止代碼重復(fù),所有層中多個操作共享的函數(shù)應(yīng)該放在單獨的過程中。當該設(shè)計產(chǎn)生大量過程時,優(yōu)化可以大大提高應(yīng)用的效率。

集成


Web 開發(fā)中最值得稱道的一點是用戶看不到實施過程。因此,本文中介紹的體系結(jié)構(gòu)可以輕松地合并到單個應(yīng)用中,而無需用戶參與。下面是一些準則,可以幫助您更輕松地集成應(yīng)用的不同部分:
  • 在整個應(yīng)用中使用 XML 。XML 可以用于任何技術(shù)中,可以使用 XSL 樣式表輕松地進行轉(zhuǎn)換,還可以毫無困難地存儲在任何地方。SQL Server XML 使得在您的應(yīng)用中使用 XML 比以前更容易。

  • 盡可能分解代碼
    • 使用 XSL 樣式表來轉(zhuǎn)換 XML。可以在模板、COM+ 組件和一段腳本之間方便地共享同一個 XSL 樣式表。

    • 當腳本執(zhí)行多個函數(shù)時,使用腳本類分解代碼。

    • 在數(shù)據(jù)庫方面,始終使用存儲過程進行數(shù)據(jù)訪問。它們不僅易于維護,而且比未編譯的 SQL 查詢執(zhí)行速度快得多。

影響


本節(jié)說明使用新的體系結(jié)構(gòu)對于您的應(yīng)用在“功能”和性能方面有何影響。

可編程性


可編程性是指容易編寫應(yīng)用代碼。通常反映在開發(fā)應(yīng)用的時間而不是功能方面。以 Duwamish Online 應(yīng)用為例。該應(yīng)用的五個層是通過一組完全不同的技術(shù)來實現(xiàn)的。表示層使用了 C++(用于緩存組件)和 Web 技術(shù)(例如 XML、XSL 和 ASP)。工作流層、業(yè)務(wù)邏輯層和數(shù)據(jù)訪問層是 Visual Basic COM+ 組件,而數(shù)據(jù)庫中的存儲過程是用 T-SQL 編寫的。使用這么多技術(shù)的優(yōu)點是,開發(fā)人員可以針對每種類型的操作選擇最佳技術(shù)。但是,要使所有組件高效地緊密協(xié)作無疑是一個難點。當使用多種不同的工具和不同的編程語言開發(fā)組件時,跨組件跟蹤和調(diào)試始終非常困難。
在整個應(yīng)用中使用 SQL Server XML 將有助于最大程度地降低不同技術(shù)的工作量。(XSL 是一個例外:它不屬于 SQL Server XML,但卻緊密集成在 SQL Server XML 模板中)。各層之間一起工作,但產(chǎn)生的沖突最少。在各層之間進行調(diào)試非常簡便,因為所有的中間數(shù)據(jù)都是 XML,無需任何額外操作。但是,可編程性的最大優(yōu)點可能是大大減少了代碼量:基于 SQL Server XML 版本的 Duwamish Books, Phase 4 可完成基于 COM+ 的同類產(chǎn)品相同的工作,但前者的代碼量只有后者的十分之一。通過 SQL Server XML 的內(nèi)置功能使數(shù)據(jù)訪問、XML 轉(zhuǎn)換、XSL 轉(zhuǎn)換和數(shù)據(jù)緩存變得更加簡便。
遺憾的是,不能再使用 XSL 的高效調(diào)試工具,而用于其他新技術(shù)的調(diào)試工具相對來講還不成熟(尤其是與 Microsoft Visual Studio&reg; 提供的跨語言調(diào)試能力相比)。

可管理性


SQL Server XML 應(yīng)用易于部署。對于運行在 Web 層的代碼,只需簡單地將文件復(fù)制到它們的目標目錄,然后運行一次配置工具以建立相應(yīng)的虛擬目錄。更新過程只是簡單地替換過期的文件。可以使用 SQL Server Enterprise Manager 輕松地管理數(shù)據(jù)庫對象。

性能


有關(guān)詳細信息,請參閱 Duwamish Online SQL Server XML 分類瀏覽 文章中有關(guān)性能的一節(jié)。

使用建議


有關(guān)新技術(shù)最重要的問題可能是使用的時機。盡管 SQL Server XML 不是所有 Internet 問題的最終解決方案,但是在某些情況下,其優(yōu)勢是顯而易見的,這包括代碼量大大減少、開發(fā)周期明顯縮短、性能更高和維護更方便。新技術(shù)的兩個主要組件(數(shù)據(jù)庫和 ISAPI 應(yīng)用)的使用情況不同,如下所述。
SQL Server XML 的數(shù)據(jù)庫服務(wù)器組件幾乎用于所有應(yīng)用。即使要將現(xiàn)有的應(yīng)用從使用數(shù)據(jù)庫轉(zhuǎn)換為使用 XML 也是值得的。一些顯著的優(yōu)點如下:
  • 易于本地化(使用 XSL)

  • 不依賴于平臺和技術(shù)

  • 易于緩存 XML 數(shù)據(jù)

  • 能夠使用脫機/斷開連接的應(yīng)用

  • 易于合并或創(chuàng)建 Web 服務(wù)

  • 能夠與其他應(yīng)用協(xié)同工作

新技術(shù)的 Web 界面組件是專用的。它們可提供對數(shù)據(jù)庫的快速、高效訪問,并提供使用 XSL 樣式表輕松創(chuàng)建數(shù)據(jù)驅(qū)動頁的能力。這些優(yōu)點非常有用。在我們的測試中,Duwamish Online SQL Server XML 分類瀏覽(無緩存)比 Duwamish Online(有緩存)的性能高 15%。使用 SQL Server 2000 技術(shù)預(yù)覽版進行的早期測試顯示 SQL Server XML ISAPI 緩存可使性能有數(shù)量級的提高。但是,如果應(yīng)用包含下列任何一種情況,則可以考慮使用基于 ASP 的中間層:
  • 與數(shù)據(jù)提取無關(guān)的擴展業(yè)務(wù)邏輯例程 。有兩個選項決定這些例程的位置:數(shù)據(jù)庫的存儲過程或 XSL 中的腳本。腳本的效率不夠高,而結(jié)構(gòu)化查詢語言 (SQL) 可能不是最佳語言。

  • 擴展字符串,尤其是結(jié)果集合的處理 。此規(guī)則的例外情況是存儲在 XML 或 HTML 數(shù)據(jù)庫中的轉(zhuǎn)義字符串。SQL Server 2000 的一個新功能將自動完成這項工作。有關(guān)詳細信息,請參閱 SQL Server Books Online 文檔(XML 和 Internet 支持 \ 檢索和編寫 XML 數(shù)據(jù) \ 使用 FOR XML 檢索 XML 文檔 \ 使用 EXPLICIT 模式\ F. 指定 cdata 指令)。

  • 大量 HTML 輸入 。模板的局限性使其無法通過在設(shè)計時已知其格式的 HTTP 請求檢索所有信息,此工作可以使用 ASP 頁完成。

注意!SQL Server 2000 還允許通過 URL 直接訪問數(shù)據(jù)庫。在其他情況下,允許使用動態(tài)模板來幫助解決體系結(jié)構(gòu)方面的很多問題。但是,如果啟用此功能,將允許嘗試刪除數(shù)據(jù)庫的查詢,因此,如果選擇使用此功能,請確保數(shù)據(jù)庫的安全性無懈可擊。

總結(jié)


SQL Server XML 提供了一種新的觀念,通過允許從數(shù)據(jù)庫直接檢索 XML,使您的應(yīng)用可以端對端使用 XML。新的 ISAPI 應(yīng)用提供了令人滿意的性能,但不一定適用于應(yīng)用中的所有使用情況。

簽名:


<?xml version="1.0"?>
<personInfo>
<name>Zee</name>
<gender>male</gender>
<email>Zee@giveme.net</email>
</personInfo>



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=3461


SQL Server XML 和 Web 應(yīng)用體系結(jié)構(gòu)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 国产在线五月综合婷婷 | 91亚洲国产成人久久精品网站 | 欧美在线精品一区二区三区 | 毛片福利视频 | 热久久这里是精品6免费观看 | 99资源| 久久这里 | 免费看搡女人的视频 | 国产在热线精品视频国产一二 | 一级特黄aa大片欧美小说 | 国产精品自线在线播放 | 久久精品国产四虎 | 99精品视频在线观看免费专区 | 99热久久这里只精品国产9 | 99r精品 | 日本一级爽爽爽爽 | 中国性猛交xxxx乱大交 | 国产拍在线| 青青青爽在线视频观看大全 | 国产爆操 | 免费一级在线 | 日本一级在线观看 | 国产午夜亚洲精品久久999 | 三上悠亚在线一区 | 久久久久一级片 | 午夜精品久久久久久久四虎 | 亚洲国产系列一区二区三区 | 精品福利影院 | 亚洲欧美日韩国产精品第不页 | 欧美成人性色生活片天天看 | 99亚洲精品 | 国产精品线在线精品 | 欧美在线一级毛片观看 | 亚洲精品天堂自在久久77 | 免费国产黄线在线观看视频 | 青青青国产高清免费视频 | 久久在线看 | 免费网站啪啪大全 | 国产高清一区二区三区四区 | 免费观看国产精品 | 亚洲狠狠操 |