日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

ZKWeb网站框架的动态编译的实现原理

發(fā)布時間:2023/12/4 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ZKWeb网站框架的动态编译的实现原理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ZKWeb網(wǎng)站框架是一個自主開發(fā)的網(wǎng)頁框架,實(shí)現(xiàn)了動態(tài)插件和自動編譯功能。
ZKWeb把一個文件夾當(dāng)成是一個插件,無需使用csproj或xproj等形式的項(xiàng)目文件管理,并且支持修改插件代碼后自動重新編譯加載。

下面將說明ZKWeb如何實(shí)現(xiàn)這個功能,您也可以參考下面的代碼和流程在自己的項(xiàng)目中實(shí)現(xiàn)。
ZKWeb的開源協(xié)議是MIT,有需要的代碼可以直接搬,不需要擔(dān)心協(xié)議問題。

實(shí)現(xiàn)動態(tài)編譯依賴的主要技術(shù)

編譯:?Roslyn Compiler
Roslyn是微軟提供的開源的c# 6.0編譯工具,可以通過Roslyn來支持自宿主編譯功能。
要使用Roslyn可以安裝nuget包Microsoft.CodeAnalysis.CSharp。
微軟還提供了更簡單的Microsoft.CodeAnalysis.CSharp.Scripting包,這個包只需簡單幾行就能實(shí)現(xiàn)c#的動態(tài)腳本。

加載dll:?System.Runtime.Loader
在.Net Framework中動態(tài)加載一個dll程序集可以使用Assembly.LoadFile,但是在.Net Core中這個函數(shù)被移除了。
微軟為.Net Core提供了一套全新的程序集管理機(jī)制,要求使用AssemblyLoadContext來加載程序集。
遺憾的是我還沒有找到微軟官方關(guān)于這方面的說明。

生成pdb:?Microsoft.DiaSymReader.Native,?Microsoft.DiaSymReader.PortablePdb
為了支持調(diào)試編譯出來的程序集,還需要生成pdb調(diào)試文件。
在.Net Core中,Roslyn并不包含生成pdb的功能,還需要安裝Microsoft.DiaSymReader.Native和Microsoft.DiaSymReader.PortablePdb才能支持生成pdb文件。
安裝了這個包以后Roslyn會自動識別并使用。

實(shí)現(xiàn)動態(tài)編譯插件系統(tǒng)的流程

在ZKWeb框架中,插件是一個文件夾,網(wǎng)站的配置文件中的插件列表就是文件夾的列表。
在網(wǎng)站啟動時,會查找每個文件夾下的*.cs文件對比文件列表和修改時間是否與上次編譯的不同,如果不同則重新編譯該文件夾下的代碼。
網(wǎng)站啟動后,會監(jiān)視*.cs和*.dll文件是否有變化,如果有變化則重新啟動網(wǎng)站以重新編譯。
ZKWeb的插件文件夾結(jié)構(gòu)如下

  • 插件文件夾

    • net: .Net Framework編譯的程序集

    • netstandard: .Net Core編譯的程序集

    • 插件名稱.dll: 編譯出來的程序集

    • 插件名稱.pdb: 調(diào)試文件

    • CompileInfo.txt: 儲存了文件列表和修改時間

    • 同net文件夾下的內(nèi)容

    • bin:程序集文件夾

    • src 源代碼文件夾

    • static 靜態(tài)文件的文件夾

    • 其他文件夾……

通過Roslyn編譯代碼文件到程序集dll

在網(wǎng)站啟動時,插件管理器在得到插件文件夾列表后會使用Directory.EnumerateFiles遞歸查找該文件夾下的所有*.cs文件。
在得到這些代碼文件路徑后,我們就可以傳給Roslyn讓它編譯出dll程序集。
ZKWeb調(diào)用Roslyn編譯的完整代碼可以查看這里,下面說明編譯的流程:

首先調(diào)用CSharpSyntaxTree.ParseText來解析代碼列表到語法樹列表,我們可以從源代碼列表得出List<SyntaxTree>。
parseOptions是解析選項(xiàng),ZKWeb會在.Net Core編譯時定義NETCORE標(biāo)記,這樣插件代碼中可以使用#if NETCORE來定義.Net Core專用的處理。
path是文件路徑,必須傳入文件路徑才能調(diào)試生成出來的程序集,否則即使生成了pdb也不能捕捉斷點(diǎn)。

// Parse source files into syntax trees// Also define NETCORE for .Net Corevar parseOptions = CSharpParseOptions.Default;#if NETCOREparseOptions = parseOptions.WithPreprocessorSymbols("NETCORE");#endifvar syntaxTrees = sourceFiles.Select(path => CSharpSyntaxTree.ParseText(File.ReadAllText(path), parseOptions, path, Encoding.UTF8)) .ToList();

接下來需要分析代碼中的using來找出代碼依賴了哪些程序集,并逐一載入這些程序集。
例如遇到using System.Threading;會嘗試載入System和System.Threading程序集。

// Find all using directive and load the namespace as assembly// It's for resolve assembly dependencies of pluginLoadAssembliesFromUsings(syntaxTrees);

LoadAssembliesFromUsings的代碼如下,雖然比較長但是邏輯并不復(fù)雜。
關(guān)于IAssemblyLoader將在后面闡述,這里只需要知道它可以按名稱載入程序集。

