<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      WizardWu 編程網(wǎng)

      一位臺灣的工程師,接觸 .NET 逾十年,近年研究 SQL Server、Performance Tuning、手機應(yīng)用

      博客園 首頁 新隨筆 聯(lián)系 訂閱 管理

      有一只企鵝首先發(fā)現(xiàn)地球暖化、冰山在融化,回來告訴其它企鵝,卻沒有任一只企鵝愿意相信;因為企鵝們覺得現(xiàn)在生活過得很好,都不想費心思考如何改變、改變何時會來臨,因此仍每天做例行性的工作,不愿去研究別人的觀點。「有時人們會抗拒改變,其實只是不想改變;但是愿意接收新觀念的技術(shù)人員,通常會活得比較久」。本帖只提供 MVC Pattern 的觀念和架構(gòu)介紹,僅供未接觸過 MVC Framework 的 .NET 技術(shù)人員作為參考之用,以評估是否要深入學(xué)習(xí)或在將來的項目導(dǎo)入。


      常在網(wǎng)絡(luò)上,看到有網(wǎng)友誤認(rèn) MVC 和 3-Tier (三層架構(gòu)) 是類似的東西:
      http://topic.csdn.net/u/20090405/21/97a137ff-2105-4117-a0c3-39d7f0f1c952.html
      http://topic.csdn.net/u/20090415/13/9ebe5011-c56b-47e6-9f89-40b70896a041.html

      但二者本質(zhì)上是完全不同的概念,如下:

      3-Tier 或 N-Tier 的架構(gòu),中間層可能包含 EJB, Enterprise JavaBeans (J2EE),或 .NET Enterprise Services、Remoting、WCF:
      Client (WebPage) -- [ BLL (業(yè)務(wù)邏輯層) -- DAL (數(shù)據(jù)訪問層) ] (Web Server) -- 數(shù)據(jù)來源或數(shù)據(jù)庫
      Client (WebPage) -- [ BLL (業(yè)務(wù)邏輯層) -- DAL (數(shù)據(jù)訪問層) ] (Web Server + Application Server) -- 數(shù)據(jù)來源或數(shù)據(jù)庫

      MVC 則為:
      Model (模型) - 包含 BLL、DAL。View 和 Controller 都依賴于 Model,但是 Model 既不依賴于 View,也不依賴于 Controller,這是分離的主要優(yōu)點之一
      View (視圖) - 僅負(fù)責(zé)生成輸出 (UI)。以 ASP.NET MVC 來說,不再有 Code-behind 這種 .aspx.cs 文件,亦無 runat="server" 標(biāo)記、form 標(biāo)記、控件聲明、事件處理
      Controller (控制器) - 控制整個系統(tǒng)的 workflow、運作邏輯、錯誤處理、身分驗證和授權(quán)、用戶輸入數(shù)據(jù)驗證、…等等


      總的來講,微軟的 ASP.NET MVC Framework 是為了讓 ASP.NET 更適合中、大型的項目,能統(tǒng)一規(guī)劃、控管整個網(wǎng)站系統(tǒng)的流程 (用 Controller 處理),并更有效地分工開發(fā)、日后維護 (避免許多 WebForm 里重復(fù)出現(xiàn)相同功能的自定義函數(shù))、管控某個功能在修改后對系統(tǒng)整體的影響,并將不同的功能作更明確地切割,讓不同專長的技術(shù)人員各司其職,也順便提高了代碼的可讀性,便于測試 (TDD, test -driven development) (減少直接綁到用戶界面中的代碼量) [4],并達(dá)到「松散耦合 (loosely coupled)」,讓組件易于更換和重復(fù)使用。但也因此,ASP.NET 程序員必須先改變過去,把很多業(yè)務(wù)邏輯、輸入驗證、頁面切換…等雜七雜八的功能,全部寫在 Code-Behind (aspx.cs) 里的舊習(xí)慣。

      ASP.NET MVC provides a framework that enables you to easily implement the model-view-controller (MVC) pattern for Web applications. This pattern lets you separate applications into loosely coupled, pluggable components for application design, processing logic, and display. ASP.NET MVC also greatly facilitates test -driven development (TDD).


      事實上,MVC Pattern 的發(fā)明已有二十多年,其與再衍生的觀念和框架 (MVP),在 Java / J2EE / Struts 的一些 Framework 早已行之多年。MVC 模式的結(jié)構(gòu)如下 [4]:

      View (JSP) 只純粹用來生成輸出,不涉及數(shù)據(jù)來源的訪問、事件處理、各種邏輯處理和運算工作。因此更適合大型項目的分工,把這層完全交由美工人員制作 (而非程序員兼美工和排版)。此層如同 ASP.NET 中的 .aspx 前臺頁面,亦即 UI (User Interface)。

      Model (JavaBean、EJB 組件) 用來存放獨立且可重復(fù)使用的組件,包括:數(shù)據(jù)來源 (數(shù)據(jù)庫) 的訪問、商業(yè)邏輯的代碼,并應(yīng)與 View 作完整地切割,以便保留系統(tǒng)日后擴充或改寫時的彈性。此層如同 ASP.NET 中的 App_Code 文件夾中的自定義類、DataSet (.xsd)、TableAdapter、…等等。

      Controller (Java Servlet) 用來控制整個網(wǎng)站處理的「流程」,負(fù)責(zé)協(xié)調(diào) View 和 Model 之間的流程傳遞和轉(zhuǎn)向,也要管理和指派由哪個文件去接收用戶所提出的「請求 (request)」,亦即由它決定要展現(xiàn)哪一個 aspx 文件給用戶。當(dāng)用戶從瀏覽器送出 request 時 (例若用鼠標(biāo)單擊頁面中的控件,或輸入數(shù)據(jù)后單擊 Button 的提交、輸入 URL 網(wǎng)址、點選 hyperlink…等等),Controller 里定義的某些 method 會判斷要交由 Model 中的哪些運算邏輯去處理,然后再判斷要將處理結(jié)果傳回哪一個 View 去顯示出來。此外,Controller 還可包含錯誤處理、授權(quán)、輸入驗證…等功能的代碼,集中統(tǒng)一處理,以避免傳統(tǒng) WebForm 里大量重復(fù)的代碼。但說穿了,Controller 事實上只是一個自定義類,搭配一些 Attribute (特性)。而 Controller 也是目前 ASP.NET 所欠缺的部分。

       


      圖 1 MVC (Model 2) 架構(gòu)的運作方式,可與下圖 2 的 ASP.NET MVC 項目相互對應(yīng)


      事實上,在 Java / JSP / JavaEE 常引用的網(wǎng)站開發(fā)架構(gòu)中,還可分為 Model 1 與 Model 2。而 Model 1 還可分為二至三種,如下:

      ● 第一種是將 HTML 和 .NET (Java) code 混在一起,俗稱意大利面的寫法,如:古早的 ASP。這種 Inline code 最為人垢病的問題,是代碼的可讀性低、難以維護。

      ● 第二種是由與 .aspx 一對一搭配的 Code-Behind code (.aspx.cs) 直接訪問數(shù)據(jù)庫,亦即二層式的架構(gòu)。但這樣的缺點是代碼難以重復(fù)使用,而且因為邏輯已寫死在固定的頁面里,會造成系統(tǒng)日后擴充、維護的困難。

      ● 第三種是經(jīng)由自定義類庫、App_Code 文件夾中的自定義類或組件,去訪問數(shù)據(jù)庫,或做商業(yè)邏輯的運算 (JSP + JavaBean)。但此種做法仍缺乏「流程 (flow)」的統(tǒng)一控管,導(dǎo)致每一支 ASPX (JSP) 都要驗證用戶身份、驗證 request 的參數(shù)、處理 Session、做例外處理,甚至包括 View 里的寫碼原則、語系設(shè)定,都得在每一支 ASPX 對應(yīng)的 Code-Behind 去處理,也因此不適合大型系統(tǒng)的開發(fā)、擴充和維護。這種架構(gòu)雖然也能做到虛擬式的三層式或多層式架構(gòu),但也是目前 ASP.NET 的極限。


      至于 Model 2,即俗稱的 MVC Pattern,則加入了 Controller 的部分,將流程及事件交由中心控管,除了可讓整個系統(tǒng)的運作流程更為明確,有效切開各層的工作,亦可避免讓 View 里的 Code-Behind 去處理 Model 中的數(shù)據(jù)庫訪問、商業(yè)邏輯運算,也不必再每個頁面重復(fù)撰寫「流程傳遞和轉(zhuǎn)向」的代碼,而改由中央的 Controller 程序代碼 (action method) 來統(tǒng)一控管。

      但 MVC 架構(gòu)也有其缺點,例如開發(fā)人員需要另外花時間轉(zhuǎn)換觀念及學(xué)習(xí)某一個 Framework,尤其是 .NET 的開發(fā)人員,因為過去較沒有 Controller 統(tǒng)一協(xié)調(diào)流程的觀念,勢必得重新習(xí)慣,將很多原本寫死在各個頁面中的代碼,統(tǒng)一改寫在 Controller 里面。而且系統(tǒng)在設(shè)計階段時,即要先協(xié)調(diào)好各個類及對象,彼此間數(shù)據(jù)交換的格式及做法,因此勢必得拉長系統(tǒng)事先的分析、規(guī)劃時程。但若能有像 Java Struts 或 ASP.NET MVC Framework 這樣現(xiàn)成的框架可套用,則日后開發(fā)大型系統(tǒng)時,即可望達(dá)到事半功倍的效果。


      要開發(fā) ASP.NET MVC,必須要有 Visual Studio 2008 + SP1,并下載 MVC 套件 (經(jīng)過至少兩年的研發(fā),微軟終于在 2009 年 4 月發(fā)布了 1.0 正式版),下載網(wǎng)址如下:
      ASP.NET MVC 1.0 download (2009/04/09):
      http://www.microsoft.com/downloads/details.aspx?FamilyID=53289097-73ce-43bf-b6a6-35e00103cb4b&displaylang=en

      安裝完成后,在新建項目時,會多出一個「ASP.NET MVC Web Application」的選項。創(chuàng)建一個默認(rèn)的 MVC 項目后,其在 VS 解決方案的結(jié)構(gòu)如下圖所示:


      圖 2 View 中的 ASPX、ASCX、MasterPage 純粹負(fù)責(zé)顯示用,默認(rèn)沒有配置 Code-Behind 文件 (aspx.cs)


      如上圖 2,ASP.NET MVC 項目,會自動產(chǎn)生存儲 MVC 文件的三個文件夾、控制流程的兩個 Controller 類、多個沒有 Code-Behind 的 View 頁面,和定義 Routing rules 的 Global.asax.cs。

      事實上版工我在一年前試玩 ASP.NET MVC Beta 版時,當(dāng)時的 View 默認(rèn)仍配有 Code-Behind 文件,但里面空無一物,只有一行注釋:
      !-- Please do not delete this file. It is used to ensure that ASP.NET MVC is activated by IIS when a user makes a "/" request to the server. --

      在前陣子發(fā)布的正式版里,View 默認(rèn)已不配置 Code-Behind 文件。此外,ASP.NET MVC 里的 View,為了讓項目開發(fā)更明確地切割,已不再有頁面初始化和加載方法,也沒有事件處理程序,除了基類聲明以外沒有任何內(nèi)容,基類聲明為 System.Web.Mvc.ViewPage,而不再是過去 WebForm 的 System.Web.UI.Page。


      新創(chuàng)的 ASP.NET MVC 項目,直接按 F5 即可執(zhí)行,如下圖 3 所示。但由于 MVC 的 View 會在顯示前先要求 Controller 運行 (參考圖 1),因此若您嘗試將 View 里的某個 .aspx 設(shè)為「起始頁」后,按 F5 執(zhí)行時,反而會發(fā)生「HTTP 404. The resource cannot be found.」的錯誤,亦即若想直接導(dǎo)航至該頁面將不起作用。


      圖 3 ASP.NET MVC 項目的首頁


      您會發(fā)現(xiàn)瀏覽器里的 URL 會像下面這樣,網(wǎng)址不是具體的 .aspx 擴展名:

      http://localhost:端口號/Home/index
      http://localhost:端口號

      事實上該頁的內(nèi)容,是去捉 Views/Home 文件夾底下,的 Index.aspx 的內(nèi)容來呈現(xiàn)。其由 Global.asax.cs 配置,并用了「URL 重寫 (Url Routing)」,讓用戶可以按你自己定義的的規(guī)則來訪問網(wǎng)站 [14]。

      在圖 3 首頁的右側(cè),會有兩個 hyperlink,可分別導(dǎo)向「LogOn.aspx」、「About.aspx」頁面;但 hyperlink 要導(dǎo)向哪一個頁面,不是寫死在 View 的頁面中 (已無 Code-Behind),而是統(tǒng)一由 Global.asax.cs 去定義 Routing rules,去解析當(dāng)瀏覽器收到 URL、表單或任何 request 時,應(yīng)該要扔給哪一個 Controller 自定義類去處理;再由該個被指定的 Controller (如上圖 2 里默認(rèn)自動產(chǎn)生的 HomeController.cs),里面所定義的一或多個 System.Web.Mvc.ActionResult 類,以及 View 方法 (術(shù)語叫 action method),去設(shè)定要把 UI render 回哪一個 View (頁面) 去,也就是本文一開始所提到的 (參考本帖圖 1),Model 2 架構(gòu)是由 Controller 文件,去統(tǒng)一控管整個 ASP.NET 系統(tǒng)的流程、頁面導(dǎo)向,而不是寫死在各個 aspx.cs 文件里。


      以下為 Global.asax.cs 的一部分代碼,網(wǎng)友們可搭配參考上圖 2 里 Controller、View 的結(jié)構(gòu)去閱讀:

      using System.Web.Mvc;
      using System.Web.Routing;

      public class MvcApplication : System.Web.HttpApplication
      {
          
      public static void RegisterRoutes(RouteCollection routes)
          {
              routes.IgnoreRoute(
      "{resource}.axd/{*pathInfo}");

              
      // C# 3.0 的「匿名類型 (Anonymous Type)」語法
              routes.MapRoute(
                  
      "Default",                      // Route name
                  "{controller}/{action}/{id}",   // URL with parameters (控制器名 / 操作名稱 / ID 參數(shù))
                  new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
              );
          }
      }

       

      MapRoute 方法里的三個參數(shù),分別代表:routes、route name、URL。其中第一個參數(shù) "Default",代表了項目中的 Default.aspx (不是位于 View 文件夾里)。這個 URL Routing 是為了解決用戶直接訪問域名時,會出現(xiàn)找不到文件的情形,所以要采用這個方法,將主頁改成 Routing 到 Home/Index 上。因此當(dāng)您在瀏覽器的地址欄輸入:

      http://localhost:端口號/Default.aspx

      http://localhost:端口號

      亦會導(dǎo)至圖 2 中的 Views/Home/Index.aspx。


      System.Web.Mvc Namespace (MSDN Library, 暫無中文版):
      http://msdn.microsoft.com/en-us/library/system.web.mvc.aspx

      RouteCollectionExtensions.MapRoute Method:
      http://msdn.microsoft.com/en-us/library/dd470521.aspx

      ASP.NET MVC Framework (Part 1) (ScottGu 于 2007 年 11 月發(fā)表的 blog,圖中為 ASP.NET MVC 在 Beta 版時的畫面):
      http://weblogs.asp.net/scottgu/archive/2007/11/13/asp-net-mvc-framework-part-1.aspx


      在圖 3 的首頁里,當(dāng)鼠標(biāo)移到右側(cè)的 hyperlink 時,實際連結(jié)的頁面名稱 (某個 .aspx) 并不會直接顯示在瀏覽器的地址欄、瀏覽器下方的信息欄里,因為 request「轉(zhuǎn)向」的運作皆統(tǒng)一由 Controller 處理,亦即由圖 2 中 HomeController.cs 里,配置的 System.Web.Mvc.ActionResult 類的 actionName 去指定,因此瀏覽器的網(wǎng)址仍會維持 Site.Master (MasterPage) 里的 Html.ActionLink 綁定,所配置的 actionName (即下方兩行代碼的第二個參數(shù) "Index"、"About"),而不會如過去 ASP.NET 1.x / 2.0 般,直接在地址欄里,顯示某一個 .aspx 的頁面名稱。

      以下為 Site.master 的一部分代碼:

      <%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage" %>

      <ul id="menu"> 
          
      <li><%= Html.ActionLink("Home""Index""Home")%></li>
          
      <li><%= Html.ActionLink("About""About""Home")%></li>
      </ul>

       

      Controller 除了用來控管整個網(wǎng)站的流程轉(zhuǎn)向外,事實上還能避免大量的代碼重復(fù),亦即統(tǒng)一處理一些系統(tǒng)可「共享」的功能,例如:驗證用戶身份、輸入驗證 (validate)、Session 管理,或是像購物網(wǎng)站中,當(dāng)購物車?yán)镂锲返奶砑印⑿薷摹⒁瞥龝r,任何用戶皆相同的「共通邏輯」處理;以及要結(jié)帳時,去做購物數(shù)量、單價相乘的計算動作,或?qū)⒛硞€存儲購物明細(xì)的 Collection 數(shù)據(jù)結(jié)構(gòu)對象加入 Session,最后再轉(zhuǎn)向某一個頁面 (View)。

       

      總結(jié):

      本帖僅是給 .NET 技術(shù)人員,作為初步了解 MVC Pattern,以及 ASP.NET MVC Framework 的入門文章。若有興趣深入研究的網(wǎng)友,可參考本帖最下方的「相關(guān)文件」,另博客園及網(wǎng)絡(luò)上已有許多相關(guān)的帖子。至于通用的 MVC 觀念,亦可參考坊間 JSP / Struts / J2EE 的網(wǎng)絡(luò)論壇、相關(guān)書籍,或 Design Patterns (設(shè)計模式) 中的「復(fù)合模式 (Compound Pattern)」[15]。

      如同 MSDN Magazine 中提到的 [7],ASP.NET MVC 不是用來取代傳統(tǒng) ASP.NET WebForm 的,兩者有各自的優(yōu)點和缺點,而將來的 ASP.NET MVC 還可能在 UI、控件拖曳、Routing 上持續(xù)改進。不過身為一個技術(shù)人員,最好能早點厘清兩者的特性與優(yōu)缺點 [4] [6],以評估是否要深入學(xué)習(xí),或在將來的項目導(dǎo)入;并思考為什么微軟要推出這個框架,且還花了至少兩年的時間很慎重地去研發(fā)。

       

      --------------------------------------------------------

      相關(guān)文件:

      [1] MVC : The Official Microsoft ASP.NET Site:
      http://www.asp.net/mvc/
      http://www.asp.net/learn/mvc/
      http://www.asp.net/learn/mvc/tutorial-01-cs.aspx
      http://www.asp.net/learn/mvc/tutorial-02-cs.aspx
      http://www.asp.net/learn/mvc/tutorial-03-cs.aspx

      http://www.asp.net/learn/mvc/tutorial-38-cs.aspx
      http://www.asp.net/learn/mvc-videos/
      http://forums.asp.net/1146.aspx

      [2] ASP.NET - Home:
      http://aspnet.codeplex.com/Wiki/View.aspx?title=MVC

      [3] ScottGu's Blog (美國微軟開發(fā)部門總經(jīng)理):
      http://weblogs.asp.net/scottgu/archive/tags/MVC/default.aspx

      [4] Model-View-Controller (MSDN):
      http://msdn.microsoft.com/en-us/library/ms978748.aspx (英文)
      http://msdn.microsoft.com/zh-cn/library/ms978748.aspx (中文)

      [5] Page Controller (MSDN):
      http://msdn.microsoft.com/en-us/library/ms978764.aspx
      http://msdn.microsoft.com/zh-cn/library/ms978764.aspx

      [6] Implementing Model-View-Controller in ASP.NET (MSDN):
      http://msdn.microsoft.com/en-us/library/ms998540.aspx
      http://msdn.microsoft.com/zh-cn/library/ms998540.aspx

      [7] Building Web Apps without Web Forms (MSDN Magazine):
      http://msdn.microsoft.com/en-us/magazine/cc337884.aspx
      http://msdn.microsoft.com/zh-cn/magazine/cc337884.aspx

      [8] 從零開始學(xué)習(xí) ASP.NET MVC 1.0 (一) 開天辟地入門篇 (子秋的博客):
      http://www.rzrgm.cn/zhangziqiu/archive/2009/02/27/ASPNET-MVC-1.html

      [9] ASP.NET MVC Framework 與 WCSF 中 MVP 模式之小小比較 (Terry Lee):
      http://www.rzrgm.cn/Terrylee/archive/2008/01/01/aspnet-mvc-framework-vs-wcsf-mvp.html
      ASP.NET MVC Framework 體驗(1):從一個簡單實例開始 (Terrylee):
      http://www.rzrgm.cn/Terrylee/archive/2007/12/11/aspnet-mvc-framework-overview.html

      [10] 博客園 ASP.NET MVC 技術(shù)專題:
      http://kb.cnblogs.com/zt/mvc/

      [11] 一步一步學(xué)習(xí) ASP.NET MVC 1.0 創(chuàng)建 NerdDinner 范例程序:
      http://blog.entlib.com/entlibforum/archive/2009/03/28/asp.net-mvc-1.0nerddinner-part-1.aspx

      [12] ASP.NET MVC 開發(fā)心得分享 (1):開發(fā)流程篇 (繁體中文):
      http://blog.miniasp.com/post/2009/01/ASPNET-MVC-Developer-Note-Part-1.aspx
      ASP.NET MVC 開發(fā)心得分享 (2):與原始碼共舞 (繁體中文):
      http://blog.miniasp.com/post/2009/02/ASPNET-MVC-Developer-Note-Part-2.aspx
      研究 Oxite 這套 CMS 系統(tǒng)吧!(繁體中文):
      http://blog.miniasp.com/post/2008/12/Microsoft-Open-Source-content-management-system-Oxite-using-ASPNET-MVC.aspx

      [13] .NET Framework Class Library:
      System.Web.Mvc Namespace (暫無中文版):
      http://msdn.microsoft.com/en-us/library/system.web.mvc.aspx

      [14] URL Routing:
      http://blog.csdn.net/chsword/archive/2008/03/11/2165866.aspx
      http://www.rzrgm.cn/terrylee/archive/2007/12/16/aspnet-mvc-framework-url-routing.html
      http://www.rzrgm.cn/qleelulu/archive/2008/03/17/1109893.html

      --------------------------------------------------------

      相關(guān)書籍:

      [15] Head First 設(shè)計模式, Chapter 12:
      http://www.dearbook.com.cn/book/213719
      http://www.china-pub.com/36020

      [16] Free ASP.NET MVC eBook Tutorial:
      http://weblogs.asp.net/scottgu/archive/2009/03/10/free-asp-net-mvc-ebook-tutorial.aspx

      [17] ASP.NET MVC in Action:
      http://www.manning.com/palermo/

      [18] Pro ASP.NET MVC Framework:
      http://www.apress.com/book/view/1430210079

      [19] Professional ASP.NET MVC 1.0:
      http://www.wrox.com/WileyCDA/WroxTitle/Professional-ASP-NET-MVC-1-0.productCd-0470384611.html


      --------------------------------------------------------

       

      posted on 2009-04-18 18:34  WizardWu  閱讀(22691)  評論(31)    收藏  舉報
      主站蜘蛛池模板: 丰满人妻被黑人猛烈进入| 国产高清一区二区不卡| 亚洲婷婷综合色高清在线| 一区二区中文字幕久久| 伊人中文在线最新版天堂| 日韩精品国产精品十八禁| 亚洲精品乱码久久久久久中文字幕| 99久久国产成人免费网站| 久久综合伊人| 午夜高清福利在线观看| 国产色精品久久人妻| 国产热A欧美热A在线视频| 色综合久久中文字幕综合网| 国产精品自拍一二三四区| 亚洲国产精品综合久久20| 国产麻豆精品一区一区三区| 亚洲人成网线在线播放VA| 亚洲AV永久中文无码精品综合| 久久国产乱子伦免费精品无码 | 女同性恋一区二区三区视频| 日韩精品一区二区三区无| 久久久亚洲欧洲日产国码αv | 亚欧成人精品一区二区乱| 精品无码国产不卡在线观看| 日韩精品久久久肉伦网站| 精品国产午夜福利理论片| 午夜精品久久久久久久久| 中文国产不卡一区二区| 亚在线观看免费视频入口| 好爽好紧好大的免费视频| 偷拍精品一区二区三区| 国产福利酱国产一区二区| 成人无码午夜在线观看| 郁南县| 91偷自国产一区二区三区| aaa少妇高潮大片免费看| 一边添奶一边添p好爽视频| 丰满少妇被猛烈进出69影院| 69天堂人成无码免费视频| 亚洲精品岛国片在线观看| 97在线碰|