/// <summary>/// Find all using directive/// And try to load the namespace as assembly/// </summary>/// <param name="syntaxTrees">Syntax trees</param>protected void LoadAssembliesFromUsings(IList<SyntaxTree> syntaxTrees) { ? ?// Find all using directivevar assemblyLoader = Application.Ioc.Resolve<IAssemblyLoader>(); ? ?foreach (var tree in syntaxTrees) { ? ? ? ?foreach (var usingSyntax in ((CompilationUnitSyntax)tree.GetRoot()).Usings) { ? ? ? ? ? ?var name = usingSyntax.Name; ? ? ? ? ? ?var names = new List<string>(); ? ? ? ? ? ?while (name != null) { ? ? ? ? ? ? ? ?// The type is "IdentifierNameSyntax" if it's single identifier// eg: System// The type is "QualifiedNameSyntax" if it's contains more than one identifier// eg: System.Threadingif (name is QualifiedNameSyntax) { ? ? ? ? ? ? ? ? ? ?var qualifiedName = (QualifiedNameSyntax)name; ? ? ? ? ? ? ? ? ? ?var identifierName = (IdentifierNameSyntax)qualifiedName.Right;names.Add(identifierName.Identifier.Text);name = qualifiedName.Left;} else if (name is IdentifierNameSyntax) { ? ? ? ? ? ? ? ? ? ?var identifierName = (IdentifierNameSyntax)name;names.Add(identifierName.Identifier.Text);name = null;}} ? ? ? ? ? ?if (names.Contains("src")) { ? ? ? ? ? ? ? ?// Ignore if it looks like a namespace from plugin continue;}names.Reverse(); ? ? ? ? ? ?for (int c = 1; c <= names.Count; ++c) { ? ? ? ? ? ? ? ?// Try to load the namespace as assembly// eg: will try "System" and "System.Threading" from "System.Threading"var usingName = string.Join(".", names.Take(c)); ? ? ? ? ? ? ? ?if (LoadedNamespaces.Contains(usingName)) { ? ? ? ? ? ? ? ? ? ?continue;} ? ? ? ? ? ? ? ?try {assemblyLoader.Load(usingName);} catch {}LoadedNamespaces.Add(usingName);}}} }

經(jīng)過上面這一步后,代碼依賴的所有程序集應(yīng)該都載入到當(dāng)前進(jìn)程中了,
我們需要找出這些程序集并且傳給Roslyn,在編譯代碼時引用這些程序集文件。
下面的代碼生成了一個List<PortableExecutableReference>對象。

// Add loaded assemblies to compile referencesvar assemblyLoader = Application.Ioc.Resolve<IAssemblyLoader>();var references = assemblyLoader.GetLoadedAssemblies().Select(assembly => assembly.Location).Select(path => MetadataReference.CreateFromFile(path)).ToList();

最后調(diào)用Roslyn編譯,傳入語法樹列表和引用程序集列表可以得到目標(biāo)程序集。
使用Emit函數(shù)編譯后會返回一個EmitResult對象,里面保存了編譯中出現(xiàn)的錯誤和警告信息。
注意編譯出錯時Emit不會拋出例外,需要手動檢查EmitResult中的Success屬性。

// Compile to assembly, throw exception if error occurredvar compilation = CSharpCompilation.Create(assemblyName).WithOptions(new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary,optimizationLevel: optimizationLevel)).AddReferences(references).AddSyntaxTrees(syntaxTrees);var emitResult = compilation.Emit(assemblyPath, pdbPath);if (!emitResult.Success) { ? ?throw new CompilationException(string.Join("\r\n", emitResult.Diagnostics)); }

到此已經(jīng)完成了代碼文件(cs)到程序集(dll)的編譯,下面來看如何載入這個程序集。

載入程序集

在.Net Framework中,載入程序集文件非常簡單,只需要調(diào)用Assembly.LoadFile。
在.Net Core中,載入程序集文件需要定義AssemblyLoadContext,并且所有相關(guān)的程序集都需要通過同一個Context來載入。
需要注意的是AssemblyLoadContext不能用在.Net Framework中,ZKWeb為了消除這個差異定義了IAssemblyLoader接口。
完整的代碼可以查看
IAssemblyLoader
CoreAssemblyLoader
NetAssemblyLoader

.Net Framework的載入只是調(diào)用了Assembly中原來的函數(shù),這里就不再說明了。
.Net Core使用的載入器定義了AssemblyLoadContext,代碼如下:
代碼中的plugin.ReferenceAssemblyPath指的是插件自帶的第三方dll文件,用于載入插件依賴但是主項(xiàng)目中沒有引用的dll文件。

/// <summary>/// The context for loading assembly/// </summary>private class LoadContext : AssemblyLoadContext { ? ?protected override Assembly Load(AssemblyName assemblyName) { ? ? ? ?try { ? ? ? ? ? ?// Try load directlyreturn Assembly.Load(assemblyName);} catch { ? ? ? ? ? ?// If failed, try to load it from plugin's reference directoryvar pluginManager = Application.Ioc.Resolve<PluginManager>(); ? ? ? ? ? ?foreach (var plugin in pluginManager.Plugins) { ? ? ? ? ? ? ? ?var path = plugin.ReferenceAssemblyPath(assemblyName.Name); ? ? ? ? ? ? ? ?if (path != null) { ? ? ? ? ? ? ? ? ? ?return LoadFromAssemblyPath(path);}} ? ? ? ? ? ?throw;}} }

定義了LoadContext以后需要把這個類設(shè)為單例,載入時都通過這個Context來載入。
因?yàn)?Net Core目前無法獲取到所有已載入的程序集,只能獲取程序本身依賴的程序集列表,
這里還添加了一個ISet<Assembly> LoadedAssemblies用于記錄歷史載入的所有程序集。

/// <summary>/// Load assembly by name/// </summary>public Assembly Load(string name) { ? ?// Replace name if replacement existsname = ReplacementAssemblies.GetOrDefault(name, name); ? ?var assembly = Context.LoadFromAssemblyName(new AssemblyName(name));LoadedAssemblies.Add(assembly); ? ?return assembly; }/// <summary>/// Load assembly by name object/// </summary>public Assembly Load(AssemblyName assemblyName) { ? ?var assembly = Context.LoadFromAssemblyName(assemblyName);LoadedAssemblies.Add(assembly); ? ?return assembly; }/// <summary>/// Load assembly from it's binary contents/// </summary>public Assembly Load(byte[] rawAssembly) { ? ?using (var stream = new MemoryStream(rawAssembly)) { ? ? ? ?var assembly = Context.LoadFromStream(stream);LoadedAssemblies.Add(assembly); ? ? ? ?return assembly;} }/// <summary>/// Load assembly from file path/// </summary>public Assembly LoadFile(string path) { ? ?var assembly = Context.LoadFromAssemblyPath(path);LoadedAssemblies.Add(assembly); ? ?return assembly; }

到這里已經(jīng)可以載入編譯的程序集(dll)文件了,下面來看如何實(shí)現(xiàn)修改代碼后自動重新編譯。

檢測代碼文件變化并自動重新編譯

ZKWeb使用了FileSystemWatcher來檢測代碼文件的變化,完整代碼可以查看這里。
主要的代碼如下

// Function use to stop websiteAction stopWebsite = () => { ? ?var stoppers = Application.Ioc.ResolveMany<IWebsiteStopper>();stoppers.ForEach(s => s.StopWebsite()); };// Function use to handle file changedAction<string> onFileChanged = (path) => { ? ?var ext = Path.GetExtension(path).ToLower(); ? ?if (ext == ".cs" || ext == ".json" || ext == ".dll") {stopWebsite();} };// Function use to start file system watcherAction<FileSystemWatcher> startWatcher = (watcher) => {watcher.NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName;watcher.Changed += (sender, e) => onFileChanged(e.FullPath);watcher.Created += (sender, e) => onFileChanged(e.FullPath);watcher.Deleted += (sender, e) => onFileChanged(e.FullPath);watcher.Renamed += (sender, e) => { onFileChanged(e.FullPath); onFileChanged(e.OldFullPath); };watcher.EnableRaisingEvents = true; };// Monitor plugin directoryvar pathManager = Application.Ioc.Resolve<PathManager>(); pathManager.GetPluginDirectories().Where(p => Directory.Exists(p)).ForEach(p => { ? ?var pluginFilesWatcher = new FileSystemWatcher();pluginFilesWatcher.Path = p;pluginFilesWatcher.IncludeSubdirectories = true;startWatcher(pluginFilesWatcher); });

這段代碼監(jiān)視了插件文件夾下的cs, json, dll文件,
一旦發(fā)生變化就調(diào)用IWebsiteStopper來停止網(wǎng)站,網(wǎng)站下次打開時將會重新編譯和載入插件。
IWebsiteStopper是一個抽象的接口,在Asp.Net中停止網(wǎng)站調(diào)用了HttpRuntime.UnloadAppDomain,而在Asp.Net Core中停止網(wǎng)站調(diào)用了IApplicationLifetime.StopApplication。

Asp.Net停止網(wǎng)站會卸載當(dāng)前的AppDomain,下次刷新網(wǎng)頁時會自動重新啟動。
而Asp.Net Core停止網(wǎng)站會終止當(dāng)前的進(jìn)程,使用IIS托管時IIS會在自動重啟進(jìn)程,但使用自宿主時則需要依賴外部工具來重啟。

寫在最后

ZKWeb實(shí)現(xiàn)的動態(tài)編譯技術(shù)大幅度的減少了開發(fā)時的等待時間,
主要節(jié)省在不需要每次都按快捷鍵編譯和不需要像其他模塊化開發(fā)一樣需要從子項(xiàng)目復(fù)制dll文件到主項(xiàng)目,如果dll文件較多而且用了機(jī)械硬盤,復(fù)制時間可能會比編譯時間還要漫長。

我將會在這個博客繼續(xù)分享ZKWeb框架中使用的技術(shù)。
如果有不明白的部分,歡迎加入ZKWeb交流群522083886詢問,

相關(guān)文章:?

  • Roslyn項(xiàng)目系統(tǒng)簡介

  • Roslyn開源第一年:試煉與凱旋

原文地址:http://www.cnblogs.com/zkweb/p/5857355.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的ZKWeb网站框架的动态编译的实现原理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

国产成人久久av免费高清密臂 | 亚洲精品综合久久 | 亚洲天天看 | 最近免费中文字幕mv在线视频3 | 亚洲精品男女 | 中文字幕在线观看视频网站 | 日韩欧美国产精品 | 国产精品24小时在线观看 | 成人一级免费电影 | 激情综合五月婷婷 | 久久视频99 | 国产成人精品一区一区一区 | 天天综合久久综合 | 狠狠色网 | 97精品国产97久久久久久免费 | 四虎永久免费网站 | 在线观看视频在线 | 99精品成人 | 91av欧美 | 中文字幕亚洲高清 | 亚洲国产精品99久久久久久久久 | 久久久久黄 | 丰满少妇在线观看网站 | 国产亚洲综合在线 | 欧美日韩一区二区三区在线免费观看 | 97超碰人人干 | 91精品蜜桃 | 99久久精品久久亚洲精品 | 国产精品久久艹 | 美女搞黄国产视频网站 | 香蕉视频免费在线播放 | 欧美日韩在线电影 | 国产 日韩 在线 亚洲 字幕 中文 | 国产精品一区二区中文字幕 | 国产黄色播放 | 日韩av偷拍 | 97超碰精品 | 一区二区理论片 | 最新精品视频在线 | 免费观看一级成人毛片 | 在线观看日韩专区 | 91在线观看欧美日韩 | 青春草免费视频 | 久久久久久综合 | 天天综合91| 免费看污在线观看 | 欧美极品xxxx | 日本中文字幕电影在线免费观看 | 一区二区三区在线免费观看 | www.99在线观看 | 久草www | 韩日在线一区 | 久久婷婷国产色一区二区三区 | 四虎成人精品永久免费av | 在线观av| 久九视频 | 婷婷综合亚洲 | www.久久婷婷 | 波多野结衣日韩 | 国产精品热视频 | 日韩大片在线观看 | 人人爽人人爽人人片av | 亚洲国产精久久久久久久 | 国产精品1区2区3区 久久免费视频7 | 日韩乱色精品一区二区 | 亚洲精品国产精品国 | 中文字幕a∨在线乱码免费看 | 久草在线国产 | 在线香蕉视频 | 狠狠色伊人亚洲综合成人 | 久久国产亚洲 | 国产精品女同一区二区三区久久夜 | 怡红院av | 国产九九九视频 | 国产精品情侣视频 | 日日婷婷夜日日天干 | 黄色电影网站在线观看 | 一区二区三区日韩视频在线观看 | av色综合网 | 亚洲情影院 | 99精品一区二区 | 亚洲精品国产精品国自 | 中文字幕在线观看你懂的 | 国产麻豆剧果冻传媒视频播放量 | 亚洲精品久久久久中文字幕m男 | 一区二区三区久久精品 | 日本久久影视 | wwxxx日本| 久久精品黄 | 日韩在线观看视频网站 | 最新国产一区二区三区 | 日韩精品欧美专区 | 一级一片免费观看 | 在线观看深夜视频 | 国产亚洲字幕 | 中国精品少妇 | 欧美激情第28页 | 色干干 | 国产一区av在线 | 九九天堂 | 午夜黄色大片 | 亚洲欧美日韩一级 | 色中色综合 | 成人a免费视频 | 91桃色在线观看视频 | 久久天堂精品视频 | 91九色九色 | 精品在线不卡 | 久草在线网址 | 日韩城人在线 | 91免费观看视频网站 | 久久久91精品国产 | 国产破处精品 | 亚洲精品女 | 国产99久久久欧美黑人 | 国产精品乱码久久久 | 天天鲁天天干天天射 | 国内精品小视频 | 99热精品视 | 在线午夜电影神马影院 | 色 免费观看 | 久久草网 | 亚洲视频 视频在线 | 国产精品女人网站 | 久久久午夜精品福利内容 | 日韩精品第1页 | 激情影音先锋 | 西西4444www大胆视频 | 在线亚洲免费视频 | 最新国产一区二区三区 | 久草免费在线 | 中文字幕 在线 一 二 | 亚洲综合欧美激情 | 9久久精品| 黄p网站在线观看 | 综合网在线视频 | 国产精品永久免费 | 中文字幕一区二区三区乱码在线 | 国产精品中文字幕av | 欧美性高跟鞋xxxxhd | 日本三级中文字幕在线观看 | 天天天综合| 经典三级一区 | 亚洲欧美一区二区三区孕妇写真 | 亚洲国产成人精品电影在线观看 | 在线高清一区 | 日日干天天操 | 欧美日韩xxx | 国产精品美女网站 | 日日成人网 | 国产欧美精品一区二区三区 | 日韩精品久久久久久久电影99爱 | 日韩a免费| 99高清视频有精品视频 | 最近日本字幕mv免费观看在线 | 97在线观看 | 国产精品久久久久久吹潮天美传媒 | 最近中文字幕高清字幕免费mv | 久久婷亚洲五月一区天天躁 | 日韩视频免费观看高清 | 337p日本欧洲亚洲大胆裸体艺术 | 国产精品精品国产婷婷这里av | 国产精品国产三级国产不产一地 | 国产日韩欧美精品在线观看 | 精品久久久国产 | 夜夜躁日日躁狠狠久久88av | 中文字幕欧美日韩va免费视频 | 91精选| 亚洲一区 av | 午夜久久福利影院 | 亚洲综合色播 | 欧美精品一区二区免费 | 成年人在线免费看视频 | 亚洲成a人片在线www | 亚洲精品久久久蜜桃直播 | 成人黄色在线 | 欧美日韩在线免费视频 | 亚洲伊人av | 五月天综合色 | 欧美成人h版在线观看 | 四虎在线观看 | 在线观看视频你懂的 | 日日干天夜夜 | 97色se | 日韩欧美精品在线观看视频 | 天天碰天天操 | sm免费xx网站 | 涩涩伊人| 日日干天天操 | 久久国产精品99久久久久久进口 | 天天操天天干天天插 | 欧美精品久久久久久久久久白贞 | 美国三级黄色大片 | avove黑丝 | 久99久在线 | 久久综合爱 | 国产九色视频在线观看 | 久久成人精品电影 | 日韩av成人在线 | 91成人精品在线 | 亚洲闷骚少妇在线观看网站 | 亚洲国产网址 | 中文国产字幕在线观看 | 午夜12点| 国产精品成人在线观看 | 8x成人免费视频 | 亚洲精品国产品国语在线 | 亚洲视频在线观看网站 | 国产盗摄精品一区二区 | 国产精品黑丝在线观看 | 日韩av影视在线观看 | 成人av在线播放网站 | 在线观看亚洲免费视频 | 亚洲国产精品一区二区久久,亚洲午夜 | 精品在线观看免费 | 97精品超碰一区二区三区 | 欧美电影在线观看 | 美女在线观看av | 欧美日韩视频在线一区 | 久久综合九色综合久久久精品综合 | 色是在线视频 | 国偷自产视频一区二区久 | 亚洲国产精品电影 | 天天操夜夜拍 | 久久综合欧美 | 91视频在线免费下载 | 97超碰人人在线 | 91亚洲精品国偷拍自产在线观看 | 色诱亚洲精品久久久久久 | 91理论片午午伦夜理片久久 | 成人黄色大片 | 一区二区中文字幕在线观看 | 国产免费人成xvideos视频 | 日韩av网站在线播放 | 五月激情婷婷丁香 | 国产精品视频99 | 久久免费视频网站 | 久久国产精品免费视频 | 天天操夜夜操夜夜操 | 在线看国产日韩 | 久草视频视频在线播放 | 亚洲精品人人 | 国产成人在线观看 | 在线看国产日韩 | 黄色毛片一级 | 国产小视频在线 | 亚洲精品视| 久久久黄视频 | 怡红院av久久久久久久 | 夜夜夜夜猛噜噜噜噜噜初音未来 | 91精彩视频| 欧美成人精品在线 | 亚洲精品美女在线观看播放 | 日韩在线观看网址 | 91精品人成在线观看 | av免费试看| 亚洲综合丁香 | 六月激情 | 香蕉视频在线观看免费 | 中文字幕电影在线 | 欧美久久电影 | 91看片淫黄大片91 | 不卡视频一区二区三区 | 99高清视频有精品视频 | 日韩免费网址 | 91麻豆精品91久久久久同性 | 国产高h视频 | 激情 一区二区 | 美女视频黄在线 | 999久久久免费视频 午夜国产在线观看 | 久久国产女人 | 999国产| 国产黄在线观看 | 又黄又刺激 | 国产精品资源 | 国产精品激情偷乱一区二区∴ | 日韩免费视频线观看 | 日韩手机视频 | 中文字幕免费高清在线 | 午夜成人影视 | 一区二区三区免费在线播放 | 欧美一级电影片 | 亚洲精品videossex少妇 | 国产美女网站在线观看 | 久久精品免视看 | 国产成人精品一区二区三区网站观看 | 在线精品亚洲一区二区 | 97在线观看免费视频 | 成人久久18免费网站图片 | 激情av网址 | 天天添夜夜操 | 亚洲精品一区二区三区高潮 | 亚洲精品99久久久久久 | 日本 在线 视频 中文 有码 | 美女在线免费观看视频 | 久久精品99 | 久久人人艹 | 在线有码中文字幕 | 国产r级在线观看 | 精品久久综合 | 狠狠gao | 精品视频免费观看 | 黄色国产大片 | 国产99久久九九精品 | 欧美性色综合网站 | 国产精品一区二区62 | 国产小视频在线观看 | 日日干影院 | 香蕉成人在线视频 | 久久电影国产免费久久电影 | 中文字幕亚洲情99在线 | 国产女人18毛片水真多18精品 | 亚洲成人精品久久久 | 国产麻豆精品95视频 | 日韩mv欧美mv国产精品 | 久久久www成人免费精品 | 欧美成人播放 | 久久av黄色 | 999视频在线播放 | free,性欧美 九九交易行官网 | 91丨精品丨蝌蚪丨白丝jk | 久久亚洲视频 | 亚洲精品永久免费视频 | 色婷婷综合久久久 | 亚洲一级特黄 | 国产精品自在欧美一区 | 日韩一区二区三区免费视频 | 美女禁18| 狠狠综合 | 亚洲国产影院av久久久久 | 毛片www| 人人澡人 | 一区久久久 | 亚洲成人黄色 | 深爱激情五月网 | 国内精品久久久久久中文字幕 | 在线观看视频国产 | 亚洲精品视频免费在线观看 | 国产成人一区二区三区免费看 | 国产视频中文字幕在线观看 | 婷婷色av | 黄网站免费大全入口 | 久久国产精品免费一区 | 乱子伦av| 中文字幕亚洲精品在线观看 | 精品一区二区三区电影 | 久久久久久久久久亚洲精品 | 五月婷婷在线播放 | 久久成年人视频 | 天天看天天干 | 国产精品久久久久久超碰 | 色综合在 | 中文字幕在线观看网站 | 在线亚洲欧美视频 | 99国产在线 | 亚洲成aⅴ人在线观看 | 国产成人精品在线观看 | 日本午夜在线观看 | 国产成人av一区二区三区在线观看 | av成人资源| 久久av影视 | 日韩av电影网站在线观看 | 黄色a一级视频 | 正在播放国产一区二区 | 999热线在线观看 | 国产丝袜网站 | 9在线观看免费高清完整版 玖玖爱免费视频 | 婷婷激情av| 激情小说网站亚洲综合网 | 亚洲国产97在线精品一区 | www国产亚洲 | 精品九九九 | 涩涩在线| 免费在线观看午夜视频 | 日本91在线 | 久久久久久美女 | 日韩视频三区 | 日韩午夜在线播放 | 免费www视频| 2019中文最近的2019中文在线 | 国产精品mv| 亚洲精品视频网站在线观看 | 9在线观看免费高清完整版在线观看明 | 日韩资源在线播放 | 999久久久免费视频 午夜国产在线观看 | 九九热在线观看 | 欧美 日韩 成人 | 久久国产精品免费一区 | 美女黄网久久 | 久久久2o19精品 | 天天草天天摸 | 丁香六月婷婷开心婷婷网 | 欧美日韩高清国产 | av日韩av| 91精品国产92久久久久 | 六月激情丁香 | 91在线免费播放视频 | 久久在视频| 欧美日韩综合在线 | 久久精品欧美一 | 亚洲春色奇米影视 | 中文字幕在线观看网站 | 免费观看一级特黄欧美大片 | 色婷婷国产在线 | 毛片无卡免费无播放器 | 久草亚洲视频 | 成人在线视频一区 | 欧美一区在线看 | 又黄又爽又刺激 | 操操操影院 | 亚洲成人av电影 | 日韩免费视频线观看 | 五月天伊人| 国产日韩精品一区二区三区在线 | 黄色成人小视频 | 日韩欧美视频在线播放 | av在线免费不卡 | 久久精品免费播放 | 中文字幕av最新更新 | 欧美日韩综合在线观看 | 久久6精品 | 人人舔人人爽 | 91理论片午午伦夜理片久久 | 亚洲最快最全在线视频 | 久久精品香蕉视频 | 天天操天天爽天天干 | 精品久久久久国产免费第一页 | 黄免费在线观看 | 三上悠亚一区二区在线观看 | 精品综合久久 | 久久久久久久久久久网站 | 免费看污片 | 视频在线播放国产 | 亚州国产精品 | 一级片黄色片网站 | 日韩欧美有码在线 | 亚洲欧美视频在线观看 | 国产一区福利 | 黄色一级片视频 | 久久久精品亚洲 | 国产精品乱码久久久久久1区2区 | 在线国产99 | 久久久午夜影院 | 一级片免费在线 | 成人在线免费观看网站 | 91视频88av| 国产又粗又长的视频 | 99爱精品视频 | 久草久热 | 久久久福利 | 日韩精品在线播放 | 一区二区三区在线视频111 | 国产精品一区电影 | 又爽又黄又无遮挡网站动态图 | 亚洲成av片人久久久 | 五月婷婷丁香在线观看 | 国产一级精品绿帽视频 | 九九九九九九精品任你躁 | 久久久久久电影 | 久久久久精 | 激情五月播播久久久精品 | 精品国产人成亚洲区 | 国产在线2020 | 久久九九久久九九 | 婷婷综合在线 | 成人免费网站视频 | 91高清在线| 蜜臀aⅴ国产精品久久久国产 | 99热这里只有精品免费 | 91麻豆精品国产91久久久无限制版 | 国产高清视频在线观看 | 日本最新一区二区三区 | 97香蕉久久超级碰碰高清版 | 中文字幕免费久久 | 色婷婷中文 | 国产一区二区三区午夜 | 亚洲人人av | 久久视频免费观看 | 国产午夜精品福利视频 | 亚洲国产丝袜在线观看 | 99久久久久久国产精品 | 日韩在线视频不卡 | 亚洲精品久久久久58 | 免费看av片网站 | 国内丰满少妇猛烈精品播放 | 婷婷激情欧美 | av不卡免费在线观看 | 精品视频区| 久久一区二区免费视频 | 免费高清在线观看成人 | av中文在线观看 | 人人插人人| 日韩在线资源 | 最近高清中文字幕在线国语5 | 天天翘av| 亚洲国产中文字幕在线观看 | 国产高清专区 | 午夜丁香视频在线观看 | 国产精品青草综合久久久久99 | 欧美最猛性xxxx | a天堂一码二码专区 | 日韩在线视频免费观看 | 欧美精品乱码久久久久 | 狠狠狠狠狠狠 | 伊人黄| 天天操夜夜操夜夜操 | 国产亚洲精品久久久久久电影 | 九色精品免费永久在线 | 国产精品免费不卡 | 手机看片久久 | 色搞搞 | 在线91av | www色网站 | 91少妇精拍在线播放 | 五月天天色 | 国产不卡在线视频 | 视频国产一区二区三区 | 免费观看的黄色片 | 最新超碰| 在线观看激情av | 色综合久久久久 | 日韩偷拍精品 | 337p日本欧洲亚洲大胆裸体艺术 | 国产一级性生活视频 | 四虎永久免费在线观看 | 99久久久久国产精品免费 | 狠狠操.com | 久久精品视频在线看 | 99久久婷婷 | 免费看的黄色片 | 91一区啪爱嗯打偷拍欧美 | 久草在线视频网 | 97电影在线 | 久久综合中文字幕 | 久久久久成人精品亚洲国产 | 91看片麻豆| 久久久久www | 国产午夜精品免费一区二区三区视频 | 久久国产日韩 | 在线观看精品黄av片免费 | 丁香五月缴情综合网 | 免费h视频 | 91视频在线免费看 | 91看片在线观看 | 中文字幕免费成人 | 狠狠操狠狠干天天操 | 麻豆91精品 | 成人免费网站在线观看 | 日韩精品久久久久久 | av日韩精品 | 久久精国产 | 日韩电影一区二区三区在线观看 | 91精品国产综合久久婷婷香蕉 | 亚洲综合情 | aaa毛片视频| 日韩欧美在线一区 | 欧美福利网址 | 国产福利91精品一区二区三区 | 伊人天堂久久 | 久久久av电影| 色91在线视频 | 国产尤物在线视频 | 成人免费观看视频大全 | 美女久久久久久久久久 | 欧美日高清视频 | 亚洲久草在线 | 美女久久久久久久久久久 | 久久免费一| 国产一区视频在线 | 免费精品久久久 | 亚洲 欧美 日韩 综合 | 久久国产精品久久精品 | 国产特级毛片 | www.香蕉视频 | 日韩一区二区三区在线观看 | 一区二区三区四区五区六区 | 97热视频 | 久久刺激视频 | 涩涩色亚洲一区 | 五月色综合 | 午夜精品福利一区二区 | 色综合天天色综合 | 粉嫩aⅴ一区二区三区 | 美女中文字幕 | 国产精品久久久久毛片大屁完整版 | 最新极品jizzhd欧美 | a资源在线 | 欧美日韩亚洲第一页 | www五月天 | 在线国产日韩 | 国产精品精品久久久 | va视频在线观看 | 胖bbbb搡bbbb擦bbbb | 亚洲 中文 在线 精品 | 国产精品一区电影 | 黄色天堂在线观看 | www91在线观看 | 国产精品18videosex性欧美 | 国产精品久久艹 | 亚洲aⅴ在线观看 | 久久综合精品国产一区二区三区 | 亚a在线| 免费中文字幕视频 | 婷婷综合激情 | 最近字幕在线观看第一季 | 怡红院av久久久久久久 | 黄色精品在线看 | 狂野欧美激情性xxxx | 4438全国亚洲精品在线观看视频 | 日韩在线观看你懂的 | 亚色视频在线观看 | 亚洲精品xxxx | 欧美色操 | 久久精品视频免费 | 国产高清视频免费最新在线 | 综合伊人久久 | 国产在线精品观看 | 久久久国产一区二区三区四区小说 | 一二区av | 日韩免费福利 | 欧美作爱视频 | 99成人精品 | 在线看毛片网站 | 国产精品中文在线 | 一级片黄色片网站 | 99 色| 久久亚洲区 | 免费一级片在线观看 | 国产免费黄视频在线观看 | 在线观看色网站 | 日韩丝袜视频 | 国产精品中文久久久久久久 | 久久免费视频一区 | 国产精品久久片 | 国产高清亚洲 | 欧美日本啪啪无遮挡网站 | 久久久久免费网 | 91污视频在线 | www.久久色 | 99色亚洲 | 国产手机在线观看 | 超碰97av在线| 91九色porny蝌蚪视频 | 婷婷午夜 | 日韩欧美综合精品 | 日日夜夜天天 | 毛片区 | 亚洲精品视频在线观看免费 | 婷婷爱五月天 | 麻豆手机在线 | 一级a性色生活片久久毛片波多野 | 精品高清美女精品国产区 | 亚洲在线黄色 | 精品国产一区二区久久 | www.97视频 | 亚洲精品一区二区网址 | 精品视频一区在线 | 91精品国产高清自在线观看 | 国产高清视频在线播放一区 | 欧美色综合久久 | 国产成免费视频 | 九九精品在线观看 | 91成人网页版| 久久久久久久久毛片 | 午夜国产福利在线观看 | 在线国产视频观看 | 日韩高清三区 | 黄污视频网站大全 | 免费看片成人 | 亚洲精品播放 | 国产91勾搭技师精品 | 国产大陆亚洲精品国产 | 色婷婷狠狠18 | 日日精品 | 国产精品欧美一区二区 | 黄色小说在线免费观看 | 中文字幕资源网 国产 | 国产免费区 | 99热国产在线中文 | 欧美一二在线 | 在线视频国产区 | 成人影视免费看 | 国产91精品一区二区麻豆亚洲 | 国产精品自产拍在线观看网站 | 亚洲一级免费观看 | 99r国产精品 | 91精品免费视频 | 亚洲精品影视在线观看 | 精品久久久精品 | 521色香蕉网站在线观看 | 91九色在线视频观看 | 一区二区三区在线播放 | 欧美性生活大片 | 久久久久久网址 | 九九热免费在线观看 | 亚洲伦理精品 | 亚洲性少妇性猛交wwww乱大交 | 美女久久视频 | 99久久精品国产毛片 | 免费观看91视频 | 国产手机视频精品 | 97狠狠干 | 欧美日韩xxx | 成年人在线免费看 | 黄色电影小说 | 成人午夜精品福利免费 | 999毛片 | 欧美成人中文字幕 | 欧美日韩二三区 | 亚洲精品男人天堂 | 国产一级视屏 | 一区二区不卡高清 | 中文字幕免费在线 | www.久久com| 国产不卡av在线播放 | 中文字幕av日韩 | 视频在线一区 | 中文av网 | 91亚色在线观看 | 一级成人免费 | 天天综合网天天 | 在线一区电影 | 亚洲精品美女视频 | 国产黄色特级片 | 久久视频免费在线观看 | 久久色视频 | www五月天com | 99999精品视频 | 色av色av色av | 亚洲激情婷婷 | 在线黄频 | 欧美嫩草影院 | 五月天色综合 | 99re久久资源最新地址 | 麻豆久久久久久久 | 日韩欧美91| www.香蕉视频在线观看 | 中文字幕免| 黄视频网站大全 | 日韩极品视频在线观看 | 在线观看完整版免费 | 99热最新在线| 日本在线成人 | 人人看人人做人人澡 | 国模一二三区 | 日韩性色| 黄色一二级片 | 成人久久久久久久久久 | 中文字幕在线观看免费 | 久久久国产精品久久久 | 欧美一级在线看 | 国产 在线 高清 精品 | 久久99精品久久久久婷婷 | 欧美综合干 | 久久久久久久久艹 | 日韩午夜电影网 | 国产精品久久久久久一区二区三区 | 亚洲1级片 | 一区二区三区在线视频观看58 | 青春草免费在线视频 | 免费亚洲一区二区 | 久久久久久久久艹 | 在线a视频 | 亚洲国产视频在线 | 欧美一级日韩三级 | 日日夜操 | 国产黄在线 | 免费高清在线观看电视网站 | 日韩中文字幕免费视频 | 亚洲欧美色婷婷 | 久草影视在线 | av免费观看高清 | 天天射天天艹 | 国产成人精品电影久久久 | 激情婷婷久久 | 欧美天天射 | 久草在线视频国产 | 韩国精品福利一区二区三区 | 亚洲理论片 | 婷婷综合久久 | 91在线视频在线 | 久久不卡视频 | 午夜视频色| av免费看在线 | 毛片永久新网址首页 | 在线观看视频国产 | 91精品国产三级a在线观看 | 五月婷婷影院 | 免费高清国产 | 91精品麻豆 | 欧美午夜精品久久久久久孕妇 | 午夜在线观看影院 | 日韩av免费大片 | 欧美日韩在线视频一区二区 | 日韩av不卡在线播放 | 日本爱爱片 | 中文字幕视频观看 | 成人久久精品视频 | 麻豆成人网 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 日韩中文字幕亚洲一区二区va在线 | 欧美亚洲国产一卡 | 亚洲精品一区二区三区在线观看 | 欧美亚洲成人xxx | 日本视频不卡 | 亚洲第一区精品 | 国产精品每日更新 | 亚洲特级毛片 | 中文字幕av在线 | 在线 你懂| 干干干操操操 | h网站免费在线观看 | 久久免费黄色 | a一片一级| 久久男人中文字幕资源站 | 超碰在线9 | 成人黄色短片 | 国产精品一区免费看8c0m | 麻豆av一区二区三区在线观看 | 国产黄色大全 | 国产97色 | 国产福利91精品张津瑜 | 日本天天色 | 婷婷在线五月 | av免费电影在线观看 | 日本久久久久久科技有限公司 | 国产成人在线观看 | 色天天中文 | 日韩午夜精品福利 | 精品国产一区二区三区久久久蜜臀 | 久久精品视频网 | 久久69精品 | 中文字幕你懂的 | 久久久久久97三级 | 亚洲va欧美va人人爽 | 91av精品 | 国产精品videossex国产高清 | 国产精品18久久久久久不卡孕妇 | 国内丰满少妇猛烈精品播放 | 久久久高清免费视频 | 99热在 | 成人一区在线观看 | 久久av一区二区三区亚洲 | 涩涩网站在线看 | 久草剧场 | 亚洲jizzjizz日本少妇 | 国内精品久久久久久久久 | 就要色综合 | 久久精品99精品国产香蕉 | 久久大视频 | 国产精品美女久久久久久久久久久 | 久久最新| av电影免费在线播放 | 啪啪动态视频 | 国产黄网站在线观看 | 蜜臀av网址 | 开心色激情网 | 亚洲女欲精品久久久久久久18 | 国产97色在线 | 久久精品在线 | 成人免费视频视频在线观看 免费 | 国产在线观看 | 亚洲高清视频在线观看 | 91麻豆精品国产自产在线 | 免费高清av在线看 | 国产天天爽 | 99综合电影在线视频 | 国产一区在线视频播放 | 免费在线观看av片 | 午夜精品久久 | 久久精品欧美视频 | a级国产乱理伦片在线播放 久久久久国产精品一区 | 中文字幕免费高清 | 中文字幕高清视频 | 韩日电影在线观看 | 国产精品久久久久久久午夜 | 日韩久久精品一区 | 精品久久久久久久久久久久久久久久久久 | 97在线影院 | 九九精品毛片 | 欧美性生活免费看 | 成人av电影免费 | 女人久久久久 | 国产香蕉97碰碰久久人人 | 亚洲日本一区二区在线 | 97夜夜澡人人爽人人免费 | 色视频在线观看 | 国产成人精品av久久 | 二区视频在线观看 | 免费观看一区 | 久久精品国产免费看久久精品 | 啪啪av在线| 成年人免费看的视频 | 亚洲精品视频网 | 国产精品你懂的在线观看 | 在线国产小视频 | 国产精品一区二区美女视频免费看 | 综合久久网站 | 亚洲精品中文在线观看 | 久草在线免 | 开心激情综合网 | 成年美女黄网站色大片免费看 | 中文字幕av在线 | wwwwww国产 | 国产在线看 | 国产一级一级国产 | 色综合久 | 五月婷在线观看 | 狠狠狠色狠狠色综合 | 国产一级在线播放 | 色噜噜日韩精品一区二区三区视频 | 国产一区二区在线播放 | 国产黄色片网站 | 亚洲国产小视频在线观看 | 国产在线观看网站 | 国产一区高清在线观看 | 久久久久综合 | 亚洲aⅴ免费在线观看 | 青青草华人在线视频 | 夜色.com| 三级在线视频播放 | 91豆麻精品91久久久久久 | 91cn国产在线 | 西西444www大胆高清图片 | 成人蜜桃 | 99久久久久国产精品免费 | 欧美a视频在线观看 | 中文字幕精品一区 | 国产午夜精品福利视频 | 91看片成人| 欧美aaa视频 | 婷婷久久五月天 | 国产精品久久久久久久久免费看 | 国产系列 在线观看 | 国产成人综| 黄a网站 | www.五月婷| 国产午夜精品一区二区三区在线观看 | 免费黄色av.| 中文免费在线观看 | 国产黄影院色大全免费 | 91精品日韩 | 久草视频免费 | 97综合视频| 国产中文字幕视频 | 精品久久精品 | 91高清完整版在线观看 | 久久99国产精品 | 国产黄色成人 | 一级黄色毛片 | 97在线视频免费观看 | 久草手机视频 | 91成人免费 | 九九视频在线观看视频6 | 成人午夜电影网站 | 国产综合精品一区二区三区 | 999国内精品永久免费视频 | 日韩视频一区二区在线观看 | 久久久精品网 | 四虎成人精品永久免费av | 偷拍福利视频一区二区三区 | 国产精品1区2区在线观看 | 在线导航av| 国产一区在线视频观看 | 四虎免费av | 日韩大片在线播放 | 国产美女主播精品一区二区三区 | 日韩在线电影一区 | 视频二区在线视频 | 久久成人国产精品一区二区 | 丁香六月婷婷开心 | 91在线视频观看 | 国产精品女教师 | 国产精品video爽爽爽爽 | 丁香婷婷在线观看 | 久久久久久久久久久免费 | 久久国产福利 | 成人h视频在线播放 | 黄色一级大片免费看 | 国产亚洲精品综合一区91 | 18做爰免费视频网站 | 国产中文字幕视频在线 | 在线观看91久久久久久 | 美女久久久 | 激情综合网色播五月 | 日本一区二区高清不卡 | 日日干夜夜骑 | 久久婷婷视频 | 亚洲精品动漫久久久久 | av资源在线观看 | 天天射天天舔天天干 | 中文字幕人成乱码在线观看 | 免费看三级 | 免费碰碰 | 久久精品毛片基地 | 日韩一区二区三区观看 | 国产一区精品在线 | 激情欧美在线观看 |