99er久久国产精品先锋_亚洲丰满少妇撒尿BBo_老外和中国女人毛片免费视频_思思热在线视频网站_av无码不卡高清_国产 激情 自拍_激情综合色婷婷激情丁香_少妇与子乱A级全毛片_男人捅女人的软件_日本欧美日韩

...

宣布 .NET 6 — 迄今為止最快的 .NET

2021-12-13


2021 年 11 月 8 日 (以下是譯文)


歡迎使用 .NET 6。今天的發(fā)布是 .NET 團(tuán)隊(duì)和社區(qū)一年多來努力的結(jié)果。C# 10 和 F# 6 提供了語言改進(jìn),使您的代碼更簡單、更好。性能有了巨大的提升,我們已經(jīng)看到降低了 Microsoft 托管云服務(wù)的成本。.NET 6 是第一個(gè)原生支持 Apple Silicon (Arm64) 的版本,并且還針對(duì) Windows Arm64 進(jìn)行了改進(jìn)。我們構(gòu)建了一個(gè)新的動(dòng)態(tài)配置文件引導(dǎo)優(yōu)化 (PGO) 系統(tǒng),該系統(tǒng)可提供僅在運(yùn)行時(shí)才可能進(jìn)行的深度優(yōu)化。使用dotnet monitorOpenTelemetry改進(jìn)了云診斷。WebAssembly支持更強(qiáng)大、更高效。添加了新的 API,用于HTTP/3,處理 JSON數(shù)學(xué),直接操作內(nèi)存。.NET 6 將得到三年支持。開發(fā)人員已經(jīng)開始將應(yīng)用程序升級(jí)到 .NET 6,我們已經(jīng)在生產(chǎn)中聽到了很好的早期結(jié)果。.NET 6 已為您的應(yīng)用做好準(zhǔn)備。

您可以下載適用于 Linux、macOS 和 Windows 的.NET 6

有關(guān)Web 方案的新增功能,請(qǐng)參閱ASP.NET Core帖子。

Visual Studio 2022 也在今天發(fā)布。閱讀公告觀看發(fā)布活動(dòng)以了解有關(guān)發(fā)布的更多信息。

PowerShell 7.2也在今天發(fā)布,基于 .NET 6。PowerShell 用戶可以訪問與 .NET 開發(fā)人員相同的性能改進(jìn)和 API。

.NET Conf是一個(gè)為期三天的免費(fèi)虛擬開發(fā)人員活動(dòng),旨在慶祝 .NET 的主要版本。它將于明天開始,并于 11 月 9 日至 11 日舉行,屆時(shí)將有來自我們團(tuán)隊(duì)、Microsoft 團(tuán)隊(duì)和更廣泛社區(qū)的演講者參加 80 多場會(huì)議。收聽學(xué)習(xí)并與我們互動(dòng)。

查看新的對(duì)話帖子,就最新的 .NET 功能進(jìn)行工程師對(duì)工程師的深入討論。

.NET 6 亮點(diǎn)

.NET 6 是:

該版本包括大約一萬個(gè) git 提交。即使這篇文章很長,它也跳過了許多改進(jìn)。您必須下載并試用 .NET 6 才能看到所有新內(nèi)容。

支持

.NET 6 是一個(gè)長期支持 (LTS) 版本,將支持三年。它支持多種操作系統(tǒng),包括 macOS Apple Silicon 和 Windows Arm64。

紅帽與 .NET 團(tuán)隊(duì)合作紅帽企業(yè) Linux 上支持 .NET。在 RHEL 8 及更高版本上,.NET 6 將可用于 AMD 和 Intel (x64_64)、ARM (aarch64) 以及 IBM Z 和 LinuxONE (s390x) 架構(gòu)。

請(qǐng)開始將您的應(yīng)用程序遷移到 .NET 6,尤其是 .NET 5 應(yīng)用程序。我們從早期采用者那里聽說,從 .NET Core 3.1 和 .NET 5 升級(jí)到 .NET 6 很簡單。

Visual Studio 2022Visual Studio 2022 for Mac支持 .NET 6 。Visual Studio 2019、Visual Studio for Mac 8 或 MSBuild 16 不支持它。如果要使用 .NET 6,則需要升級(jí)到Visual Studio 2022(現(xiàn)在也是 64 位)。Visual Studio CodeC# 擴(kuò)展支持 .NET 6 。

Azure 應(yīng)用服務(wù):

注意:如果您的應(yīng)用已在應(yīng)用服務(wù)上運(yùn)行 .NET 6 預(yù)覽版或 RC 構(gòu)建,則一旦 .NET 6 運(yùn)行時(shí)和 SDK 部署到您所在的區(qū)域,它將在第一次重新啟動(dòng)時(shí)自動(dòng)更新。如果您部署了自包含應(yīng)用程序,則需要重新構(gòu)建和重新部署。

統(tǒng)一擴(kuò)展平臺(tái)

.NET 6 為瀏覽器、桌面、IoT移動(dòng)應(yīng)用程序提供了一個(gè)統(tǒng)一的平臺(tái)。底層平臺(tái)已更新,以滿足所有應(yīng)用程序類型的需求,并使您可以輕松地在所有應(yīng)用程序中重用代碼。新功能和改進(jìn)可同時(shí)用于所有應(yīng)用程序,因此您在云中或移動(dòng)設(shè)備上運(yùn)行的代碼具有相同的行為方式并具有相同的優(yōu)勢。





隨著每個(gè)版本的發(fā)布,.NET 開發(fā)人員的影響范圍不斷擴(kuò)大。機(jī)器學(xué)習(xí)WebAssembly是最近添加的兩個(gè)。例如,通過機(jī)器學(xué)習(xí),您可以編寫應(yīng)用程序來查找流數(shù)據(jù)中的異常情況。使用 WebAssembly,您可以在瀏覽器中托管 .NET 應(yīng)用程序,就像 HTML 和 JavaScript 一樣,或者將它們與 HTML 和 JavaScript 混合使用。

最令人興奮的新增功能之一是.NET 多平臺(tái)應(yīng)用程序 UI (.NET MAUI)。您現(xiàn)在可以在單個(gè)項(xiàng)目中編寫代碼,從而提供跨桌面和移動(dòng)操作系統(tǒng)的現(xiàn)代客戶端應(yīng)用程序體驗(yàn)。.NET MAUI 的發(fā)布時(shí)間將比 .NET 6 晚一點(diǎn)。我們?cè)?.NET MAUI 上投入了大量時(shí)間和精力,很高興能夠發(fā)布它并看到 .NET MAUI 應(yīng)用程序投入生產(chǎn)。

當(dāng)然,.NET 應(yīng)用程序也可以在Windows 桌面上使用(使用Windows 窗體WPF)以及在云中使用http://ASP.NETCore。它們是我們提供時(shí)間最長的應(yīng)用程序類型,并且仍然非常受歡迎,我們?cè)?.NET 6 中對(duì)它們進(jìn)行了改進(jìn)。

面向 .NET 6

繼續(xù)以廣泛的平臺(tái)為主題,在所有這些操作系統(tǒng)上編寫 .NET 代碼很容易。

以 .NET 6目標(biāo),您需要使用 .NET 6 目標(biāo)框架,如下所示:

net6.0

該目標(biāo)框架名字對(duì)象(TFM),您可以訪問所有的跨平臺(tái)的API,.NET提供。如果您正在編寫控制臺(tái)應(yīng)用程序、http://ASP.NETCore 應(yīng)用程序或可重用的跨平臺(tái)庫,這是最佳選擇。net6.0

如果您的目標(biāo)是特定的操作系統(tǒng)(例如編寫Windows 窗體或 iOS 應(yīng)用程序),那么還有另一組 TFM(每個(gè)都針對(duì)一個(gè)不言而喻的操作系統(tǒng))供您使用。它們使您可以訪問所有 API以及一系列特定于操作系統(tǒng)的 API 。net6.0

  • net6.0-android

  • net6.0-ios

  • net6.0-maccatalyst

  • net6.0-tvos

  • net6.0-windows

每個(gè)無版本的 TFM 都相當(dāng)于針對(duì) .NET 6 支持的最低操作系統(tǒng)版本。如果您想要特定或訪問更新的 API,可以指定操作系統(tǒng)版本。

的和TFMS支持(同.NET 5)。Android 和 Apple TFM 是 .NET 6 的新增功能,目前處于預(yù)覽階段。稍后的 .NET 6 更新將支持它們。net6.0net6.0-windows

操作系統(tǒng)特定的 TFM 之間沒有兼容性關(guān)系。例如,與. 如果您想共享代碼,您需要使用帶有語句的源代碼或帶有目標(biāo)代碼的二進(jìn)制文件來實(shí)現(xiàn)。net6.0-iosnet6.0-tvos#ifnet6.0

表現(xiàn)

自從我們啟動(dòng) .NET Core 項(xiàng)目以來,該團(tuán)隊(duì)就一直非常關(guān)注性能。Stephen Toub在捕捉每個(gè)版本的 .NET 性能進(jìn)展方面做得非常出色。如果您還沒有機(jī)會(huì),我建議您查看他在 .NET 6 中的性能改進(jìn)帖子。

在這篇博文中,我收集了一些您想了解的重大性能改進(jìn),包括文件 IO、界面轉(zhuǎn)換、PGO 和 System.Text.Json。

動(dòng)態(tài) PGO

動(dòng)態(tài)輪廓引導(dǎo)優(yōu)化 (PGO)可以顯著提高穩(wěn)態(tài)性能。例如,PGO 使 TechEmpower JSON“MVC”套件的每秒請(qǐng)求數(shù)提高了 26%(510K -> 640K)。

動(dòng)態(tài) PGO 建立在分層編譯之上,它使方法能夠首先非??焖俚鼐幾g(稱為“第 0 層”)以提高啟動(dòng)性能,然后在啟用大量優(yōu)化的情況下隨后重新編譯(稱為“第 1 層”)一旦這種方法被證明是有效的。該模型使方法能夠在第 0 層中進(jìn)行檢測,以允許對(duì)代碼的執(zhí)行進(jìn)行各種觀察。當(dāng)這些方法在第 1 層重新編譯時(shí),從第 0 層執(zhí)行中收集的信息將用于更好地優(yōu)化第 1 層代碼。這就是機(jī)制的本質(zhì)。

動(dòng)態(tài) PGO 的啟動(dòng)時(shí)間將比默認(rèn)運(yùn)行時(shí)稍慢,因?yàn)樵诘?0 層方法中運(yùn)行額外的代碼來觀察方法行為。

要啟用動(dòng)態(tài) PGO,請(qǐng)?jiān)谀膽?yīng)用程序?qū)⑦\(yùn)行的環(huán)境中進(jìn)行設(shè)置。您還必須確保啟用分層編譯(默認(rèn)情況下)。動(dòng)態(tài) PGO 是可選的,因?yàn)樗且环N新的、有影響力的技術(shù)。我們希望發(fā)布選擇性使用和相關(guān)反饋,以確保它經(jīng)過全面壓力測試。我們對(duì)分層編譯做了同樣的事情。至少一個(gè)非常大的 Microsoft 服務(wù)支持動(dòng)態(tài) PGO,并且已經(jīng)在生產(chǎn)中使用它。我們鼓勵(lì)您嘗試一下。DOTNET_TieredPGO=1

您可以在 .NET 6中的性能博文中看到更多關(guān)于動(dòng)態(tài) PGO 優(yōu)勢的信息,包括以下微基準(zhǔn)測試,它測量特定 LINQ 枚舉器的成本。

private IEnumerator _source = Enumerable.Range(0, long.MaxValue).GetEnumerator();

[Benchmark]
public void MoveNext() => _source.MoveNext();

這是有和沒有動(dòng)態(tài) PGO 的結(jié)果。




這是一個(gè)相當(dāng)大的差異,但也增加了代碼大小,這可能會(huì)讓一些讀者感到驚訝。這是 JIT 生成的匯編代碼的大小,而不是內(nèi)存分配(這是一個(gè)更常見的焦點(diǎn))。.NET 6 Performance 帖子對(duì)此有很好的解釋。

PGO 實(shí)現(xiàn)中常見的一種優(yōu)化是“熱/冷拆分”,其中經(jīng)常執(zhí)行的方法部分(“熱”)在方法開始時(shí)靠近在一起,而不經(jīng)常執(zhí)行的方法部分(“冷”)被移到一起移動(dòng)到方法的末尾。這可以更好地使用指令緩存并最大限度地減少可能未使用的代碼的負(fù)載。

作為上下文,接口調(diào)度是 .NET 中最昂貴的調(diào)用類型。非虛擬方法調(diào)用是最快的,甚至更快的是可以通過內(nèi)聯(lián)消除的調(diào)用。在這種情況下,動(dòng)態(tài) PGO 為MoveNext. 第一個(gè) — 熱的 — 是直接調(diào)用,另一個(gè) — 冷的 — 是通過. 如果最熱門的人大部分時(shí)間都被跟注,那將是一場巨大的勝利。Enumerable+RangeIterator.MoveNextIEnumerator

這就是魔法。當(dāng) JIT 檢測此方法的第 0 層代碼時(shí),包括檢測此接口分派以跟蹤_source每次調(diào)用的具體類型。并且 JIT 發(fā)現(xiàn)每次調(diào)用都在一個(gè)名為 的類型上,這是一個(gè)用于在實(shí)現(xiàn)內(nèi)部實(shí)現(xiàn)的私有類。因此,對(duì)于第 1 層,JIT 已發(fā)出檢查以查看類型是否為:如果不是,則它跳轉(zhuǎn)到我們之前強(qiáng)調(diào)的執(zhí)行正常接口調(diào)度的冷部分。但如果是——基于分析數(shù)據(jù)預(yù)計(jì)在絕大多數(shù)時(shí)間都是這種情況——然后它可以繼續(xù)直接調(diào)用Enumerable+RangeIteratorEnumerable.RangeEnumerable_sourceEnumerable+RangeIteratorEnumerable+RangeIterator.MoveNext方法,非虛擬化。不僅如此,它還認(rèn)為內(nèi)聯(lián)該MoveNext方法是有利可圖的。最終效果是生成的匯編代碼稍大一些,但針對(duì)預(yù)期最常見的確切場景進(jìn)行了優(yōu)化。當(dāng)我們開始構(gòu)建動(dòng)態(tài) PGO 時(shí),這些就是我們想要的勝利。

動(dòng)態(tài) PGO 在 RyuJIT 部分再次討論。

文件 IO 改進(jìn)

FileStream幾乎完全用 .NET 6 重寫,重點(diǎn)是提高異步文件 IO 性能。在 Windows 上,實(shí)現(xiàn)不再使用阻塞 API 并且可以快幾倍!我們還改進(jìn)了所有平臺(tái)上的內(nèi)存使用。在第一個(gè)異步操作(通常分配)之后,我們已經(jīng)使異步操作無分配!此外,當(dāng) Windows 和 Unix 實(shí)現(xiàn)不同(并且這是可能的)時(shí),我們使邊緣情況的行為變得統(tǒng)一。

這種重寫的性能改進(jìn)使所有操作系統(tǒng)受益。Windows 的好處是最高的,因?yàn)樗h(yuǎn)遠(yuǎn)落后。macOS 和 Linux 用戶還應(yīng)該看到顯著的FileStream性能改進(jìn)。

以下基準(zhǔn)測試將 100 MB 寫入新文件。

private byte[] _bytes = new byte[8_000];

[Benchmark]
public async Task Write100MBAsync()
{
    using FileStream fs = new("file.txt", FileMode.Create, FileAccess.Write, FileShare.None, 1, FileOptions.Asynchronous);
    for (int i = 0; i < 100_000_000 / 8_000; i++)
        await fs.WriteAsync(_bytes);
}

在帶有 SSD 驅(qū)動(dòng)器的 Windows 上,我們觀察到了4 倍的加速和超過1200 倍的分配下降:

我們還認(rèn)識(shí)到需要更多高性能文件 IO 功能:并發(fā)讀寫和分散/聚集 IO。針對(duì)這些情況,我們?yōu)楹皖愐肓诵碌?API 。System.IO.FileSystem.IO.RandomAccess

async Task AllOrNothingAsync(string path, IReadOnlyList buffers)
{
    using SafeFileHandle handle = File.OpenHandle(
        path, FileMode.Create, FileAccess.Write, FileShare.None, FileOptions.Asynchronous,
        preallocationSize: buffers.Sum(buffer => buffer.Length)); // hint for the OS to pre-allocate disk space

    await RandomAccess.WriteAsync(handle, buffers, fileOffset: 0); // on Linux it's translated to a single sys-call!
}

示例演示:

預(yù)分配大小功能提高了性能,因?yàn)閷懭氩僮鞑恍枰獢U(kuò)展文件,而且文件碎片化的可能性較小。這種方法提高了可靠性,因?yàn)閷懖僮鲗⒉辉僖蚩臻g不足而失敗,因?yàn)榭臻g已經(jīng)被保留。Scatter/Gather IO API 減少了寫入數(shù)據(jù)所需的系統(tǒng)調(diào)用次數(shù)。

更快的界面檢查和轉(zhuǎn)換

界面投射性能提升了 16% – 38%。這種改進(jìn)對(duì)于 C# 與接口之間的模式匹配特別有用。





該圖表展示了代表性基準(zhǔn)的改進(jìn)規(guī)模。

將 .NET 運(yùn)行時(shí)的一部分從 C++ 遷移到托管 C# 的最大優(yōu)勢之一是它降低了貢獻(xiàn)的障礙。這包括接口轉(zhuǎn)換,它作為 .NET 6 的早期更改移至 C#。.NET 生態(tài)系統(tǒng)中通曉 C# 的人多于 C++(并且運(yùn)行時(shí)使用具有挑戰(zhàn)性的 C++ 模式)。能夠閱讀組成運(yùn)行時(shí)的一些代碼是培養(yǎng)對(duì)以各種形式貢獻(xiàn)的信心的重要一步。

歸功于本·亞當(dāng)斯。

System.Text.Json 源代碼生成器

我們為 System.Text.Json添加了一個(gè)源代碼生成器,它避免了在運(yùn)行時(shí)進(jìn)行反射和代碼生成的需要,并且可以在構(gòu)建時(shí)生成最佳序列化代碼。序列化程序通常使用非常保守的技術(shù)編寫,因?yàn)樗鼈儽仨毴绱恕5?,如果您閱讀自己的序列化源代碼(使用序列化程序),您會(huì)看到哪些明顯的選擇可以使序列化程序在您的特定情況下更加優(yōu)化。這正是這個(gè)新的源生成器所做的。

除了提高性能和減少內(nèi)存之外,源代碼生成器還可以生成最適合程序集修整的代碼。這有助于開發(fā)更小的應(yīng)用程序。

序列化POCO是一個(gè)非常常見的場景。使用新源發(fā)生器,我們觀察到,序列化是?1.6倍快與我們的基準(zhǔn)。

TechEmpower緩存基準(zhǔn)行使平臺(tái)或從數(shù)據(jù)庫來源的信息架構(gòu)的內(nèi)存緩存?;鶞?zhǔn)測試的 .NET 實(shí)現(xiàn)對(duì)緩存數(shù)據(jù)執(zhí)行 JSON 序列化,以便將其作為對(duì)測試工具的響應(yīng)發(fā)送。

我們觀察到~100K RPS 增益(~40% 增加)。與MemoryCache 性能改進(jìn)相結(jié)合時(shí),.NET 6 的吞吐量比 .NET 5 高 50% !

C# 10

歡迎使用 C# 10。C# 10 的一個(gè)主要主題是繼續(xù)從C# 9 中的頂級(jí)語句開始的簡化之旅。新功能從 中刪除了更多的儀式,導(dǎo)致程序短至一行。他們的靈感來自與沒有 C# 經(jīng)驗(yàn)的人(學(xué)生、專業(yè)開發(fā)人員和其他人)交談,并學(xué)習(xí)對(duì)他們來說最有效且直觀的方法。Program.cs

大多數(shù).NET SDK 模板已經(jīng)更新,以提供 C# 10 現(xiàn)在可以實(shí)現(xiàn)的更簡單、更簡潔的體驗(yàn)。我們聽到反饋說有些人不喜歡新模板,因?yàn)樗鼈儾皇菫閷<以O(shè)計(jì)的,刪除面向?qū)ο?,刪除在編寫 C# 的第一天就需要學(xué)習(xí)的重要概念,或鼓勵(lì)在一個(gè)文件中編寫整個(gè)程序??陀^地說,這些觀點(diǎn)都不是真的。新模型同樣適用于學(xué)生和專業(yè)開發(fā)人員。然而,它與我們?cè)?.NET 6 之前擁有的 C 派生模型不同。

C# 10 中還有其他一些功能和改進(jìn),包括記錄結(jié)構(gòu)。

全局 using 指令

全局 using 指令讓您using只需指定一次指令,并將其應(yīng)用于您編譯的每個(gè)文件。

以下示例顯示了語法的廣度:

  • global using System;

  • global using static System.Console;

  • global using Env = System.Environment;

您可以將語句放在任何文件中,包括在.global using.csProgram.cs

隱式 using 是一個(gè) MSBuild 概念,它根據(jù) SDK自動(dòng)添加一組指令。例如,控制臺(tái)應(yīng)用隱式使用不同于http://ASP.NETCore。global using

隱式使用是選擇加入的,并在以下位置啟用PropertyGroup:

  • enable

隱式使用是現(xiàn)有項(xiàng)目的選擇加入,但默認(rèn)情況下包含在新的 C# 項(xiàng)目中。有關(guān)更多信息,請(qǐng)參閱隱式使用。

文件范圍的命名空間

文件范圍的命名空間使您可以為整個(gè)文件聲明命名空間,而無需將其余內(nèi)容嵌套在. 只允許一個(gè),并且它必須出現(xiàn)在聲明任何類型之前。{ ... }

新語法是一行:

namespace MyNamespace;

class MyClass { ... } // Not indented

這種新語法是三行縮進(jìn)樣式的替代:

namespace MyNamespace
{
    class MyClass { ... } // Everything is indented
}

好處是在整個(gè)文件都在同一個(gè)命名空間中的極其常見的情況下減少縮進(jìn)。

記錄結(jié)構(gòu)

C# 9 引入了記錄作為類的一種特殊的面向值的形式。在 C# 10 中,您還可以聲明結(jié)構(gòu)記錄。C# 中的結(jié)構(gòu)已經(jīng)具有值相等性,但記錄結(jié)構(gòu)添加了一個(gè)==運(yùn)算符和一個(gè) 的實(shí)現(xiàn),以及一個(gè)基于值的實(shí)現(xiàn):IEquatableToString

public record struct Person
{
    public string FirstName { get; init; }
    public string LastName { get; init; }
}

就像記錄類一樣,記錄結(jié)構(gòu)可以是“位置”的,這意味著它們有一個(gè)主構(gòu)造函數(shù),它隱式聲明了與參數(shù)對(duì)應(yīng)的公共成員:

public record struct Person(string FirstName, string LastName);

但是,與記錄類不同,隱式公共成員是可變的自動(dòng)實(shí)現(xiàn)的屬性。這是因?yàn)橛涗浗Y(jié)構(gòu)是元組的自然成長故事。例如,如果您有一個(gè)返回類型,并且您想將其擴(kuò)展為命名類型,您可以輕松聲明相應(yīng)的位置結(jié)構(gòu)記錄并維護(hù)可變語義。(string FirstName, string LastName)

如果您想要一個(gè)具有只讀屬性的不可變記錄,您可以聲明整個(gè)記錄結(jié)構(gòu)readonly(就像其他結(jié)構(gòu)一樣):

public readonly record struct Person(string FirstName, string LastName);

C# 10 不僅支持with記錄結(jié)構(gòu)的表達(dá)式,還支持所有結(jié)構(gòu)以及匿名類型的表達(dá)式:

var updatedPerson = person with { FirstName = "Mary" };

F# 6

F# 6旨在讓 F# 更簡單、更高效。這適用于語言設(shè)計(jì)、庫和工具。我們對(duì) F# 6(及更高版本)的目標(biāo)是消除語言中讓用戶感到驚訝或?qū)W(xué)習(xí) F# 造成障礙的極端情況。我們很高興與 F# 社區(qū)合作進(jìn)行這項(xiàng)持續(xù)的工作。

使 F# 更快、更具互操作性

新語法直接創(chuàng)建一個(gè)任務(wù)并啟動(dòng)它。這是 F# 6 中最重要的特性之一,它使異步任務(wù)更簡單、性能更高,并且與 C# 和其他 .NET 語言的互操作性更強(qiáng)。以前,創(chuàng)建 .NET 任務(wù)需要使用創(chuàng)建任務(wù)和調(diào)用.task {…}async {…}Async.StartImmediateAsTask

該功能建立在稱為“可恢復(fù)代碼”RFC FS-1087的基礎(chǔ)之上。可恢復(fù)代碼是一個(gè)核心特性,我們希望在未來使用它來構(gòu)建其他高性能異步和屈服狀態(tài)機(jī)。task {…}

F# 6 還為庫作者添加了其他性能特性,包括InlineIfLambdaF# 活動(dòng)模式的未裝箱表示。一個(gè)特別顯著的性能改進(jìn)是在列表和數(shù)組表達(dá)式的編譯中,現(xiàn)在它們的速度提高了4 倍,并且調(diào)試也更好更簡單。

使 F# 更易于學(xué)習(xí)且更統(tǒng)一

F# 6 啟用索引語法。到目前為止,F(xiàn)# 一直使用 expr.[idx] 進(jìn)行索引。刪除點(diǎn)符號(hào)是基于第一次使用 F# 用戶的反復(fù)反饋,即使用點(diǎn)是與他們期望的標(biāo)準(zhǔn)實(shí)踐的不必要的分歧。在新代碼中,我們建議系統(tǒng)地使用新的索引語法。作為一個(gè)社區(qū),我們都應(yīng)該改用這種語法。expr[idx]expr[idx]

F# 社區(qū)做出了重要改進(jìn),使 F# 語言在 F# 6 中更加統(tǒng)一。其中最重要的是消除了 F# 縮進(jìn)規(guī)則中的許多不一致和限制。其他使 F# 更加統(tǒng)一的設(shè)計(jì)添加包括添加as模式;在計(jì)算表達(dá)式中允許“重載自定義操作”(對(duì) DSL 有用);允許_丟棄use綁定并允許輸出中的二進(jìn)制格式。F# 核心庫添加了用于對(duì)列表、數(shù)組和序列進(jìn)行復(fù)制和更新的新函數(shù),以及其他內(nèi)在函數(shù)。從 2.0 開始不推薦使用的 F# 的一些遺留功能現(xiàn)在會(huì)導(dǎo)致錯(cuò)誤。其中許多更改更好地使 F# 符合您的期望,從而減少了意外。%BNativePtr

F# 6 還添加了對(duì) F# 中其他“隱式”和“類型導(dǎo)向”轉(zhuǎn)換的支持。這意味著更少的顯式向上轉(zhuǎn)換,并增加了對(duì) .NET 樣式隱式轉(zhuǎn)換的一流支持。F# 還進(jìn)行了調(diào)整,以更好地適應(yīng)使用 64 位整數(shù)的數(shù)字庫時(shí)代,并對(duì) 32 位整數(shù)進(jìn)行隱式加寬。

改進(jìn) F# 工具

F# 6 中的工具改進(jìn)使日常編碼變得更容易。新的“管道調(diào)試”允許您單步執(zhí)行、設(shè)置斷點(diǎn)并檢查 F# 管道語法的中間值。陰影值的調(diào)試顯示已得到改進(jìn),消除了調(diào)試時(shí)常見的混淆源?,F(xiàn)在,F(xiàn)# 工具的性能也更高,F(xiàn)# 編譯器并行執(zhí)行解析階段。F# IDE 工具也得到了改進(jìn)。F# 腳本現(xiàn)在更加強(qiáng)大,允許您通過文件固定使用的 .NET SDK 版本。input |> f1 |> f2global.json

熱重載

熱重載是另一個(gè)性能特性,專注于開發(fā)人員的生產(chǎn)力。它使您能夠?qū)φ谶\(yùn)行的應(yīng)用程序進(jìn)行各種代碼編輯,從而減少您等待應(yīng)用程序重新構(gòu)建、重新啟動(dòng)或重新導(dǎo)航到進(jìn)行代碼更改后所在位置所需的時(shí)間。

熱重載可通過dotnet watchCLI 工具和 Visual Studio 2022 使用。您可以將熱重載用于多種應(yīng)用程序類型,例如 ASP.NET Core、Blazor、.NET MAUI、控制臺(tái)、Windows 窗體 (WinForms)、WPF、WinUI 3、Azure 函數(shù)等。

使用 CLI 時(shí),只需使用 啟動(dòng)您的 .NET 6 應(yīng)用程序dotnet watch,進(jìn)行任何支持的編輯,并在保存文件時(shí)(如在 Visual Studio Code 中)將立即應(yīng)用這些更改。如果不支持更改,詳細(xì)信息將記錄到命令窗口。





此圖像顯示正在啟動(dòng)的 MVC 應(yīng)用程序dotnet watch。我對(duì)和文件進(jìn)行了編輯(如日志中所報(bào)告的那樣),并且兩者都被應(yīng)用到代碼中并在不到半秒的時(shí)間內(nèi)很快地反映在瀏覽器中。.cs.cshtml

使用 Visual Studio 2022 時(shí),只需啟動(dòng)您的應(yīng)用程序,進(jìn)行受支持的更改,然后使用新的“熱重載”按鈕(如下圖所示)應(yīng)用這些更改。您還可以選擇通過同一按鈕上的下拉菜單在保存時(shí)應(yīng)用更改。使用 Visual Studio 2022 時(shí),Hot Reload 可用于多個(gè) .NET 版本、.NET 5+、.NET Core 和 .NET Framework。例如,您將能夠?qū)nClickEvent按鈕的處理程序進(jìn)行代碼隱藏更改。Main應(yīng)用程序的方法不支持它。





注意:RuntimeInformation.FrameworkDescription中存在一個(gè)錯(cuò)誤,錯(cuò)誤在該圖像中顯示,將很快修復(fù)。

熱重載還與現(xiàn)有的“編輯并繼續(xù)”功能(在斷點(diǎn)處停止時(shí))和 XAML 熱重載協(xié)同工作,用于實(shí)時(shí)編輯應(yīng)用程序 UI。目前支持 C# 和 Visual Basic 應(yīng)用程序(不是 F#)。

安全

.NET 6 中的安全性得到了顯著改善。它始終是團(tuán)隊(duì)的重要關(guān)注點(diǎn),包括威脅建模、加密和縱深防御緩解措施。

在 Linux 上,我們依賴OpenSSL進(jìn)行所有加密操作,包括 TLS(HTTPS 需要)。在 macOS 和 Windows 上,我們依賴操作系統(tǒng)提供的功能來實(shí)現(xiàn)相同的目的。對(duì)于 .NET 的每個(gè)新版本,我們經(jīng)常需要添加對(duì)新版本 OpenSSL 的支持。.NET 6 添加了對(duì)OpenSSL 3 的支持。

OpenSSL 3 的最大變化是改進(jìn)的FIPS 140-2模塊和更簡單的許可。

.NET 6 需要 OpenSSL 1.1 或更高版本,并且更喜歡它可以找到的最高安裝版本的 OpenSSL,直到并包括 v3。在一般情況下,當(dāng)您使用的 Linux 發(fā)行版切換為默認(rèn)設(shè)置時(shí),您最有可能開始使用 OpenSSL 3。大多數(shù)發(fā)行版還沒有這樣做。例如,如果您在 Red Hat 8 或 Ubuntu 20.04 上安裝 .NET 6,您將不會(huì)(在撰寫本文時(shí))開始使用 OpenSSL 3。

OpenSSL 3、Windows 10 21H1 和 Windows Server 2022 都支持ChaCha20Poly1305。您可以在 .NET 6 中使用這種新的經(jīng)過身份驗(yàn)證的加密方案(假設(shè)您的環(huán)境支持它)。

感謝凱文-瓊斯為ChaCha20Poly1305 Linux支持。

我們還發(fā)布了新的運(yùn)行時(shí)安全緩解路線圖。重要的是您使用的運(yùn)行時(shí)不受教科書式攻擊類型的影響。我們正在滿足這種需求。在 .NET 6 中,我們構(gòu)建了W^X英特爾控制流執(zhí)行技術(shù) (CET) 的初始實(shí)現(xiàn)。W^X 完全受支持,默認(rèn)情況下為 macOS Arm64 啟用,并在其他環(huán)境中選擇加入。CET 是所有環(huán)境的選擇和預(yù)覽。我們希望默認(rèn)情況下為 .NET 7 中的所有環(huán)境啟用這兩種技術(shù)。

ARM64

如今,對(duì)于筆記本電腦、云硬件和其他設(shè)備,Arm64 令人興奮不已。我們對(duì) .NET 團(tuán)隊(duì)也感到同樣的興奮,并正在盡最大努力跟上這一行業(yè)趨勢。我們直接與 Arm Holdings、Apple 和 Microsoft 的工程師合作,以確保我們的實(shí)施正確且經(jīng)過優(yōu)化,并且我們的計(jì)劃保持一致。這些密切的伙伴關(guān)系對(duì)我們幫助很大。

  • 特別感謝 Apple 在 M1 芯片發(fā)布之前向我們的團(tuán)隊(duì)發(fā)送了一蒲式耳的 Arm64 開發(fā)套件,并提供了重要的技術(shù)支持。

  • 特別感謝 Arm Holdings,他們的工程師代碼審查了我們的 Arm64 更改并進(jìn)行了性能改進(jìn)。

在此之前,我們通過 .NET Core 3.0 和 Arm32 添加了對(duì) Arm64 的初始支持。該團(tuán)隊(duì)在最近的幾個(gè)版本中都對(duì) Arm64 進(jìn)行了重大投資,并且在可預(yù)見的未來還將繼續(xù)。在 .NET 6 中,我們的主要重點(diǎn)是在macOS 和 Windows Arm64 操作系統(tǒng)上支持新的 Apple Silicon 芯片和x64 仿真場景。

您可以在 macOS 11+ 和 Windows 11+ Arm64 操作系統(tǒng)上安裝 Arm64 和 x64 版本的 .NET。我們必須做出多項(xiàng)設(shè)計(jì)選擇和產(chǎn)品更改以確保有效。

我們的策略是“親原生架構(gòu)”。我們建議您始終使用與原生架構(gòu)匹配的 SDK,即 macOS 和 Windows Arm64 上的 Arm64 SDK。SDK 是一個(gè)龐大的軟件體。與仿真相比,在 Arm64 芯片上本地運(yùn)行的性能要高得多。我們已更新 CLI 以簡化此操作。我們永遠(yuǎn)不會(huì)專注于優(yōu)化模擬 x64。

默認(rèn)情況下,如果您dotnet run使用 Arm64 SDK 的 .NET 6 應(yīng)用程序,它將作為 Arm64 運(yùn)行。您可以使用參數(shù)輕松切換到以 x64 運(yùn)行,例如. 相同的論點(diǎn)適用于其他 CLI 動(dòng)詞。有關(guān)詳細(xì)信息,請(qǐng)參閱適用于 macOS 和 Windows Arm64 的 .NET 6 RC2 更新。-adotnet run -a x64

我想確保涵蓋了一個(gè)微妙之處。當(dāng)您使用 時(shí),SDK 仍以 Arm64 的形式在本機(jī)運(yùn)行。.NET SDK體系結(jié)構(gòu)中存在進(jìn)程邊界存在的固定點(diǎn)。大多數(shù)情況下,一個(gè)進(jìn)程必須全是 Arm64 或全是 x64。我稍微簡化了一點(diǎn),但 .NET CLI 會(huì)等待 SDK 架構(gòu)中的最后一個(gè)進(jìn)程創(chuàng)建,然后將它作為您請(qǐng)求的芯片架構(gòu)啟動(dòng),例如 x64。這就是您的代碼運(yùn)行的過程。這樣,您作為開發(fā)人員可以獲得 Arm64 的好處,但您的代碼可以在它需要的過程中運(yùn)行。這僅在您需要以 x64 格式運(yùn)行某些代碼時(shí)才相關(guān)。如果你不這樣做,那么你可以一直以 Arm64 的方式運(yùn)行一切,這很好。-a x64

Arm64 支持

以下是您需要了解的關(guān)鍵點(diǎn),適用于 macOS 和 Windows Arm64:

  • 支持并推薦 .NET 6 Arm64 和 x64 SDK。

  • 支持所有支持的 Arm64 和 x64 運(yùn)行時(shí)。

  • .NET Core 3.1 和 .NET 5 SDK 可以工作,但提供的功能較少,并且在某些情況下不完全受支持。

  • dotnet test尚不能與 x64 仿真一起正常工作。我們正在為此努力。dotnet test將作為 6.0.200 版本的一部分進(jìn)行改進(jìn),可能更早。

有關(guān)更完整的信息,請(qǐng)參閱.NET 對(duì) macOS 和 Windows Arm64 的支持。

本次討論中缺少 Linux。它不像 macOS 和 Windows 那樣支持 x64 仿真。因此,這些新的 CLI 特性和支持方法并不直接適用于 Linux,Linux 也不需要它們。

Windows  Arm64

我們有一個(gè)簡單的工具來演示.NET 運(yùn)行的環(huán)境

C:Usersrich>dotnet tool install -g dotnet-runtimeinfo
You can invoke the tool using the following command: dotnet-runtimeinfo
Tool 'dotnet-runtimeinfo' (version '1.0.5') was successfully installed.

C:Usersrich>dotnet runtimeinfo
         42
         42              ,d                             ,d
         42              42                             42
 ,adPPYb,42  ,adPPYba, MM42MMM 8b,dPPYba,   ,adPPYba, MM42MMM
a8"    `Y42 a8"     "8a  42    42P'   `"8a a8P_____42   42
8b       42 8b       d8  42    42       42 8PP"""""""   42
"8a,   ,d42 "8a,   ,a8"  42,   42       42 "8b,   ,aa   42,
 `"8bbdP"Y8  `"YbbdP"'   "Y428 42       42  `"Ybbd8"'   "Y428

**.NET information
Version: 6.0.0
FrameworkDescription: .NET 6.0.0-rtm.21522.10
Libraries version: 6.0.0-rtm.21522.10
Libraries hash: 4822e3c3aa77eb82b2fb33c9321f923cf11ddde6

**Environment information
ProcessorCount: 8
OSArchitecture: Arm64
OSDescription: Microsoft Windows 10.0.22494
OSVersion: Microsoft Windows NT 10.0.22494.0

如您所見,該工具在 Windows Arm64 上本機(jī)運(yùn)行。我將向您展示http://ASP.NETCore 的外觀。





macOS Arm64

并且您可以看到在 macOS Arm64 上的體驗(yàn)是相似的,并且還展示了架構(gòu)定位。

rich@MacBook-Air app % dotnet --version
6.0.100
rich@MacBook-Air app % dotnet --info | grep RID
 RID:         osx-arm64
rich@MacBook-Air app % cat Program.cs 
using System.Runtime.InteropServices;
using static System.Console;

WriteLine($"Hello, {RuntimeInformation.OSArchitecture} from {RuntimeInformation.FrameworkDescription}!");
rich@MacBook-Air app % dotnet run
Hello, Arm64 from .NET 6.0.0-rtm.21522.10!
rich@MacBook-Air app % dotnet run -a x64
Hello, X64 from .NET 6.0.0-rtm.21522.10!
rich@MacBook-Air app %

該圖展示了 Arm64 執(zhí)行是 Arm64 SDK 的默認(rèn)執(zhí)行,以及使用參數(shù)在面向 Arm64 和 x64 之間切換是多么容易。完全相同的體驗(yàn)適用于 Windows Arm64。-a





此圖像演示了相同的內(nèi)容,但使用http://ASP.NETCore。我使用的 .NET 6 Arm64 SDK 與您在上圖中看到的相同。

Arm64 上的 Docker

Docker 支持在本機(jī)架構(gòu)和仿真中運(yùn)行的容器,本機(jī)架構(gòu)是默認(rèn)的。這看起來很明顯,但當(dāng)大多數(shù) Docker Hub 目錄面向 x64 時(shí)可能會(huì)令人困惑。您可以使用來請(qǐng)求 x64 圖像。--platform linux/amd64

我們僅支持在 Arm64 操作系統(tǒng)上運(yùn)行 Linux Arm64 .NET 容器映像。這是因?yàn)槲覀儚膩聿恢С衷?a target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043">QEMU 中運(yùn)行 .NET ,這是 Docker 用于架構(gòu)模擬的??磥磉@可能是由于 QEMU 的限制。





此圖片展示了我們維護(hù)控制臺(tái)例子:。這是一個(gè)有趣的示例,因?yàn)樗恍┯糜诖蛴?CPU 和內(nèi)存限制信息的基本邏輯,您可以使用它們。我展示的圖像設(shè)置了 CPU 和內(nèi)存限制。mcr.microsoft.com/dotnet/samples

自己試試: docker run --rm mcr.microsoft.com/dotnet/samples

Arm64 性能

Apple Silicon 和 x64 仿真支持項(xiàng)目非常重要,但是,我們也普遍提高了 Arm64 性能。





此圖展示了將堆棧幀的內(nèi)容清零方面的改進(jìn),這是一種常見操作。綠線是新行為,而橙色線是另一個(gè)(不太有益的)實(shí)驗(yàn),兩者都相對(duì)于基線有所改進(jìn),由藍(lán)線表示。對(duì)于這個(gè)測試,越低越好。

容器

.NET 6 更適合容器,主要基于本文中討論的所有改進(jìn),適用于 Arm64 和 x64。我們還進(jìn)行了關(guān)鍵更改,這將有助于各種場景。使用 .NET 6 驗(yàn)證容器改進(jìn)演示了其中一些改進(jìn)正在一起測試。

Windows 容器改進(jìn)和新的環(huán)境變量也已包含在 11 月 9 日(明天)發(fā)布的 11 月 .NET Framework 4.8 容器更新中。

發(fā)行說明可在我們的 docker 存儲(chǔ)庫中找到:


Windows Docker

.NET 6 添加了對(duì) Windows 進(jìn)程隔離容器的支持。如果您在 Azure Kubernetes 服務(wù) (AKS) 中使用Windows 容器,則您依賴于進(jìn)程隔離的容器。進(jìn)程隔離容器可以被認(rèn)為與 Linux 容器非常相似。Linux 容器使用cgroups,Windows 進(jìn)程隔離容器使用Job Objects。Windows 還提供 Hyper-V 容器,它通過更大的虛擬化提供更大的隔離。Hyper-V 容器在 .NET 6 中沒有變化。

此更改的主要價(jià)值是現(xiàn)在將報(bào)告 Windows 進(jìn)程隔離容器的正確值。如果在 64 核機(jī)器上創(chuàng)建 2 核容器,將返回. 在以前的版本中,此屬性將報(bào)告機(jī)器上的處理器總數(shù),與 Docker CLI、Kubernetes 或其他容器編排器/運(yùn)行時(shí)指定的限制無關(guān)。該值被 .NET 的各個(gè)部分用于縮放目的,包括 .NET 垃圾收集器(盡管它依賴于相關(guān)的較低級(jí)別的 API)。社區(qū)庫也依賴此 API 進(jìn)行擴(kuò)展。Environment.ProcessorCountEnvironment.ProcessorCount2

我們最近在 AKS 上使用大量 Pod 生產(chǎn)的 Windows 容器上與客戶一起驗(yàn)證了這項(xiàng)新功能。他們能夠用50%的內(nèi)存運(yùn)行成功(相比,其典型的配置),先前導(dǎo)致了水平OutOfMemoryException和StackOverflowException例外。他們沒有花時(shí)間找到最小內(nèi)存配置,但我們猜測它明顯低于他們典型內(nèi)存配置的 50%。由于這一變化,他們將轉(zhuǎn)向更便宜的 Azure 配置,從而節(jié)省資金。這是一個(gè)不錯(cuò)的、輕松的勝利,只需升級(jí)即可。

優(yōu)化縮放

我們從用戶那里聽到一些應(yīng)用程序在報(bào)告正確值時(shí)無法實(shí)現(xiàn)最佳縮放。如果這聽起來與您剛剛閱讀的 Windows Containers 內(nèi)容相反,那么它有點(diǎn)像。.NET 6 現(xiàn)在提供DOTNET_PROCESSOR_COUNT 環(huán)境變量來手動(dòng)控制 的值。在典型用例中,應(yīng)用程序可能在 64 核機(jī)器上配置有 4 個(gè)核,并且在 8 核或 16 核方面具有最佳擴(kuò)展性。此環(huán)境變量可用于啟用該縮放。Environment.ProcessorCountEnvironment.ProcessorCount

這個(gè)模型可能看起來很奇怪,其中和(通過 Docker CLI)值可能不同。默認(rèn)情況下,容器運(yùn)行時(shí)面向核心等效項(xiàng),而不是實(shí)際核心。這意味著,當(dāng)您說需要 4 個(gè)內(nèi)核時(shí),您將獲得 4 個(gè)內(nèi)核的等效 CPU 時(shí)間,但是您的應(yīng)用程序可能(理論上)在更多內(nèi)核上運(yùn)行,甚至在短時(shí)間內(nèi)在 64 核機(jī)器上運(yùn)行所有 64 個(gè)內(nèi)核。這可能會(huì)使您的應(yīng)用程序在 4 個(gè)以上的線程上更好地?cái)U(kuò)展(繼續(xù)示例),并且分配更多可能是有益的。這假設(shè)線程分配基于 的值。如果您選擇設(shè)置更高的值,您的應(yīng)用可能會(huì)使用更多內(nèi)存。對(duì)于某些工作負(fù)載,這是一個(gè)簡單的權(quán)衡。至少,這是一個(gè)您可以測試的新選項(xiàng)。Environment.ProcessorCount--cpusEnvironment.ProcessorCount

Linux 和 Windows 容器均支持此新功能。

Docker 還提供了 CPU 組功能,您的應(yīng)用程序可以關(guān)聯(lián)到特定的內(nèi)核。在這種情況下不推薦使用此功能,因?yàn)閼?yīng)用程序可以訪問的內(nèi)核數(shù)量是具體定義的。我們還看到了將它與 Hyper-V 容器一起使用時(shí)的一些問題,它并不是真正適用于這種隔離模式。

Debian 11 “靶心”

我們密切關(guān)注Linux 發(fā)行版的生命周期和發(fā)布計(jì)劃,并嘗試代表您做出最佳選擇。Debian 是我們用于默認(rèn) Linux 映像的 Linux 發(fā)行版。如果您6.0從我們的一個(gè)容器存儲(chǔ)庫中提取標(biāo)簽,您將提取一個(gè) Debian 映像(假設(shè)您使用的是 Linux 容器)。對(duì)于每個(gè)新的 .NET 版本,我們都會(huì)考慮是否應(yīng)該采用新的 Debian 版本。

作為政策問題,我們不會(huì)為了我們的便利標(biāo)簽而更改 Debian 版本,例如6.0中期發(fā)布。如果我們這樣做了,某些應(yīng)用程序肯定會(huì)崩潰。這意味著,在發(fā)布之初選擇 Debian 版本非常重要。此外,這些圖像得到了很多使用,主要是因?yàn)樗鼈儽弧昂脴?biāo)簽”引用。

Debian 和 .NET 版本自然不是一起計(jì)劃的。當(dāng)我們開始 .NET 6 時(shí),我們看到 Debian “bullseye”可能會(huì)在 2021 年發(fā)布。我們決定從發(fā)布之初就押注于 Bullseye。我們開始使用.NET 6 Preview 1發(fā)布基于 Bullseye 的容器映像,并決定不再回頭。賭注是 .NET 6 版本將在與 Bullseye 版本的競爭中失敗。到 8 月 8 日,我們?nèi)匀徊恢?Bullseye 什么時(shí)候發(fā)貨,在我們自己的版本發(fā)布前三個(gè)月,即 11 月 8 日。我們不想在預(yù)覽版 Linux 上發(fā)布生產(chǎn) .NET 6,但我們堅(jiān)持到了我們會(huì)輸?shù)暨@場比賽的計(jì)劃。

當(dāng)Debian 11 “bullseye”于 8 月 14 日發(fā)布時(shí),我們感到驚喜。我們輸了比賽,但贏了賭注。這意味著 .NET 6 用戶從第一天起就默認(rèn)獲得最好和最新的 Debian。我們相信 Debian 11 和 .NET 6 將成為許多用戶的絕佳組合。對(duì)不起,克星,我們撞到了靶心。

較新的發(fā)行版在其軟件包源中包含各種軟件包的較新主要版本,并且通??梢愿斓孬@得CVE 修復(fù)。這是對(duì)較新內(nèi)核的補(bǔ)充。新的發(fā)行版可以更好地為用戶服務(wù)。

展望未來,不久我們將開始計(jì)劃對(duì)Ubuntu 22.04 的支持。Ubuntu是另一個(gè) Debian 家族發(fā)行版,深受 .NET 開發(fā)人員的歡迎。我們希望為新的 Ubuntu LTS 版本提供當(dāng)日支持。

Tianon Gravi 致敬,他為社區(qū)維護(hù) Debian 映像并在我們遇到問題時(shí)幫助我們。

網(wǎng)絡(luò)監(jiān)視器

dotnet monitor是容器的重要診斷工具。它作為 sidecar 容器鏡像已經(jīng)有一段時(shí)間了,但處于不受支持的“實(shí)驗(yàn)”狀態(tài)。作為 .NET 6 的一部分,我們將發(fā)布一個(gè)完全支持生產(chǎn)的基于 .NET 6 的dotnet monitor映像。

dotnet monitor已被 Azure 應(yīng)用服務(wù)用作其http://ASP.NETCore Linux 診斷體驗(yàn)的實(shí)現(xiàn)細(xì)節(jié)。這是預(yù)期的場景之一,建立在 dotnet monitor 之上以提供更高級(jí)別和更高價(jià)值的體驗(yàn)。

您現(xiàn)在可以拉取新圖像:

docker pull mcr.microsoft.com/dotnet/monitor:6.0

dotnet monitor使從 .NET 進(jìn)程訪問診斷信息(日志、跟蹤、進(jìn)程轉(zhuǎn)儲(chǔ))變得更加容易。在臺(tái)式機(jī)上很容易訪問您想要的所有診斷信息,但是,例如,那些熟悉的技術(shù)在使用容器的生產(chǎn)中可能不起作用。dotnet monitor提供了一種統(tǒng)一的方法來收集這些診斷工件,無論是在您的臺(tái)式機(jī)上還是在 Kubernetes 集群中運(yùn)行。收集這些診斷工件有兩種不同的機(jī)制:

  • 用于臨時(shí)收集工件的HTTP API。當(dāng)您已經(jīng)知道您的應(yīng)用程序遇到問題并且您有興趣收集更多信息時(shí),您可以調(diào)用這些 API 端點(diǎn)。

  • 基于規(guī)則的配置觸發(fā)器,用于始終在線的工件集合。您可以配置規(guī)則以在滿足所需條件時(shí)收集診斷數(shù)據(jù),例如,在持續(xù)高 CPU 時(shí)收集進(jìn)程轉(zhuǎn)儲(chǔ)。

dotnet monitor為 .NET 應(yīng)用程序提供了一個(gè)通用的診斷 API,可以使用任何工具在任何地方使用?!巴ㄓ?API”不是 .NET API,而是您可以調(diào)用和查詢的 Web API。dotnet monitor包括一個(gè) ASP.NET Web 服務(wù)器,它直接與 .NET 運(yùn)行時(shí)中的診斷服務(wù)器交互并公開數(shù)據(jù)。的設(shè)計(jì)dotnet monitor支持生產(chǎn)中的高性能監(jiān)控和安全使用,以控制對(duì)特權(quán)信息的訪問。dotnet monitor通過非互聯(lián)網(wǎng)可尋址的unix 域套接字與運(yùn)行時(shí)交互——跨越容器邊界。該模型通信模型非常適合此用例。

結(jié)構(gòu)化JSON 日志

JSON格式現(xiàn)在是默認(rèn)控制臺(tái)記錄f="https://hub.docker.com/_/microsoft-dotnet-aspnet">aspnet.NET 6容器圖像。.NET 5 中的默認(rèn)設(shè)置為簡單的控制臺(tái)格式化程序。進(jìn)行此更改是為了擁有一個(gè)默認(rèn)配置,該配置可與依賴于機(jī)器可讀格式(如 JSON)的自動(dòng)化工具配合使用。

圖像的輸出現(xiàn)在如下所示aspnet:

$ docker run --rm -it -p 8000:80 mcr.microsoft.com/dotnet/samples:aspnetapp
{"EventId":60,"LogLevel":"Warning","Category":"Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository","Message":"Storing keys in a directory u0027/root/.aspnet/DataProtection-Keysu0027 that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.","State":{"Message":"Storing keys in a directory u0027/root/.aspnet/DataProtection-Keysu0027 that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.","path":"/root/.aspnet/DataProtection-Keys","{OriginalFormat}":"Storing keys in a directory u0027{path}u0027 that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed."}}
{"EventId":35,"LogLevel":"Warning","Category":"Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager","Message":"No XML encryptor configured. Key {86cafacf-ab57-434a-b09c-66a929ae4fd7} may be persisted to storage in unencrypted form.","State":{"Message":"No XML encryptor configured. Key {86cafacf-ab57-434a-b09c-66a929ae4fd7} may be persisted to storage in unencrypted form.","KeyId":"86cafacf-ab57-434a-b09c-66a929ae4fd7","{OriginalFormat}":"No XML encryptor configured. Key {KeyId:B} may be persisted to storage in unencrypted form."}}
{"EventId":14,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Now listening on: http://[::]:80","State":{"Message":"Now listening on: http://[::]:80","address":"http://[::]:80","{OriginalFormat}":"Now listening on: {address}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Application started. Press Ctrlu002BC to shut down.","State":{"Message":"Application started. Press Ctrlu002BC to shut down.","{OriginalFormat}":"Application started. Press Ctrlu002BC to shut down."}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Hosting environment: Production","State":{"Message":"Hosting environment: Production","envName":"Production","{OriginalFormat}":"Hosting environment: {envName}"}}
{"EventId":0,"LogLevel":"Information","Category":"Microsoft.Hosting.Lifetime","Message":"Content root path: /app","State":{"Message":"Content root path: /app","contentRoot":"/app","{OriginalFormat}":"Content root path: {contentRoot}"}}

可以通過設(shè)置或取消設(shè)置Logging__Console__FormatterName環(huán)境變量或通過代碼更改來更改記錄器格式類型(有關(guān)更多詳細(xì)信息,請(qǐng)參閱控制臺(tái)日志格式)。

更改后,您將看到如下輸出(就像 .NET 5):

$ docker run --rm -it -p 8000:80 -e Logging__Console__FormatterName="" mcr.microsoft.com/dotnet/samples:aspnetapp
warn: Microsoft.AspNetCore.DataProtection.Repositories.FileSystemXmlRepository[60]
      Storing keys in a directory '/root/.aspnet/DataProtection-Keys' that may not be persisted outside of the container. Protected data will be unavailable when container is destroyed.
warn: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[35]
      No XML encryptor configured. Key {8d4ddd1d-ccfc-4898-9fe1-3e7403bf23a0} may be persisted to storage in unencrypted form.
info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://[::]:80
info: Microsoft.Hosting.Lifetime[0]
      Application started. Press Ctrl+C to shut down.
info: Microsoft.Hosting.Lifetime[0]
      Hosting environment: Production
info: Microsoft.Hosting.Lifetime[0]
      Content root path: /app

注意:此更改不會(huì)影響開發(fā)人員計(jì)算機(jī)上的 .NET SDK,與dotnet run. 此更改特定于aspnet容器映像。

支持 OpenTelemetry 指標(biāo)

我們一直在為最近的幾個(gè) .NET 版本添加對(duì) OpenTelemetry 的支持,作為我們對(duì)可觀察性的關(guān)注的一部分。在 .NET 6 中,我們添加了對(duì)OpenTelemetry Metrics API 的支持。通過添加對(duì) OpenTelemetry 的支持,您的應(yīng)用程序可以與其他OpenTelemetry系統(tǒng)無縫互操作。

System.Diagnostics.MetricsOpenTelemetry Metrics API 規(guī)范的 .NET 實(shí)現(xiàn)。Metrics API 是專門為處理原始測量而設(shè)計(jì)的,目的是高效且同時(shí)地生成這些測量的連續(xù)摘要。

API 包括Meter可用于創(chuàng)建儀器對(duì)象的類。這些API暴露四個(gè)儀器類:Counter,Histogram,ObservableCounter,并ObservableGauge支持不同的指標(biāo)方案。此外,API 公開MeterListener該類以允許偵聽儀器的記錄測量以進(jìn)行聚合和分組。

OpenTelemetry .NET實(shí)現(xiàn)將擴(kuò)展到使用這些新的API,其中新增的指標(biāo)可觀察方案的支持。

庫測量記錄示例

    Meter meter = new Meter("io.opentelemetry.contrib.mongodb", "v1.0");
    Counter counter = meter.CreateCounter("Requests");
    counter.Add(1);
    counter.Add(1, KeyValuePair.Create("request", "read"));

聽力示例

    MeterListener listener = new MeterListener();
    listener.InstrumentPublished = (instrument, meterListener) =>
    {
        if (instrument.Name == "Requests" && instrument.Meter.Name == "io.opentelemetry.contrib.mongodb")
        {
            meterListener.EnableMeasurementEvents(instrument, null);
        }
    };
    listener.SetMeasurementEventCallback((instrument, measurement, tags, state) =>
    {
        Console.WriteLine($"Instrument: {instrument.Name} has recorded the measurement {measurement}");
    });
    listener.Start();

Windows 窗體

我們繼續(xù)在 Windows 窗體中進(jìn)行關(guān)鍵改進(jìn)。.NET 6 包括更好的控件可訪問性、設(shè)置應(yīng)用程序范圍默認(rèn)字體的能力、模板更新等。

輔助功能改進(jìn)

在此版本中,我們?cè)黾恿?a target="_blank" rel="nofollow noreferrer" data-za-detail-view-id="1043">UIA提供商為CheckedListBox,LinkLabel,Panel,ScrollBar,TabControl和TrackBar,使像旁白工具和測試自動(dòng)化與應(yīng)用程序的元素進(jìn)行交互。

默認(rèn)字體

現(xiàn)在,您可以設(shè)置默認(rèn)字體的應(yīng)用程序有。Application.SetDefaultFont

void Application.SetDefaultFont(Font font)

最少的應(yīng)用

以下是帶有 .NET 6最小 Windows 窗體應(yīng)用程序

class Program
{
    [STAThread]
    static void Main()
    {
        ApplicationConfiguration.Initialize();
        Application.Run(new Form1());
    }
}

作為 .NET 6 版本的一部分,我們一直在更新大多數(shù)模板,使其更加現(xiàn)代和簡約,包括 Windows 窗體。我們決定讓 Windows 窗體模板更傳統(tǒng)一些,部分原因是需要將該屬性應(yīng)用于應(yīng)用程序入口點(diǎn)。然而,除了立即出現(xiàn)之外,還有更多的玩法。[STAThread]

ApplicationConfiguration.Initialize() 是一個(gè)源代碼生成的 API,它在后臺(tái)發(fā)出以下調(diào)用:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.SetDefaultFont(new Font(...));
Application.SetHighDpiMode(HighDpiMode.SystemAware);

這些調(diào)用的參數(shù)可通過csproj 或 props 文件中的MSBuild 屬性進(jìn)行配置。

Visual Studio 2022 中的 Windows 窗體設(shè)計(jì)器也知道這些屬性(目前它只讀取默認(rèn)字體),并且可以向您展示您的應(yīng)用程序,就像它在運(yùn)行時(shí)一樣:





模板更新

C# 的 Windows 窗體模板已更新,以支持新的應(yīng)用程序引導(dǎo)程序、指令、文件范圍的命名空間和可為空的引用類型。global using

更多運(yùn)行時(shí)設(shè)計(jì)器

現(xiàn)在您可以構(gòu)建通用設(shè)計(jì)器(例如,報(bào)表設(shè)計(jì)器),因?yàn)?.NET 6 具有設(shè)計(jì)器和設(shè)計(jì)器相關(guān)基礎(chǔ)結(jié)構(gòu)的所有缺失部分。有關(guān)更多信息,請(qǐng)參閱此博客文章。

單文件應(yīng)用程序

在 .NET 6 中,已為 Windows 和 macOS 啟用內(nèi)存中單文件應(yīng)用程序。在 .NET 5 中,這種部署類型僅限于 Linux。您現(xiàn)在可以為所有支持的操作系統(tǒng)發(fā)布作為單個(gè)文件部署和啟動(dòng)的單文件二進(jìn)制文件。單文件應(yīng)用程序不再將任何核心運(yùn)行時(shí)程序集提取到臨時(shí)目錄。

這種擴(kuò)展功能基于稱為“超級(jí)主機(jī)”的構(gòu)建塊?!癮pphost”是在非單文件情況下啟動(dòng)應(yīng)用程序的可執(zhí)行文件,例如或。Apphost 包含用于查找運(yùn)行時(shí)、加載它并使用該運(yùn)行時(shí)啟動(dòng)您的應(yīng)用程序的代碼。Superhost 仍然執(zhí)行其中一些任務(wù),但使用所有 CoreCLR 本機(jī)二進(jìn)制文件的靜態(tài)鏈接副本。靜態(tài)鏈接是我們用來啟用單個(gè)文件體驗(yàn)的方法。myapp.exe./myapp

本機(jī)依賴項(xiàng)(如 NuGet 包附帶的依賴項(xiàng))是單文件嵌入的顯著例外。默認(rèn)情況下,它們不包含在單個(gè)文件中。例如,WPF 本機(jī)依賴項(xiàng)不是超級(jí)主機(jī)的一部分,導(dǎo)致除了單文件應(yīng)用程序之外還有其他文件。您可以使用該設(shè)置IncludeNativeLibrariesForSelfExtract來嵌入和提取本機(jī)依賴項(xiàng)。

靜態(tài)分析

我們改進(jìn)了單文件分析器以允許自定義警告。如果您的 API 在單文件發(fā)布中不起作用,您現(xiàn)在可以使用該屬性對(duì)其進(jìn)行標(biāo)記,如果啟用了分析器,則會(huì)出現(xiàn)警告。添加該屬性還將使方法中與單個(gè)文件相關(guān)的所有警告靜音,因此您可以使用該警告將警告向上傳播到您的公共 API。[RequiresAssemblyFiles]

設(shè)置為 時(shí),會(huì)自動(dòng)為exe項(xiàng)目啟用單文件分析器,但您也可以通過設(shè)置為為任何項(xiàng)目啟用它。如果您想支持庫作為單個(gè)文件應(yīng)用程序的一部分,這會(huì)很有幫助。PublishSingleFiletrueEnableSingleFileAnalysistrue

在 .NET 5 中,我們添加了警告和其他一些在單文件包中表現(xiàn)不同的 API。Assembly.Location

壓縮

單文件包現(xiàn)在支持壓縮,可以通過將屬性設(shè)置EnableCompressionInSingleFile為true. 在運(yùn)行時(shí),文件會(huì)根據(jù)需要解壓縮到內(nèi)存中。壓縮可以為某些場景提供巨大的空間節(jié)省。

讓我們看一下與NuGet 包資源管理器一起使用的帶壓縮和不帶壓縮的單個(gè)文件發(fā)布。

無壓縮:172 MB





壓縮后:71.6 MB





壓縮可以顯著增加應(yīng)用程序的啟動(dòng)時(shí)間,尤其是在 Unix 平臺(tái)上。Unix 平臺(tái)具有無法與壓縮一起使用的無復(fù)制快速啟動(dòng)路徑。您應(yīng)該在啟用壓縮后測試您的應(yīng)用,看看額外的啟動(dòng)成本是否可以接受。

單文件調(diào)試

單文件應(yīng)用程序目前只能使用平臺(tái)調(diào)試器(如 WinDBG)進(jìn)行調(diào)試。我們正在考慮在 Visual Studio 2022 的更高版本中添加 Visual Studio 調(diào)試。

macOS 上的單文件簽名

單文件應(yīng)用程序現(xiàn)在滿足 macOS 上的 Apple 公證和簽名要求。在具體的變化涉及到我們?cè)陔x散文件布局方面構(gòu)建單個(gè)文件的應(yīng)用程序的方式。

蘋果開始執(zhí)行新規(guī)定簽署和公證MacOS的卡特琳娜。我們一直在與 Apple 密切合作,以了解要求,并尋找解決方案,使 .NET 等開發(fā)平臺(tái)能夠在該環(huán)境中良好運(yùn)行。在最近的幾個(gè) .NET 版本中,我們已經(jīng)對(duì)產(chǎn)品進(jìn)行了更改并記錄了用戶工作流程,以滿足 Apple 的要求。剩下的差距之一是單文件簽名,這是在 macOS 上分發(fā) .NET 應(yīng)用程序的要求,包括在 macOS 商店中。

IL 修整

該團(tuán)隊(duì)一直致力于為多個(gè)版本進(jìn)行 IL 修整。.NET 6 代表了這一旅程的重要一步。我們一直在努力使更激進(jìn)的修剪模式安全且可預(yù)測,因此有信心將其設(shè)為默認(rèn)值。以前是選擇加入功能,現(xiàn)在是默認(rèn)功能。TrimMode=link

我們有一個(gè)三管齊下的修剪策略:

  • 提高平臺(tái)的修剪能力。

  • 對(duì)平臺(tái)進(jìn)行注釋以提供更好的警告并使其他人也能這樣做。

  • 在此基礎(chǔ)上,使默認(rèn)修剪模式更加激進(jìn),以便輕松將應(yīng)用程序變小。

由于使用未注釋反射的應(yīng)用程序的結(jié)果不可靠,因此修剪之前一直處于預(yù)覽狀態(tài)。有了修剪警告,體驗(yàn)現(xiàn)在應(yīng)該是可預(yù)測的。沒有修剪警告的應(yīng)用程序應(yīng)該正確修剪并且在運(yùn)行時(shí)觀察到行為沒有變化。目前,只有核心 .NET 庫已經(jīng)完全注釋用于修剪,但我們希望看到生態(tài)系統(tǒng)注釋用于修剪并成為修剪兼容

減少應(yīng)用程序大小

讓我們來看看使用crossgen 的這種修剪改進(jìn),它是 SDK 工具之一。可以只用一些修剪警告來修剪它,crossgen 團(tuán)隊(duì)能夠解決這些問題。

首先,讓我們將 crossgen 發(fā)布為一個(gè)獨(dú)立的應(yīng)用程序,無需修剪。它是 80 MB(包括 .NET 運(yùn)行時(shí)和所有庫)。





然后我們可以嘗試(現(xiàn)在是舊版).NET 5 默認(rèn)修剪模式,copyused. 結(jié)果下降到 55 MB。





新的 .NET 6 默認(rèn)修剪模式link將自包含文件大小進(jìn)一步降低到 36MB。





我們希望新的link修剪模式能更好地滿足修剪的期望:顯著的節(jié)省和可預(yù)測的結(jié)果。

默認(rèn)啟用警告

修剪警告告訴您修剪可能會(huì)刪除運(yùn)行時(shí)使用的代碼的地方。這些警告以前在默認(rèn)情況下被禁用,因?yàn)榫娣浅`须s,主要是由于 .NET 平臺(tái)沒有作為第一類場景參與修剪。

我們對(duì) .NET 庫的大部分進(jìn)行了注釋,以便它們生成準(zhǔn)確的修剪警告。因此,我們認(rèn)為是時(shí)候默認(rèn)啟用修剪警告了。http://ASP.NETCore 和 Windows 桌面運(yùn)行時(shí)庫尚未注釋。我們計(jì)劃接下來(.NET 6 之后)注釋http://ASP.NET服務(wù)組件。我們希望看到社區(qū)在 .NET 6 發(fā)布后對(duì) NuGet 庫進(jìn)行注釋。

您可以通過設(shè)置為來禁用警告true。

更多信息:

與本機(jī) AOT 共享

我們也為Native AOT 實(shí)驗(yàn)實(shí)施了相同的修剪警告,這應(yīng)該會(huì)以大致相同的方式改善 Native AOT 編譯體驗(yàn)。

數(shù)學(xué)

我們顯著改進(jìn)了數(shù)學(xué) API。社區(qū)一些人已經(jīng)在享受這些改進(jìn)

面向性能的 API

面向性能的數(shù)學(xué) API 已添加到 System.Math。如果底層硬件支持,它們的實(shí)現(xiàn)是硬件加速的。

新 API:

  • SinCos用于同時(shí)計(jì)算Sin和Cos。

  • ReciprocalEstimate用于計(jì)算 的近似值。1 / x

  • ReciprocalSqrtEstimate用于計(jì)算 的近似值。1 / Sqrt(x)

新的重載:

  • Clamp、DivRem、Min、 和Max支持nint和nuint。

  • Abs和Sign支持nint。

  • DivRem返回 a 的變體tuple。

性能改進(jìn):

大整數(shù)性能

從十進(jìn)制和十六進(jìn)制字符串解析 BigIntegers已得到改進(jìn)。我們看到了高達(dá) 89% 的改進(jìn),如下圖所示(越低越好)。





歸功于約瑟夫·達(dá)席爾瓦。

Complex API 現(xiàn)在注釋為 readonly

href="https://github.com/dotnet/runtime/pull/51797/">現(xiàn)在System.Numerics.Complexreadonly對(duì)各種API 進(jìn)行了注釋,以確保不會(huì)為readonly通過in.

感謝hrrrrustic。

BitConverter 現(xiàn)在支持浮點(diǎn)到無符號(hào)整數(shù)比特轉(zhuǎn)換

BitConverter ref="https://github.com/dotnet/runtime/pull/53784">現(xiàn)在支持DoubleToUInt64Bits,HalfToUInt16Bits,SingleToUInt32Bits,UInt16BitsToHalf,UInt32BitsToSingle,和UInt64BitsToDouble。這應(yīng)該可以在需要時(shí)更容易地進(jìn)行浮點(diǎn)位操作。

感謝米哈爾Petryka。

BitOperations 支持附加功能

BitOperations現(xiàn)在支持IsPow2、RoundUpToPowerOf2為現(xiàn)有函數(shù)href="https://github.com/dotnet/runtime/pull/58733">提供nint/nuint重載。

感謝約翰·凱利,霍耀元羅賓·林德納。

Vector, Vector2, Vector3, 和Vector4改進(jìn)

Vectorref="https://github.com/dotnet/runtime/pull/50832">現(xiàn)在支持nintnuintC# 9 中添加原始類型。例如,此更改應(yīng)該可以更輕松地使用帶有指針或平臺(tái)相關(guān)長度類型的 SIMD 指令。

Vectorf="https://github.com/dotnet/runtime/pull/53527">現(xiàn)在支持一種Sum方法來簡化需要計(jì)算向量中所有元素的“水平總和”。感謝伊萬茲拉塔諾夫。

Vector"https://githhttp://ub.com/dotnet/runtime/pull/47150">現(xiàn)在支持通用方法As來簡化在具體類型未知的通用上下文中處理向量。感謝霍耀元

ref="https://github.com/dotnet/runtime/pull/50062">重載支持Span已添加到Vector2、Vector3和Vector4以改善需要加載或存儲(chǔ)向量類型時(shí)的體驗(yàn)。

更好地解析標(biāo)準(zhǔn)數(shù)字格式

我們改進(jìn)了標(biāo)準(zhǔn)數(shù)字類型的解析器,特別是和。他們現(xiàn)在將理解精度要求 > 99 位小數(shù),并將提供精確到那么多位數(shù)的結(jié)果。此外,解析器現(xiàn)在更好地支持方法中的尾隨零。.ToString.TryFormatParse

以下示例演示了前后行為。

  • 32.ToString("C100") -> C132

    • .NET 6: $32.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

    • .NET 5:我們?cè)诟袷交a中存在人為限制,只能處理 <= 99="">= 100,我們將輸入解釋為自定義格式。


  • 32.ToString("H99") -> 扔一個(gè) FormatException

    • .NET 6:拋出 FormatException

    • 這是正確的行為,但在此處調(diào)用它是為了與下一個(gè)示例進(jìn)行對(duì)比。


  • 32.ToString("H100") -> H132

    • .NET 6:拋出 FormatException

    • .NET 5:H是無效的格式說明符。所以,我們應(yīng)該拋出一個(gè)FormatException. 相反,我們將精度 >= 100 解釋為自定義格式的錯(cuò)誤行為意味著我們返回了錯(cuò)誤的值。


  • double.Parse("9007199254740997.0") -> 9007199254740998

    • .NET 6: 9007199254740996.

    • .NET 5:9007199254740997.0不能完全以 IEEE 754 格式表示。使用我們當(dāng)前的舍入方案,正確的返回值應(yīng)該是9007199254740996。但是,輸入的最后一部分迫使解析器錯(cuò)誤地舍入結(jié)果并返回。.09007199254740998


系統(tǒng).文本.Json

System.Text.Json提供了多種高性能的 API 來處理 JSON 文檔。在過去的幾個(gè)版本中,我們添加了新功能,以進(jìn)一步提高 JSON 處理性能并減輕想要從. 此版本包括在這條道路上的繼續(xù),并且是性能的重大進(jìn)步,特別是在序列化器源生成器方面。NewtonSoft.Json

JsonSerializer 源代碼生成

注意:應(yīng)重新編譯使用 .NET 6 RC1 或更早版本的源代碼生成的應(yīng)用程序。

幾乎所有 .NET 序列化程序的支柱都是反射。反射對(duì)于某些場景來說是一項(xiàng)很棒的功能,但不能作為高性能云原生應(yīng)用程序(通常(反)序列化和處理大量 JSON 文檔)的基礎(chǔ)。反射是啟動(dòng)、內(nèi)存使用和程序集修整的問題。

運(yùn)行時(shí)反射的替代方案是編譯時(shí)源代碼生成。在 .NET 6 中,我們將一個(gè)"https://devblogs.microsoft.com/dotnet/try-the-new-system-text-json-source-generator/">新的源生成器作為System.Text.Json. JSON 源生成器可與JsonSerializer多種方式結(jié)合使用并可進(jìn)行配置。

它可以提供以下好處:

  • 減少啟動(dòng)時(shí)間

  • 提高序列化吞吐量

  • 減少私有內(nèi)存使用

  • 刪除運(yùn)行時(shí)使用和System.ReflectionSystem.Reflection.Emit

  • IL 修整兼容性

默認(rèn)情況下,JSON 源生成器為給定的可序列化類型發(fā)出序列化邏輯。JsonSerializer通過生成Utf8JsonWriter直接使用的源代碼,這提供了比使用現(xiàn)有方法更高的性能。簡而言之,源代碼生成器提供了一種在編譯時(shí)為您提供不同實(shí)現(xiàn)的方法,以便使運(yùn)行時(shí)體驗(yàn)更好。

給定一個(gè)簡單類型:

namespace Test
{
    internal class JsonMessage
    {
        public string Message { get; set; }
    }
}

源生成器可以配置為為示例JsonMessage類型的實(shí)例生成序列化邏輯。請(qǐng)注意,類名JsonContext是任意的。您可以為生成的源使用任何您想要的類名。

using System.Text.Json.Serialization;

namespace Test
{
    [JsonSerializable(typeof(JsonMessage)]
    internal partial class JsonContext : JsonSerializerContext
    {
    }
}

使用此模式的序列化程序調(diào)用可能類似于以下示例。此示例提供了可能的最佳性能。

using MemoryStream ms = new();
using Utf8JsonWriter writer = new(ms);

JsonSerializer.Serialize(jsonMessage, JsonContext.Default.JsonMessage);
writer.Flush();

// Writer contains:
// {"Message":"Hello, world!"}

最快和最優(yōu)化的源代碼生成模式——基于Utf8JsonWriter——目前僅可用于序列化。Utf8JsonReader根據(jù)您的反饋,未來可能會(huì)提供類似的反序列化支持——基于——。

源生成器還發(fā)出類型元數(shù)據(jù)初始化邏輯,這也有利于反序列化。要反序列化JsonMessage使用預(yù)生成類型元數(shù)據(jù)的實(shí)例,您可以執(zhí)行以下操作:

JsonSerializer.Deserialize(json, JsonContext.Default.JsonMessage);

JsonSerializer 支持 IAsyncEnumerable

現(xiàn)在,可以(反)序列化JSON陣列IAsyncEnumerable與。以下示例使用流作為數(shù)據(jù)的任何異步源的表示。源可以是本地機(jī)器上的文件,也可以是數(shù)據(jù)庫查詢或 Web 服務(wù) API 調(diào)用的結(jié)果。System.Text.Json

JsonSerializer.SerializeAsync已更新以識(shí)別IAsyncEnumerable值并提供特殊處理。

using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;

static async IAsyncEnumerable PrintNumbers(int n)
{
    for (int i = 0; i < n; i++) yield return i;
}

using Stream stream = Console.OpenStandardOutput();
var data = new { Data = PrintNumbers(3) };
await JsonSerializer.SerializeAsync(stream, data); // prints {"Data":[0,1,2]}

IAsyncEnumerable值僅支持使用異步序列化方法。嘗試使用同步方法進(jìn)行序列化將導(dǎo)致NotSupportedException拋出異常。

流式反序列化需要一個(gè)新的 API 返回. 我們?yōu)榇四康奶砑恿嗽摲椒?,您可以在以下示例中看到。IAsyncEnumerableJsonSerializer.DeserializeAsyncEnumerable

using System;
using System.IO;
using System.Text;
using System.Text.Json;

var stream = new MemoryStream(Encoding.UTF8.GetBytes("[0,1,2,3,4]"));
await foreach (int item in JsonSerializer.DeserializeAsyncEnumerable(stream))
{
    Console.WriteLine(item);
}

此示例將按需反序列化元素,并且在使用特別大的數(shù)據(jù)流時(shí)非常有用。它只支持從根級(jí) JSON 數(shù)組中讀取,盡管將來可能會(huì)根據(jù)反饋放寬。

現(xiàn)有DeserializeAsync方法名義上支持,但在其非流式方法簽名的范圍內(nèi)。它必須將最終結(jié)果作為單個(gè)值返回,如下例所示。IAsyncEnumerable

using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
using System.Text.Json;

var stream = new MemoryStream(Encoding.UTF8.GetBytes(@"{""Data"":[0,1,2,3,4]}"));
var result = await JsonSerializer.DeserializeAsync(stream);
await foreach (int item in result.Data)
{
    Console.WriteLine(item);
}

public class MyPoco
{
    public IAsyncEnumerable Data { get; set; }
}

在此示例中,反序列化器將IAsyncEnumerable在返回反序列化對(duì)象之前緩沖內(nèi)存中的所有內(nèi)容。這是因?yàn)榉葱蛄谢餍枰诜祷亟Y(jié)果之前消耗整個(gè) JSON 值。

System.Text.Json:可寫 DOM 功能

寫JSON DOM功能增加了一個(gè)新的簡單的,高性能的編程模型的。這個(gè)新的 API 很有吸引力,因?yàn)樗苊饬诵枰獜?qiáng)類型的序列化契約,并且與現(xiàn)有類型相比,DOM 是可變的。System.Text.JsonJsonDocument

這個(gè)新的 API 有以下好處:

  • 在不可能或不希望使用POCO類型的情況下,或者當(dāng) JSON 模式不固定且必須檢查時(shí),序列化的輕量級(jí)替代方案。

  • 允許對(duì)大樹的子集進(jìn)行有效修改。例如,可以高效地導(dǎo)航到大型 JSON 樹的子部分并從該子部分讀取數(shù)組或反序列化 POCO。LINQ 也可以與它一起使用。

以下示例演示了新的編程模型。

    // Parse a JSON object
    JsonNode jNode = JsonNode.Parse("{"MyProperty":42}");
    int value = (int)jNode["MyProperty"];
    Debug.Assert(value == 42);
    // or
    value = jNode["MyProperty"].GetValue();
    Debug.Assert(value == 42);

    // Parse a JSON array
    jNode = JsonNode.Parse("[10,11,12]");
    value = (int)jNode[1];
    Debug.Assert(value == 11);
    // or
    value = jNode[1].GetValue();
    Debug.Assert(value == 11);

    // Create a new JsonObject using object initializers and array params
    var jObject = new JsonObject
    {
        ["MyChildObject"] = new JsonObject
        {
            ["MyProperty"] = "Hello",
            ["MyArray"] = new JsonArray(10, 11, 12)
        }
    };

    // Obtain the JSON from the new JsonObject
    string json = jObject.ToJsonString();
    Console.WriteLine(json); // {"MyChildObject":{"MyProperty":"Hello","MyArray":[10,11,12]}}

    // Indexers for property names and array elements are supported and can be chained
    Debug.Assert(jObject["MyChildObject"]["MyArray"][1].GetValue() == 11);

ReferenceHandler.IgnoreCycles

JsonSerializer(System.Text.Json)現(xiàn)在支持在序列化對(duì)象圖時(shí)忽略循環(huán)的能力。該選項(xiàng)的行為與 Newtonsoft.Json 相似。一個(gè)主要區(qū)別是 System.Text.Json 實(shí)現(xiàn)用JSON 標(biāo)記替換引用循環(huán),而不是忽略對(duì)象引用。ReferenceHandler.IgnoreCyclesReferenceLoopHandling.Ignorenull

您可以在以下示例中看到 的行為。在這種情況下,屬性被序列化,因?yàn)樗駝t會(huì)創(chuàng)建一個(gè)循環(huán)。ReferenceHandler.IgnoreCyclesNextnull

class Node
{
    public string Description { get; set; }
    public object Next { get; set; }
}

void Test()
{
    var node = new Node { Description = "Node 1" };
    node.Next = node;

    var opts = new JsonSerializerOptions { ReferenceHandler = ReferenceHandler.IgnoreCycles };

    string json = JsonSerializer.Serialize(node, opts);
    Console.WriteLine(json); // Prints {"Description":"Node 1","Next":null}
}

源代碼構(gòu)建

使用源代碼構(gòu)建,只需使用幾條命令即可在您自己的機(jī)器上從源代碼構(gòu)建 .NET SDK。讓我解釋一下為什么這個(gè)項(xiàng)目很重要。

自 .NET Core 1.0 發(fā)布之前,源代碼構(gòu)建是一個(gè)場景,也是我們與 Red Hat 合作開發(fā)的基礎(chǔ)設(shè)施。幾年后,我們非常接近提供它的完全自動(dòng)化版本。對(duì)于 Red Hat Enterprise Linux (RHEL) .NET 用戶來說,此功能非常重要。紅帽告訴我們,.NET 已經(jīng)發(fā)展成為其生態(tài)系統(tǒng)的重要開發(fā)者平臺(tái)。好的!

Linux 發(fā)行版黃金標(biāo)準(zhǔn)是使用作為發(fā)行版存檔一部分的編譯器和工具鏈構(gòu)建開源代碼。這適用于 .NET 運(yùn)行時(shí)(用 C++ 編寫),但不適用于任何用 C# 編寫的代碼。對(duì)于 C# 代碼,我們使用兩遍構(gòu)建機(jī)制來滿足發(fā)行版要求。這有點(diǎn)復(fù)雜,但了解流程很重要。

Red Hat 使用 .NET SDK (#1) 的 Microsoft 二進(jìn)制構(gòu)建來構(gòu)建 .NET SDK 源代碼,以生成 SDK (#2) 的純開源二進(jìn)制構(gòu)建。之后,使用 SDK 的新版本 (#2) 再次構(gòu)建相同的 SDK 源代碼,以生成可證明的開源 SDK (#3)。.NET SDK (#3) 的最終二進(jìn)制版本隨后可供 RHEL 用戶使用。之后,Red Hat 可以使用相同的 SDK (#3) 來構(gòu)建新的 .NET 版本,而不再需要使用 Microsoft SDK 來構(gòu)建月度更新。

這個(gè)過程可能令人驚訝和困惑。開源發(fā)行版需要由開源工具構(gòu)建。此模式確保不需要 Microsoft 構(gòu)建的 SDK,無論是有意還是無意。作為開發(fā)者平臺(tái),被包含在發(fā)行版中比僅使用兼容許可證有更高的標(biāo)準(zhǔn)。源構(gòu)建項(xiàng)目使 .NET 能夠滿足這一要求。

源代碼構(gòu)建的交付物是一個(gè)源代碼壓縮包。源 tarball 包含 SDK(對(duì)于給定版本)的所有源。從那里,紅帽(或其他組織)可以構(gòu)建自己的 SDK 版本。Red Hat 策略需要使用從源代碼構(gòu)建的工具鏈來生成二進(jìn)制 tar 球,這就是他們使用兩遍方法的原因。但是源代碼構(gòu)建本身不需要這種兩遍方法。

在 Linux 生態(tài)系統(tǒng)中,為給定組件提供源代碼和二進(jìn)制包或 tarball 是很常見的。我們已經(jīng)有可用的二進(jìn)制 tarball,現(xiàn)在也有源 tarball。這使得 .NET 與標(biāo)準(zhǔn)組件模式相匹配。

.NET 6 的重大改進(jìn)是源 tarball 現(xiàn)在是我們構(gòu)建的產(chǎn)品。過去,它需要大量的人工來制作,這也導(dǎo)致將源 tarball 傳送到 Red Hat 的延遲很長。雙方對(duì)此都不滿意。

五年多以來,我們一直與紅帽在這個(gè)項(xiàng)目上密切合作。它取得了成功,在很大程度上要?dú)w功于我們有幸與之共事的優(yōu)秀紅帽工程師的努力。其他發(fā)行版和組織已經(jīng)并將從他們的努力中受益。

附帶說明一下,源代碼構(gòu)建是朝著可重現(xiàn)構(gòu)建邁出的一大步,我們也堅(jiān)信這一點(diǎn)。.NET SDK 和 C# 編譯器具有重要的可重現(xiàn)構(gòu)建功能。

庫 API

除了已經(jīng)涵蓋的 API 之外,還添加了以下 API。

WebSocket 壓縮

壓縮對(duì)于通過網(wǎng)絡(luò)傳輸?shù)娜魏螖?shù)據(jù)都很重要。WebSockets 現(xiàn)在啟用壓縮。我們使用了WebSockets的擴(kuò)展實(shí)現(xiàn),RFC 7692。它允許使用該算法壓縮 WebSockets 消息有效負(fù)載。此功能是用戶對(duì) GitHub 上 Networking 的最高要求之一。permessage-deflateDEFLATE

與加密一起使用的壓縮可能會(huì)導(dǎo)致攻擊,例如CRIMEBREACH。這意味著不能在單個(gè)壓縮上下文中將秘密與用戶生成的數(shù)據(jù)一起發(fā)送,否則可以提取該秘密。為了讓用戶注意這些影響并幫助他們權(quán)衡風(fēng)險(xiǎn),我們將其中一個(gè)關(guān)鍵 API 命名為DangerousDeflateOptions。我們還添加了對(duì)特定消息關(guān)閉壓縮的功能,因此如果用戶想要發(fā)送機(jī)密,他們可以在不壓縮的情況下安全地發(fā)送。

禁用壓縮時(shí) WebSocket內(nèi)存占用減少了約 27%。

從客戶端啟用壓縮很容易,如下例所示。但是,請(qǐng)記住,服務(wù)器可以協(xié)商設(shè)置,例如請(qǐng)求較小的窗口或完全拒絕壓縮。

var cws = new ClientWebSocket();
cws.Options.DangerousDeflateOptions = new WebSocketDeflateOptions()
{
    ClientMaxWindowBits = 10,
    ServerMaxWindowBits = 10
};

還添加了對(duì) ASP.NET Core 的 WebSocket 壓縮支持。

感謝伊萬茲拉塔諾夫

襪子代理支持

SOCKS是一種代理服務(wù)器實(shí)現(xiàn),可以處理任何 TCP 或 UDP 流量,使其成為一個(gè)非常通用的系統(tǒng)。這是一個(gè)長期存在的社區(qū)請(qǐng)求,已添加到 .NET 6 中

此更改增加了對(duì) Socks4、Socks4a 和 Socks5 的支持。例如,它允許通過 SSH 測試外部連接或連接到 Tor 網(wǎng)絡(luò)。

該WebProxy班現(xiàn)在接受socks的方案,你可以在下面的例子中看到。

var handler = new HttpClientHandler
{
    Proxy = new WebProxy("socks5://127.0.0.1", 9050)
};
var httpClient = new HttpClient(handler);

感謝霍耀元。

Microsoft.Extensions.Hosting — ConfigureHostOptions API

我們?cè)?IHostBuilder 上添加了一個(gè)新的 ConfigureHostOptions API 以簡化應(yīng)用程序設(shè)置(例如,配置關(guān)閉超時(shí)):

using HostBuilder host = new()
    .ConfigureHostOptions(o =>
    {
        o.ShutdownTimeout = TimeSpan.FromMinutes(10);
    })
    .Build();

host.Run();

在 .NET 5 中,配置主機(jī)選項(xiàng)有點(diǎn)復(fù)雜:

using HostBuilder host = new()
    .ConfigureServices(services =>
    {
        services.Configure(o =>
        {
            o.ShutdownTimeout = TimeSpan.FromMinutes(10);
        });
    })
    .Build();

host.Run();

Microsoft.Extensions.DependencyInjection — CreateAsyncScope API

CreateAsyncScopeAPI是為了處理處置IAsyncDisposable服務(wù)。以前,您可能已經(jīng)注意到,對(duì)IAsyncDisposable服務(wù)提供者的處置可能會(huì)引發(fā)InvalidOperationException異常。

下面的示例演示了新模式,CreateAsyncScope用于啟用using語句的安全使用。

await using (var scope = provider.CreateAsyncScope())
{
    var foo = scope.ServiceProvider.GetRequiredService();
}

下面的例子演示了現(xiàn)有的問題案例:

using System;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;

await using var provider = new ServiceCollection()
        .AddScoped()
        .BuildServiceProvider();

// This using can throw InvalidOperationException
using (var scope = provider.CreateScope())
{
    var foo = scope.ServiceProvider.GetRequiredService();
}

class Foo : IAsyncDisposable
{
    public ValueTask DisposeAsync() => default;
}

以下模式是之前建議的避免異常的解決方法。不再需要它。

var scope = provider.CreateScope();
var foo = scope.ServiceProvider.GetRequiredService();
await ((IAsyncDisposable)scope).DisposeAsync();

感謝馬丁Bj?rkstr?m

Microsoft.Extensions.Logging — 編譯時(shí)源代碼生成器

.NET 6href="https://github.com/dotnet/runtime/issues/52549">引入了LoggerMessageAttribute類型. 此屬性是命名空間的一部分,使用時(shí),它會(huì)源生成高性能日志 API。源代碼生成日志支持旨在為現(xiàn)代 .NET 應(yīng)用程序提供高度可用和高性能的日志解決方案。自動(dòng)生成的源代碼依賴于接口和功能。Microsoft.Extensions.LoggingILoggerLoggerMessage.Define

當(dāng)LoggerMessageAttribute用于partial日志記錄方法時(shí)觸發(fā)源生成器。當(dāng)被觸發(fā)時(shí),它要么能夠自動(dòng)生成partial它正在裝飾的方法的實(shí)現(xiàn),要么生成帶有正確使用提示的編譯時(shí)診斷。編譯時(shí)日志記錄解決方案在運(yùn)行時(shí)通常比現(xiàn)有日志記錄方法快得多。它通過最大限度地消除裝箱、臨時(shí)分配和副本來實(shí)現(xiàn)這一點(diǎn)。

與直接手動(dòng)使用API 相比,有以下好處:LoggerMessage.Define

  • 更短更簡單的語法:聲明性屬性使用而不是編碼樣板。

  • 引導(dǎo)開發(fā)者體驗(yàn):生成器給出警告,幫助開發(fā)者做正確的事。

  • 支持任意數(shù)量的日志參數(shù)。最多支持六個(gè)。LoggerMessage.Define

  • 支持動(dòng)態(tài)日志級(jí)別。這是不可能的。LoggerMessage.Define

要使用LoggerMessageAttribute,消費(fèi)類和方法需要是partial。代碼生成器在編譯時(shí)觸發(fā)并生成該partial方法的實(shí)現(xiàn)。

public static partial class Log
{
    [LoggerMessage(EventId = 0, Level = LogLevel.Critical, Message = "Could not open socket to `{hostName}`")]
    public static partial void CouldNotOpenSocket(ILogger logger, string hostName);
}

在前面的示例中,日志記錄方法是,static并且在屬性定義中指定了日志級(jí)別。在靜態(tài)上下文中使用屬性時(shí),ILogger需要實(shí)例作為參數(shù)。您也可以選擇在非靜態(tài)上下文中使用該屬性。有關(guān)更多示例和使用場景,請(qǐng)?jiān)L問編譯時(shí)日志源生成器文檔。

System.Linq — 可枚舉支持Index和Range參數(shù)

該方法現(xiàn)在接受可枚舉項(xiàng)末尾的索引,如下例所示。Enumerable.ElementAt

Enumerable.Range(1, 10).ElementAt(^2); // returns 9

添加了一個(gè)接受參數(shù)的重載。它簡化了對(duì)可枚舉序列的切片:Enumerable.TakeRange

  • source.Take(..3) 代替 source.Take(3)

  • source.Take(3..) 代替 source.Skip(3)

  • source.Take(2..7) 代替 source.Take(7).Skip(2)

  • source.Take(^3..) 代替 source.TakeLast(3)

  • source.Take(..^3) 代替 source.SkipLast(3)

  • source.Take(^7..^3)而不是.source.TakeLast(7).SkipLast(3)

感謝@dixin。

System.Linq — TryGetNonEnumeratedCount

該TryGetNonEnumeratedCount方法嘗試在不強(qiáng)制枚舉的情況下獲取源可枚舉的計(jì)數(shù)。這種方法在枚舉之前預(yù)分配緩沖區(qū)很有用的情況下很有用,如下例所示。

List buffer = source.TryGetNonEnumeratedCount(out int count) ? new List(capacity: count) : new List();
foreach (T item in source)
{
    buffer.Add(item);
}

TryGetNonEnumeratedCount檢查實(shí)現(xiàn)ICollection/或利用Linq 使用的一些內(nèi)部優(yōu)化的源。ICollection

System.Linq — DistinctBy/ UnionBy/ IntersectBy/ExceptBy

新的變體已添加到集合操作中,允許使用鍵選擇器函數(shù)指定相等性,如下面的示例所示。

Enumerable.Range(1, 20).DistinctBy(x => x % 3); // {1, 2, 3}

var first = new (string Name, int Age)[] { ("Francis", 20), ("Lindsey", 30), ("Ashley", 40) };
var second = new (string Name, int Age)[] { ("Claire", 30), ("Pat", 30), ("Drew", 33) };
first.UnionBy(second, person => person.Age); // { ("Francis", 20), ("Lindsey", 30), ("Ashley", 40), ("Drew", 33) }

System.Linq — MaxBy/MinBy

MaxBy和MinBy方法允許使用鍵選擇器查找最大或最小元素,如下例所示。

var people = new (string Name, int Age)[] { ("Francis", 20), ("Lindsey", 30), ("Ashley", 40) };
people.MaxBy(person => person.Age); // ("Ashley", 40)

System.Linq — Chunk

Chunk 可用于將可枚舉的源分塊為固定大小的切片,如下例所示。

IEnumerable chunks = Enumerable.Range(0, 10).Chunk(size: 3); // { {0,1,2}, {3,4,5}, {6,7,8}, {9} }

歸功于羅伯特·安德森

System.Linq的- FirstOrDefault/ LastOrDefault/SingleOrDefault過載采取默認(rèn)參數(shù)

現(xiàn)有FirstOrDefault/ LastOrDefault/SingleOrDefault方法返回如果源枚舉是空的。添加了新的重載,接受在這種情況下要返回的默認(rèn)參數(shù),如下面的示例所示。default(T)

Enumerable.Empty().SingleOrDefault(-1); // returns -1

感謝@ Foxtrek64

System.Linq —Zip接受三個(gè)枚舉的重載

郵編方法現(xiàn)在支持組合三個(gè)枚舉接口,你可以在下面的例子中看到。

var xs = Enumerable.Range(1, 10);
var ys = xs.Select(x => x.ToString());
var zs = xs.Select(x => x % 2 == 0);

foreach ((int x, string y, bool z) in Enumerable.Zip(xs,ys,zs))
{
}

感謝霍耀元。

優(yōu)先隊(duì)列

PriorityQueue(System.Collections.Generic) 是一個(gè)新集合,可以添加具有值和優(yōu)先級(jí)的新項(xiàng)目。在出隊(duì)時(shí),PriorityQueue 返回具有最低優(yōu)先級(jí)值的元素。您可以將這個(gè)新集合視為類似于但每個(gè)入隊(duì)元素都有一個(gè)影響出隊(duì)行為的優(yōu)先級(jí)值。Queue

以下示例演示了.PriorityQueue

// creates a priority queue of strings with integer priorities
var pq = new PriorityQueue();

// enqueue elements with associated priorities
pq.Enqueue("A", 3);
pq.Enqueue("B", 1);
pq.Enqueue("C", 2);
pq.Enqueue("D", 3);

pq.Dequeue(); // returns "B"
pq.Dequeue(); // returns "C"
pq.Dequeue(); // either "A" or "D", stability is not guaranteed.

感謝Patryk Golebiowski。

更快地將結(jié)構(gòu)體作為字典值處理

CollectionsMarshal.GetValueRef是一個(gè)新的不安全API,它可以更快地更新字典中的結(jié)構(gòu)值。新 API 旨在用于高性能場景,而不是用于一般用途。它返回refstruct 值,然后可以使用典型技術(shù)就地更新。

以下示例演示了如何使用新 API:

ref MyStruct value = CollectionsMarshal.GetValueRef(dictionary, key);
// Returns Unsafe.NullRef() if it doesn't exist; check using Unsafe.IsNullRef(ref value)
if (!Unsafe.IsNullRef(ref value))
{
    // Mutate in-place
    value.MyInt++;
}

在此更改之前,更新struct字典值對(duì)于高性能場景可能會(huì)很昂貴,需要字典查找和struct. 然后在更改 之后struct,它將再次分配給字典鍵,從而導(dǎo)致另一次查找和復(fù)制操作。此改進(jìn)將密鑰散列減少到 1(從 2)并刪除所有結(jié)構(gòu)復(fù)制操作。

歸功于本·亞當(dāng)斯。

新的DateOnly和TimeOnly結(jié)構(gòu)

添加了僅限日期和時(shí)間的結(jié)構(gòu),具有以下特征:

  • 每個(gè)代表 a 的一半DateTime,或者只是日期部分,或者只是時(shí)間部分。

  • DateOnly是生日、周年紀(jì)念日和工作日的理想選擇。它符合 SQL Server 的date類型。

  • TimeOnly是定期會(huì)議、鬧鐘和每周工作時(shí)間的理想選擇。它符合 SQL Server 的time類型。

  • 補(bǔ)充現(xiàn)有的日期/時(shí)間類型 ( DateTime, DateTimeOffset, TimeSpan, TimeZoneInfo)。

  • 在System命名空間中,在 CoreLib 中提供,就像現(xiàn)有的相關(guān)類型一樣。

性能改進(jìn) DateTime.UtcNow

這種改進(jìn)有以下好處:

  • 修復(fù)了在 Windows 上獲取系統(tǒng)時(shí)間的2.5 倍性能回歸

  • 利用 5 分鐘的 Windows 閏秒數(shù)據(jù)滑動(dòng)緩存,而不是在每次調(diào)用時(shí)獲取。

支持所有平臺(tái)上的 Windows 和 IANA 時(shí)區(qū)

這種改進(jìn)有以下好處:

  • 使用時(shí)的隱式轉(zhuǎn)換(https://github.com/dotnet/runtime/pull/49412)TimeZoneInfo.FindSystemTimeZoneById

  • 通過新的API顯式轉(zhuǎn)換上TimeZoneInfo:TryConvertIanaIdToWindowsId,TryConvertWindowsIdToIanaId,和HasIanaId(https://github.com/dotnet/runtime/issues/49407

  • 改進(jìn)了使用不同時(shí)區(qū)類型的系統(tǒng)之間的跨平臺(tái)支持和互操作。

  • 刪除需要使用 TimeZoneConverter OSS 庫。該功能現(xiàn)已內(nèi)置。

改進(jìn)的時(shí)區(qū)顯示名稱

Unix 上的時(shí)區(qū)顯示名稱已得到改進(jìn)

  • 從 返回的列表中的顯示名稱中消除歧義。TimeZoneInfo.GetSystemTimeZones

  • 利用 ICU / CLDR 全球化數(shù)據(jù)。

  • 僅適用于 Unix。Windows 仍然使用注冊(cè)表數(shù)據(jù)。這可能會(huì)在以后更改。

還進(jìn)行了以下額外改進(jìn):

  • UTC 時(shí)區(qū)的顯示名稱和標(biāo)準(zhǔn)名稱被硬編碼為英語,現(xiàn)在使用與其余時(shí)區(qū)數(shù)據(jù)相同的語言(CurrentUICulture在 Unix 上,Windows 上的操作系統(tǒng)默認(rèn)語言)。

  • 由于大小限制,Wasm 中的時(shí)區(qū)顯示名稱改為使用非本地化的 IANA ID。

  • TimeZoneInfo.AdjustmentRule嵌套類將其BaseUtcOffsetDelta內(nèi)部屬性公開并獲得一個(gè)新的構(gòu)造函數(shù)baseUtcOffsetDelta作為參數(shù)。(https://github.com/dotnet/runtime/issues/50256

  • TimeZoneInfo.AdjustmentRule 還獲得了在 Unix 上加載時(shí)區(qū)的其他修復(fù)(https://github.com/dotnet/runtime/pull/49733),(https://github.com/dotnet/runtime/pull/50131

改進(jìn)了對(duì) Windows ACL 的支持

System.Threading.AccessControl現(xiàn)在包括對(duì)與 Windows 訪問控制列表 (ACL) 交互的改進(jìn)支持。為、和的OpenExisting和TryOpenExisting方法添加了新的重載。這些具有“安全權(quán)限”實(shí)例的重載允許打開使用特殊 Windows 安全屬性創(chuàng)建的線程同步對(duì)象的現(xiàn)有實(shí)例。EventWaitHandleMutexSemaphore

此更新與 .NET Framework 中可用的 API 相匹配,并且具有相同的行為。

以下示例演示如何使用這些新 API。

對(duì)于Mutex:

var rights = MutexRights.FullControl;
string mutexName = "MyMutexName";

var security = new MutexSecurity();
SecurityIdentifier identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
MutexAccessRule accessRule = new MutexAccessRule(identity, rights, AccessControlType.Allow);
security.AddAccessRule(accessRule);

// createdMutex, openedMutex1 and openedMutex2 point to the same mutex
Mutex createdMutex = MutexAcl.Create(initiallyOwned: true, mutexName, out bool createdNew, security);
Mutex openedMutex1 = MutexAcl.OpenExisting(mutexName, rights);
MutexAcl.TryOpenExisting(mutexName, rights, out Mutex openedMutex2);

為了 Semaphore

var rights = SemaphoreRights.FullControl;
string semaphoreName = "MySemaphoreName";

var security = new SemaphoreSecurity();
SecurityIdentifier identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
SemaphoreAccessRule accessRule = new SemaphoreAccessRule(identity, rights, AccessControlType.Allow);
security.AddAccessRule(accessRule);

// createdSemaphore, openedSemaphore1 and openedSemaphore2 point to the same semaphore
Semaphore createdSemaphore = SemaphoreAcl.Create(initialCount: 1,  maximumCount: 3, semaphoreName, out bool createdNew, security);
Semaphore openedSemaphore1 = SemaphoreAcl.OpenExisting(semaphoreName, rights);
SemaphoreAcl.TryOpenExisting(semaphoreName, rights, out Semaphore openedSemaphore2);

為了 EventWaitHandle

var rights = EventWaitHandleRights.FullControl;
string eventWaitHandleName = "MyEventWaitHandleName";

var security = new EventWaitHandleSecurity();
SecurityIdentifier identity = new SecurityIdentifier(WellKnownSidType.BuiltinUsersSid, null);
EventWaitHandleAccessRule accessRule = new EventWaitHandleAccessRule(identity, rights, AccessControlType.Allow);
security.AddAccessRule(accessRule);

// createdHandle, openedHandle1 and openedHandle2 point to the same event wait handle
EventWaitHandle createdHandle = EventWaitHandleAcl.Create(initialState: true, EventResetMode.AutoReset, eventWaitHandleName, out bool createdNew, security);
EventWaitHandle openedHandle1 = EventWaitHandleAcl.OpenExisting(eventWaitHandleName, rights);
EventWaitHandleAcl.TryOpenExisting(eventWaitHandleName, rights, out EventWaitHandle openedHandle2);

HMAC 一次性方法

HMAC類現(xiàn)在有靜態(tài)方法,允許HMACs的一次性計(jì)算不分配。這些添加類似于先前版本中添加的用于哈希生成的一次性方法。System.Security.Cryptography

DependentHandle 現(xiàn)在是公開的

該DependentHandle類型現(xiàn)在是公開的,具有以下 API 表面

namespace System.Runtime
{
    public struct DependentHandle : IDisposable
    {
        public DependentHandle(object? target, object? dependent);
        public bool IsAllocated { get; }
        public object? Target { get; set; }
        public object? Dependent { get; set; }
        public (object? Target, object? Dependent) TargetAndDependent { get; }
        public void Dispose();
    }
}

它可用于創(chuàng)建高級(jí)系統(tǒng),例如復(fù)雜的緩存系統(tǒng)或該類型的自定義版本。例如,MVVM 工具包中的類型將使用它來避免廣播消息時(shí)的內(nèi)存分配。ConditionalWeakTableWeakReferenceMessenger

可移植線程池

.NET線程池已重新實(shí)現(xiàn)作為一個(gè)托管實(shí)現(xiàn),現(xiàn)在作為默認(rèn)的線程池.NET 6.我們做出這一改變,使所有的.NET應(yīng)用程序能夠訪問線程池獨(dú)立的是否相同正在使用 CoreCLR、Mono 或任何其他運(yùn)行時(shí)。作為此更改的一部分,我們沒有觀察到或預(yù)期任何功能或性能影響。

RyuJIT

該團(tuán)隊(duì)對(duì)該版本的 .NET JIT 編譯器進(jìn)行了許多改進(jìn),在每個(gè)預(yù)覽帖子中都有記錄。大多數(shù)更改都可以提高性能。這里涵蓋了一些 RyuJIT 的亮點(diǎn)。

動(dòng)態(tài) PGO

在 .NET 6 中,我們啟用了兩種形式的 PGO(配置文件引導(dǎo)優(yōu)化):

  • 動(dòng)態(tài) PGO使用從當(dāng)前運(yùn)行收集的數(shù)據(jù)來優(yōu)化當(dāng)前運(yùn)行。

  • 靜態(tài) PGO依靠從過去運(yùn)行中收集的數(shù)據(jù)來優(yōu)化未來運(yùn)行。

動(dòng)態(tài) PGO 已經(jīng)在文章前面的性能部分中介紹過。我會(huì)提供一個(gè)重新上限。

動(dòng)態(tài) PGO 使 JIT 能夠在運(yùn)行時(shí)收集有關(guān)實(shí)際用于該特定應(yīng)用程序運(yùn)行的代碼路徑和類型的信息。然后 JIT 可以根據(jù)這些代碼路徑優(yōu)化代碼,有時(shí)會(huì)顯著提高性能。我們?cè)跍y試和生產(chǎn)方面都看到了健康的兩位數(shù)改進(jìn)。有一組經(jīng)典的編譯器技術(shù),在沒有 PGO 的情況下使用 JIT 或提前編譯是不可能的。我們現(xiàn)在能夠應(yīng)用這些技術(shù)。熱/冷分裂是一種這樣的技術(shù),去虛擬化是另一種技術(shù)。

要啟用動(dòng)態(tài) PGO,請(qǐng)?jiān)谀膽?yīng)用程序?qū)⑦\(yùn)行的環(huán)境中進(jìn)行設(shè)置。DOTNET_TieredPGO=1

如性能部分所述,動(dòng)態(tài) PGO 為 TechEmpower JSON“MVC”套件的每秒請(qǐng)求數(shù)提供了 26% 的改進(jìn)(510K -> 640K)。這是一個(gè)驚人的改進(jìn),無需更改代碼。

我們的目標(biāo)是在 .NET 的未來版本中默認(rèn)啟用 Dynamic PGO,希望與 .NET 7 一起使用。我們強(qiáng)烈建議您在您的應(yīng)用程序中嘗試使用 Dynamic PGO 并向我們提供反饋。

完整的 PGO

要獲得動(dòng)態(tài) PGO 的全部優(yōu)勢,您可以設(shè)置兩個(gè)額外的環(huán)境變量:和. 這確保了盡可能多的方法參與分層編譯。我們稱這種變體為Full PGO。與動(dòng)態(tài) PGO 相比,完整 PGO 可以提供更大的穩(wěn)態(tài)性能優(yōu)勢,但啟動(dòng)時(shí)間會(huì)更慢(因?yàn)楸仨氃诘?0 層執(zhí)行更多方法)。DOTNET_TC_QuickJitForLoops=1DOTNET_ReadyToRun=0

您不希望將此選項(xiàng)用于短期運(yùn)行的無服務(wù)器應(yīng)用程序,但對(duì)于長期運(yùn)行的應(yīng)用程序可能有意義。

在未來的版本中,我們計(jì)劃精簡和簡化這些選項(xiàng),以便您可以更簡單地獲得完整 PGO 的好處,并適用于更廣泛的應(yīng)用程序。

靜態(tài) PGO

我們目前使用靜態(tài) PGO來優(yōu)化 .NET 庫程序集,如隨 R2R(準(zhǔn)備運(yùn)行)提供的程序集。System.Private.CoreLib

靜態(tài) PGO 的好處在于,當(dāng)程序集使用 crossgen 編譯為 R2R 格式時(shí),會(huì)進(jìn)行優(yōu)化。這意味著在沒有運(yùn)行時(shí)成本的情況下有運(yùn)行時(shí)優(yōu)勢。例如,這非常重要,這也是 PGO 對(duì) C++ 很重要的原因。

循環(huán)對(duì)齊

內(nèi)存對(duì)齊是現(xiàn)代計(jì)算中各種操作的常見要求。在 .NET 5 中,我們開始在 32 字節(jié)邊界對(duì)齊方法。在 .NET 6 中,我們添加了一個(gè)功能來執(zhí)行自適應(yīng)循環(huán)對(duì)齊,該功能NOP在具有循環(huán)的方法中添加填充指令,以便循環(huán)代碼從 mod(16) 或 mod(32) 內(nèi)存地址開始。這些更改提高并穩(wěn)定了 .NET 代碼的性能。

在下面的冒泡排序圖中,數(shù)據(jù)點(diǎn) 1 表示我們開始在 32 字節(jié)邊界對(duì)齊方法的點(diǎn)。數(shù)據(jù)點(diǎn) 2 表示我們也開始對(duì)齊內(nèi)部循環(huán)的點(diǎn)。如您所見,基準(zhǔn)測試的性能和穩(wěn)定性都有顯著提高。





硬件加速結(jié)構(gòu)

結(jié)構(gòu)是 CLR 類型系統(tǒng)的重要組成部分。近年來,它們經(jīng)常被用作整個(gè) .NET 庫中的性能原語。最近的例子是ValueTask,ValueTuple和。記錄結(jié)構(gòu)是一個(gè)新的例子。在 .NET 5 和 .NET 6 中,我們一直在提高結(jié)構(gòu)的性能,部分是通過確保結(jié)構(gòu)可以保存在超快的 CPU 寄存器中,當(dāng)它們是局部變量、參數(shù)或方法的返回值時(shí))。這對(duì)于使用向量計(jì)算的 API 尤其有益。Span

穩(wěn)定性能測量

團(tuán)隊(duì)中有大量的工程系統(tǒng)工作從未出現(xiàn)在博客上。這適用于您使用的任何硬件或軟件產(chǎn)品。JIT 團(tuán)隊(duì)開展了一個(gè)項(xiàng)目來穩(wěn)定性能測量,目標(biāo)是增加我們內(nèi)部性能實(shí)驗(yàn)室自動(dòng)化自動(dòng)報(bào)告的回歸值。這個(gè)項(xiàng)目很有趣,因?yàn)檫M(jìn)行了深入的調(diào)查以及實(shí)現(xiàn)穩(wěn)定性所需的產(chǎn)品更改。它還展示了我們衡量保持和提高績效的規(guī)模。





此圖像展示了不穩(wěn)定的性能測量,其中性能在連續(xù)運(yùn)行中在慢速和快速之間波動(dòng)。x 軸是測試日期,y 軸是測試時(shí)間(以納秒為單位)。在圖表的末尾(在提交這些更改之后),您可以看到測量值穩(wěn)定下來,結(jié)果最好。此圖像演示了單個(gè)測試。還有更多測試在dotnet/runtime #43227中被證明具有類似的行為。

準(zhǔn)備運(yùn)行的代碼 / Crossgen 2

Crossgen2 是crossgen 工具的替代品。它旨在滿足兩個(gè)結(jié)果:

  • 使跨代開發(fā)更高效。

  • 啟用一組當(dāng)前無法通過 crossgen 實(shí)現(xiàn)的功能。

這種轉(zhuǎn)換有點(diǎn)類似于本機(jī)代碼 csc.exe 到托管代碼Roslyn 編譯器。Crossgen2 是用 C# 編寫的,但是,它沒有像 Roslyn 那樣公開花哨的 API。

我們可能已經(jīng)/已經(jīng)為 .NET 6 和 7 計(jì)劃了六個(gè)依賴于 crossgen2 的項(xiàng)目。矢量指令默認(rèn)值提議是我們想要為 .NET 6 進(jìn)行的 crossgen2 功能和產(chǎn)品更改的一個(gè)很好的例子,但更有可能是 .NET 7。版本氣泡是另一個(gè)很好的例子。

Crossgen2 支持跨操作系統(tǒng)和架構(gòu)維度的交叉編譯(因此得名“crossgen”)。這意味著您將能夠使用單個(gè)構(gòu)建機(jī)器為所有目標(biāo)生成本機(jī)代碼,至少與準(zhǔn)備運(yùn)行的代碼相關(guān)。然而,運(yùn)行和測試該代碼是另一回事,為此您需要適當(dāng)?shù)挠布筒僮飨到y(tǒng)。

第一步是用crossgen2編譯平臺(tái)本身。我們使用 .NET 6 完成了所有架構(gòu)。因此,我們能夠在此版本中淘汰舊的 crossgen。請(qǐng)注意,crossgen2 僅適用于 CoreCLR,不適用于基于 Mono 的應(yīng)用程序(它們具有一組單獨(dú)的代碼生成工具)。

這個(gè)項(xiàng)目——至少在開始時(shí)——并不以性能為導(dǎo)向。目標(biāo)是為托管 RyuJIT(或任何其他)編譯器提供更好的架構(gòu),以離線方式(不需要或啟動(dòng)運(yùn)行時(shí))生成代碼。

您可能會(huì)說“嘿……如果 crossgen2 是用 C# 編寫的,那么您不必啟動(dòng)運(yùn)行時(shí)來運(yùn)行它嗎?” 是的,但這不是本文中“離線”的意思。當(dāng) crossgen2 運(yùn)行時(shí),我們沒有使用 crossgen2 運(yùn)行時(shí)附帶的 JIT 來生成準(zhǔn)備運(yùn)行 (R2R) 代碼. 那是行不通的,至少對(duì)于我們的目標(biāo)是行不通的。想象 crossgen2 在 x64 機(jī)器上運(yùn)行,我們需要為 Arm64 生成代碼。Crossgen2 加載 Arm64 RyuJIT(為 x64 編譯)作為本機(jī)插件,然后使用它生成 Arm64 R2R 代碼。機(jī)器指令只是保存到文件中的字節(jié)流。它也可以反方向工作。在 Arm64 上,crossgen2 可以使用編譯為 Arm64 的 x64 RyuJIT 生成 x64 代碼。我們使用相同的方法在 x64 機(jī)器上定位 x64 代碼。Crossgen2 加載為任何需要的配置構(gòu)建的 RyuJIT。這可能看起來很復(fù)雜,但如果您想啟用無縫的交叉目標(biāo)模型,它就是您需要的那種系統(tǒng),而這正是我們想要的。

我們希望只在一個(gè)版本中使用“crossgen2”這個(gè)術(shù)語,之后它將取代現(xiàn)有的 crossgen,然后我們將回到對(duì)“crossgen2”使用“crossgen”這個(gè)術(shù)語。

.NET 診斷:EventPipe

EventPipe 是我們的跨平臺(tái)機(jī)制,用于在進(jìn)程內(nèi)或進(jìn)程外輸出事件、性能數(shù)據(jù)和計(jì)數(shù)器。從 .NET 6 開始,我們已將實(shí)現(xiàn)從 C++ 移至 C。通過此更改,Mono 也使用 EventPipe。這意味著 CoreCLR 和 Mono 使用相同的事件基礎(chǔ)結(jié)構(gòu),包括 .NET 診斷 CLI 工具。

這一變化還伴隨著 CoreCLR 的小幅縮小:


我們還進(jìn)行了一些更改,以在負(fù)載下提高 EventPipe 吞吐量。在最初的幾個(gè)預(yù)覽版中,我們進(jìn)行了一系列更改,使吞吐量提高了 .NET 5 所能達(dá)到的 2.06 倍:





對(duì)于此基準(zhǔn)測試,越高越好。.NET 6 是橙色線,.NET 5 是藍(lán)色線。

開發(fā)工具包

對(duì) .NET SDK 進(jìn)行了以下改進(jìn)。

.NET 6 SDK 可選工作負(fù)載的 CLI 安裝

.NET 6 引入了SDK 工作負(fù)載的概念。工作負(fù)載是可選組件,可以安裝在 .NET SDK 之上以啟用各種方案。.NET 6 中的新工作負(fù)載是:.NET MAUI 和 Blazor WebAssembly AOT 工作負(fù)載。我們可能會(huì)在 .NET 7 中創(chuàng)建新的工作負(fù)載(可能來自現(xiàn)有的 SDK)。工作負(fù)載的最大好處是尺寸減小和可選性。我們希望隨著時(shí)間的推移使 SDK 變得更小,并允許只安裝您需要的組件。這個(gè)模型對(duì)開發(fā)者機(jī)器有好處,甚至對(duì) CI 更好。

Visual Studio 用戶實(shí)際上不需要擔(dān)心工作負(fù)載。工作負(fù)載功能的設(shè)計(jì)目的是讓安裝協(xié)調(diào)器(如 Visual Studio)可以為您安裝工作負(fù)載。可以通過 CLI 直接管理工作負(fù)載。

工作負(fù)載功能公開了多個(gè)用于管理工作負(fù)載的動(dòng)詞,包括以下內(nèi)容:

  • dotnet workload restore — 安裝給定項(xiàng)目所需的工作負(fù)載。

  • dotnet workload install — 安裝命名的工作負(fù)載。

  • dotnet workload list — 列出您已安裝的工作負(fù)載。

  • dotnet workload update — 將所有已安裝的工作負(fù)載更新到最新的可用版本。

該update動(dòng)詞查詢更新的工作負(fù)載清單、更新本地清單、下載已安裝工作負(fù)載的新版本,然后刪除工作負(fù)載的所有舊版本。這類似于(在基于 Debian 的 Linux 發(fā)行版上使用)。將工作負(fù)載視為 SDK 的私有包管理器是合理的。它是私有的,因?yàn)樗鼉H可用于 SDK 組件。我們將來可能會(huì)重新考慮這一點(diǎn)。nuget.orgapt update && apt upgrade -y

這些dotnet workload命令在給定 SDK 的上下文中運(yùn)行。假設(shè)您同時(shí)安裝了 .NET 6 和 .NET 7。工作負(fù)載命令將為每個(gè) SDK 提供不同的結(jié)果,因?yàn)楣ぷ髫?fù)載會(huì)有所不同(至少相同工作負(fù)載的不同版本)。

請(qǐng)注意,dotnet workload install將工作負(fù)載從 NuGet.org 復(fù)制到您的 SDK 安裝中,因此sudo如果 SDK 安裝位置受到保護(hù)(意味著在管理員/根位置),則需要提升運(yùn)行或使用。

內(nèi)置SDK版本檢查

為了更輕松地跟蹤新版本的 SDK 和運(yùn)行時(shí)何時(shí)可用,我們向 .NET 6 SDK 添加了一個(gè)新命令。

dotnet sdk check

它會(huì)告訴您是否有更新版本可用于您已安裝的任何 .NET SDK、運(yùn)行時(shí)或工作負(fù)載。您可以在下圖中看到新體驗(yàn)。





dotnet new

您現(xiàn)在可以在http://NuGet.org中搜索帶有.dotnet new --search

模板安裝的其他改進(jìn)包括支持開關(guān)以支持私有 NuGet 源的授權(quán)憑據(jù)。--interactive

安裝 CLI 模板后,您可以通過和檢查更新是否可用。--update-check--update-apply

NuGet 包驗(yàn)證

包驗(yàn)證工具使 NuGet 庫開發(fā)人員能夠驗(yàn)證他們的包是否一致且格式良好。

這包括:

  • 驗(yàn)證跨版本沒有重大更改。

  • 驗(yàn)證包對(duì)于所有特定于運(yùn)行時(shí)的實(shí)現(xiàn)是否具有相同的公共 API 集。

  • 確定任何目標(biāo)框架或運(yùn)行時(shí)適用性差距。

此工具是 SDK 的一部分。使用它的最簡單方法是在項(xiàng)目文件中設(shè)置一個(gè)新屬性。

 true

更多 Roslyn 分析儀

在 .NET 5 中,我們隨 .NET SDK 提供了大約 250 個(gè)分析器。其中許多已經(jīng)存在,但作為 NuGet 包在帶外發(fā)布。我們為 .NET 6 添加了更多分析器。

默認(rèn)情況下,大多數(shù)新分析器在信息級(jí)別啟用。您可以通過啟用這些分析儀在警告級(jí)別配置的分析模式是這樣的:。All

我們發(fā)布了我們想要的 .NET 6 分析器集(加上一些額外的東西),然后將其中的大部分都準(zhǔn)備好了。社區(qū)添加了幾個(gè)實(shí)現(xiàn),包括這些。

感謝Meik TranelNewell Clark。

為平臺(tái)兼容性分析器啟用自定義防護(hù)

該CA1416平臺(tái)兼容性分析儀已經(jīng)可以識(shí)別使用的方法平臺(tái)警衛(wèi)OperatingSystem和RuntimeInformation,如和。但是,分析器不識(shí)別任何其他保護(hù)可能性,例如緩存在字段或?qū)傩灾械钠脚_(tái)檢查結(jié)果,或者在輔助方法中定義了復(fù)雜的平臺(tái)檢查邏輯。OperatingSystem.IsWindowsOperatingSystem.IsWindowsVersionAtLeast

為了允許自定義保護(hù)的可能性,我們添加了新屬性SupportedOSPlatformGuard并UnsupportedOSPlatformGuard使用相應(yīng)的平臺(tái)名稱和/或版本注釋自定義保護(hù)成員。該注釋被平臺(tái)兼容性分析器的流分析邏輯識(shí)別和尊重。

用法

    [UnsupportedOSPlatformGuard("browser")] // The platform guard attribute
#if TARGET_BROWSER
    internal bool IsSupported => false;
#else
    internal bool IsSupported => true;
#endif

    [UnsupportedOSPlatform("browser")]
    void ApiNotSupportedOnBrowser() { }

    void M1()
    {
        ApiNotSupportedOnBrowser();  // Warns: This call site is reachable on all platforms.'ApiNotSupportedOnBrowser()' is unsupported on: 'browser'

        if (IsSupported)
        {
            ApiNotSupportedOnBrowser();  // Not warn
        }
    }

    [SupportedOSPlatform("Windows")]
    [SupportedOSPlatform("Linux")]
    void ApiOnlyWorkOnWindowsLinux() { }

    [SupportedOSPlatformGuard("Linux")]
    [SupportedOSPlatformGuard("Windows")]
    private readonly bool _isWindowOrLinux = OperatingSystem.IsLinux() || OperatingSystem.IsWindows();

    void M2()
    {
        ApiOnlyWorkOnWindowsLinux();  // This call site is reachable on all platforms.'ApiOnlyWorkOnWindowsLinux()' is only supported on: 'Linux', 'Windows'.

        if (_isWindowOrLinux)
        {
            ApiOnlyWorkOnWindowsLinux();  // Not warn
        }
    }
}

最后

歡迎使用 .NET 6。它是另一個(gè)巨大的 .NET 版本,在性能、功能、可用性和安全性方面的改進(jìn)幾乎相同。我們希望您找到許多改進(jìn),最終使您在日常開發(fā)中更有效率和能力,并提高性能或降低生產(chǎn)應(yīng)用程序的成本。我們已經(jīng)開始聽到你們中那些已經(jīng)開始使用 .NET 6 的人的好消息。

在 Microsoft,我們也處于 .NET 6 部署的早期階段,一些關(guān)鍵應(yīng)用程序已經(jīng)投入生產(chǎn),未來幾周和幾個(gè)月內(nèi)還有更多應(yīng)用程序即將推出。

.NET 6 是我們最新的 LTS 版本。我們鼓勵(lì)所有人轉(zhuǎn)向它,特別是如果您使用 .NET 5。我們期待它成為有史以來采用速度最快的 .NET 版本。

此版本是至少 1000 人(但可能更多)的結(jié)果。這包括來自 Microsoft 的 .NET 團(tuán)隊(duì)以及社區(qū)中的更多人。我試圖在這篇文章中包含許多社區(qū)貢獻(xiàn)的功能。感謝您花時(shí)間創(chuàng)建這些并完成我們的流程。我希望這次經(jīng)歷是好的,更多的人會(huì)做出貢獻(xiàn)。

這篇文章是許多有才華的人合作的結(jié)果。這些貢獻(xiàn)包括團(tuán)隊(duì)在整個(gè)發(fā)布過程中提供的功能內(nèi)容、為此最終帖子創(chuàng)建的重要新內(nèi)容,以及使最終內(nèi)容達(dá)到您應(yīng)得的質(zhì)量所需的大量技術(shù)和散文更正。很高興為您制作它和所有其他帖子。

感謝您成為 .NET 開發(fā)人員。


來源:知乎
亚洲第一站精品久久久久久| 日韩毛片网站在线| 骚虎影视作成人在线观看 | 欧美一区二区三区四区啪啪| 毛茸茸厕所偷窥xxxx| 亚州AV成人无码久久精品| 中文在线一级视频免费| 日韩中文字幕亚洲无线码| 久久综合无码av一区二区| 二区三区无码视频| 伊人久久妓女影院| 99热精品毛片全部国产动态| 国产综合 亚洲日韩中文| 国产精品v日韩精品v欧美精品v| 久久re这里视频只精品首页| 女人自己扒荫道口自慰| 国产a级毛色视频免费观看| 337p日本欧洲大胆精品| 自拍三级综合在线观看| ;国产福利小视频| 黄色小蝌蚪视频软件| 99re6在线观看国产精| 国产欧美综合色噜噜在线| 色欲aⅴ亚洲情无码AV| 一区二区三区无码观看免费视频| 射精品欧美人妻内射| 亚洲色中文字幕无码a v成人| 国产人妻精品丰满大屁股干炮| 亚洲一区精品99| 91久久精品国产91久久| 秋霞伦理+手机在线看片| 国产精品~色哟哟| 欧美另类清纯中文字幕乱码| 久久久99国产精品免费看| 8又粗又硬又大好爽喷水视频| 便劲快到高潮了国产对白在线| 日韩中文字幕亚洲无线码| 亚洲AV成人精品一区二区久久| 老司机深夜福利未满十八| 四虎亚洲精品私库av在线| 婷婷丁香五月激情一区综合网| 看黄a大片爽爽影院69免费看| 孩子与孩子差差免费视频| 一区二区三区日韩免费视频| 欧美 亚洲 精品 网站| 国内黄色一级精品| 2020人妻中文字幕乱码在线| 可以免费观看的黄色网址| 欧美日韩精品无码免费毛片| 色综合伊人丁香五月桃花婷婷| 国产真人做受无码在线观看| 日本人妻一区| 人妻久久精品一区二区夜夜嗨| 国产女同真实视频在线观看| 无码人妻永久免费视频| 亚无码乱人伦一区二区蜜桃| 97视频制服无码| j8又粗又硬又大爽又长网站| 黄色高清网站| 免费成人美女在线观看| 亚洲欧美综合久久久免费看| 亚洲天堂一区二二三| 欧美一区二区肥逼高潮啪啪| 成人免费黄色网站无毒下载| 超碰男人aⅴ天堂东京热| 在线观看精品日韩av| 白浆喷水网站导航| 中文无码子幕久久久久久| 精品国产一区二区三区高潮视| 97国产精品资源| 了解最新全黄性性激高免费视频 | 美国一级毛片免费视频观看| 国产小视频2021| 一个人的视频全免费观看中国| 欧美 日韩 偷拍 视频| 日本韩国一区| 亚洲不卡无码永久在线观看亚洲成av人无码综合在线观看 | 亚洲视频在线a视频| 50岁女人毛茸茸风骚视频| 日本国产美国日韩欧美影片| 日本成人不卡視頻| 国产调教jk美女在线观看| 狼友视频专区国产在线观看| 激情人妻精品无码视频| 理论片OK电影天堂| 欧美97色伦欧美一区二区日 | 午夜亚洲精品第一页| 惠民福利欧美性欧美巨大黑白大战| 午夜理伦无码理论片国产| 成人免费高清观看| 毛片高潮喷液视频在线观看| 国产在线欧美日韩一区二区| 国产精品亚洲А∨天堂123| 精品一区二区三区Aⅴ天堂女女| 亚洲色在线v中文字幕app| 蜜月久综合久久综合国产| 97精品视频高清| 五月亭亭丁香| 一本精品99久久精品66最熱門最齊全的電影| 国产亚洲AV综合网| 精品久久理论A级一区二区| 国产精品V欧美精品片源丰富、内容全面 | 日本一区二区三区不卡播| 欧美怡红院在线观看高清| 国产黄色肏屄视频| 欧美日韩激情黄色大片| 国产成人丝袜美女厕所视频| 国产精品与日韩精品| 国产午夜激无码A∨毛片护士| 久久精品视频中文偷拍| 亚洲中午字幕在线不卡| 惠民福利国产免费AV片在线看观看| 人人干人人射影视| 精品国产高清久久| 国产免费午夜福利电影| 欧美国产日韩一区二区三区四区| 欧美浓毛大泬毛茸茸| 亚洲国产精品无码中文字视 | 女人18毛片a级女人水真多毛片| 福利视频亚洲一区| 亚洲精品成人国产樱花无码| 国产精品无码一区二区三区四| 国产精品久无码免费高潮| 国产精品999高清在线播放| 国产亚洲精品AAAA片APP| 香蕉视频免费看片亚洲国产精彩视频在线观看| 免费无码a∨片在线观看| 草莓视频app网站| 一级特一级特色生活片| 在线无码Aa一级| 亚洲国产午夜福利在线| 91精品国产综合久久久情侣| 成人在线免费激情| 亚洲国产精品无码中文字视| 18在线观看尤物国产| 欧美电影精品亚洲网站| 国产Aa夜夜欢一级黄色片| 亚洲av日韩aⅴ综合在线观看天堂 99人妻少妇一区二区三区 | 欧美一区二区三区四区啪啪| 久久99精品久久久国产精品| 国产精品日本在线| 亚洲国产不卡一区二区三区| 97超碰碰国产精品乱码| 欧美久久久黄色片| 曰韩内射六十七十老熟女影视| 婷婷亚洲精品中文视频在线| 亚洲精品国产私拍在线| 日本女w黄视频a| 天天操天天干男同性恋2020| 国产成人综合亚91| 99久久精品少妇高潮喷水| 美水被爽到喷水高潮动态图片| 丰满少妇被爽到高潮喷水| 美女免费视频一区二区| 亚洲国产成人精品成人| 无码A级毛片影院| 欧美厨房肉欲情趣妇| 偷拍女偷所一区二区三区| 日本视频网站色电脑| 在线观看国产日韩| 国产欧美综合自拍| 日本高清免费不卡视频| 偷拍丝袜中文字幕| 国产suv精品一区二区66| 国产成人午夜福利在线观看者| 欧美成人免费观看久久| 網友分享在线播放无码字幕专区心得| 亚洲āV永久无码精品三区在线4 | 1024在线视频精品免费| 国产精品无码专区AV在线播| 精品一区二区三区日韩视频| 成人无码h真人在线网站| 三级成人影院| 国产精品69久久久久孕妇| 中文字幕不卡第一页| 九九视频在线| 久久精品视频中文偷拍| 看久久久久久一级毛片国产| 扶住和尚的硕大坐下去| 黄频网站在线免费观观| 么公的好大好硬好深好爽视频想要| 偷拍 自怕 亚洲 精品| 蜜桃极品一区二区| 日韩AV无码免费久久一区红柚| 长篇乱肉合集乱500小说小莹| 国产综合 亚洲日韩中文| 一个好妈妈9中字讲话的背景资料 美女一区二区在线观看av | 99久久久无码国产精品9| 国产乱淫av麻豆国产免费| 欧美丝袜在线视频一区二区三区| 91精品中文在线观看| 十八禁视频网站| 97久久人国产精品婷婷| 国产a级毛色视频免费观看| 久久免费午夜福利院 | 国产免费午夜福利电影| 级黄色片在线77777| 国产在线喷潮视频免费观看| 初见直播app最新下载| 久久精品国产亚洲?V影院| 欧美一级片最新网址| 国产成人午夜福利在线观看者| 久久精品伊人久久精品| 欧美老妇配种高清视频| av大全亚洲一区二区三区| 欧美成人免费观看aⅴ| 好看的一级毛片免费看| 国产精品久久久久久www| 又色又爽又湿视频在线观看| 亚洲最新在线| 国产精品福利导航大全| 草莓视频app网站| 国产无限资源在线播放视频 | 久久一级做A免费视频观看网站 | 超虎粉嫩自慰观看新朋友| 中文字字幕在线中文乱| 欧亚精品码1码2一码3码| 久久久久无码中| e欧美性情一线在线http| 最近视频在线播放免费观看| 最新国产精品无码片| 6090青苹果影院+日韩毛片| 国内精品自国内精品自线| aV三级片天堂在线观看免费| 人人色人人爱在线观看97| 黄色软件app下载3.0.3免费oppo版大全装| 先锋影音国产精品成人资源| 韩国一级婬片A片无码肉蒲团| 国产AV高清怡春院| 亚洲电影 有码 中文字幕| 污污网站国产在线观看| 超碰在线观看97| 在线观看国产一区亚洲bd| 国产午夜无码AV毛片| 国产超级精品视频在线观看| 欧美精品高清熟妇在线观看| 久久中文國產亞洲| 亚洲一区在线观看星宫| 内射白虎在线免费观看视频 | 久久亚洲Av片无码| 彩虹男GARY视频2023入口| 欧美性爱视屏免费| 一级av网站在线观看免费| 草莓樱桃秋葵奶茶网站| 亚洲欧美日韩第三页| 國產成人精品在線觀看| 日本在线播放高清视频| 亚洲精品一二三四| 强奷表妺好紧2| 日韩精品无码久久一区二区三区 | 可以免费观看的黄色网址| 国产另类欧美久久久精品| 亚洲AV成人无码久久精品公具 | 强奷漂亮的女邻居中文| 国产JK白丝喷白浆精品视频| 少妇亚洲精品高清| 国产免费久久| 欧美√a人爽一区二区三区| 国产精品v日韩精品v欧美精品v| 二区三区无码视频| 国产插逼网站苍井空精品aⅴ视频| 欧美一级片最新网址| 亚洲av片一区二区| 女人18片毛片免费| 日韩精品视频免费观看一区二区| 香蕉视频一看一爽| 久久天天躁狠狠躁夜夜Αv?浪潮| 国产色五月免费视频在线观看| 亚洲香蕉网在线| 欧美网站一区二区三区四区| 国产97在线视频网| 午夜实验区视频在线观看| 久久久av熟女人妻波多野结衣| 色五月天婷婷久久综合网| 中日韩亚洲无码AV电影手机版| 婷婷丁香五月综合| 亚洲高清欧美色图| 少妇性无码不卡免费专区| 美女醉酒一区二区三区| 在线无毒免费黄片| 国产欧美日韩一卡| 日日摸夜夜添夜夜添无码国产| 国产成人精品91在线| 亚洲AV成人精品网站在AV| 一区亚洲视频| 日韩精品欧美国产精品亚已满| 黄色一级毛片免费观看| 两性髙潮一级特黄毛片| 亚洲a无码国产精品色软件| 日韩在线观看免费一区二区三区| 天天躁日日躁狠狠躁av麻豆| 欧美日韩在线视频中文字幕不卡| 精品无码久久久久久国产..| 91亚洲aⅤ无码精品色午夜| 又粗又黄又硬又爽的免费视频网站| 亚洲香蕉网在线| 中出无码视频| 国产美女精品免费网站下载| 日韩综合一区二区。| 亚洲av日韩av无码一区二区| 页日本草草影院| 一区二区三区四区欧美国产 | 国产女人精品视频国产灰线| 亚洲AV无码专区国产乱码在线观| 亚洲日韩台美av在线| 国产AV无码一区二区三小说 | 日本足恋vk视频| 亚洲成人中文字幕资源网站| 亚洲中文字幕在线日| 国产特级av露脸特级毛片| 成人午夜精品久久久久久久蜜臀 | 久久综合久久性久99毛片| 老头添女荫道口视频| 国产盗摄偷窥在线观看优酷网| 精品日本成人一区二区三区| 免费一区二区三区高清免费播放| 视频午夜一级免费| 日韩精品高潮潮喷免费无码专区| 免费成人A片视频在线观看| 久久精品国产亚洲?V无码偷窥| 国产激情Xo自拍| 亚洲AV无码不卡尤物在线观看| 欧美欧美欧美欧美首页| 亚洲国产精品精品一区| 亚洲日韩国产欧美精品91| 欧美精品高清熟妇在线观看| 欧美午夜精品一二三区91| 国产成片在线免费观看| 中文字幕?v无码免费一区| 私人小影院久久久影院| 国产无码成本人电影| 在线成本人视频动漫www| 日韩一区免费视频99| 精品国产一区二区三区天美传媒| 亚洲AV永久无码偷拍| 91九色 囯产中文字幕| 爆乳裸体无码天堂AV白浆| 精品人妻码一区二区三区| 免费一级A乱子伧片中文| 欧美美色精品视频在线观看| 老师喂我乳我脱她内裤| 毛片高潮喷液视频在线观看| 2020久久天天躁狠狠躁夜夜| 午夜黄视频免费看| 特黄做受又大又粗又长又硬爽| 黑人白人淫乱潮喷视频| 亚洲东方av码在线影院| 用户可以在平台上观看各种麻豆福利视频 | 激情爽爽爽欧美一区二区三区| 丝袜日韩欧美综合| 国产精品亚洲а∨无国产午夜男女爽爽爽爽爽 | 一杆长枪直入两扇门免费日剧| 大片一区二区亚洲| 亚洲色大成网\站久久久| 亚洲手机视频| 丁香六月色综合深爱动情网 | 日韩欧美一级特黄片| 欧美一区二区三区正在播放| 91亚洲精品一二三区| 日韩不卡无码精品一区高清视频| 喷水高潮一区二区三区视频| 色94色欧美SUTE亚洲线路二| 久久影院综合精品视频| 男人的天堂网站导航| 色欲aⅴ亚洲情无码AV| 欧美综合日韩专区久久麻豆 | 91免费版视频软件| 伊甸园av无码专区线| 欧美成人免费观看A√| 免费成人网站天堂| 色噜噜AV男人的天堂| 丁香六月婷婷免费无毒不卡| 亚洲av永久无码天堂影院黑人| 激情无码毛片日韩 | 国产最新2021午夜福利| 欧美一二三区视频| 精品啪在线观看国产色| 国内精品久久人妻互换下载| 网站黄无需付费在线看视频足交| 国产剧情一区二区三区| 国内精品久久久久久麻豆| aⅴ毛片久久久久午夜福利HD| 中文人妻熟妇精品乱又伦视频| 精品成a人亚洲成a无码麻豆| 黄色一级免费在线看| 精品国产综合久久久久久国| 中文字幕亚洲精品在线播放| 尹人香蕉100久久綜合網站| 欧美三级在线观看不卡1区| 果冻传媒啊v免费播放视频| 2020国产精品视频色拍拍| 国产91热爆TS人妖陈雯雯 | 免费A级毛片手机版观看| 亚洲∧Ⅴ久久久无码精品| 老师好大好爽要喷水了视频| 一区二区三区在线视频免费看| 国产无遮挡色视频免费| 国产欧美黄片欧美亚洲性爱| 91久久精品无码| 久久久日韩精品一区二区| 精品视频在线播放一区二区三区| 久久96这里精品国产2020| 国产麻豆叶一涵剧情在线观看| 久久久久囯产精品无码免费| 一本色道久久88亚洲精品| 国产欧美亚洲蜜臀亚洲综合一区欧美 | 久久亚洲Av片无码| 国产又色又爽又黄在线观看| 69免费看婬秽视频| 欧美人ZOZO另类特级| 婷婷在线欧美视频激情| 中文字幕在线观看日韩少妇| 这里只有精品视频播放| 久久久久久久久69| 欧美久久?V免费无码久久木| 女同调教女同奶奴在线观看 | 国产精品不卡av在线播放资讯| 免费的av网址在线观看| 国产精品不卡av在线播放资讯 | 潮湿的心无删减版电影免费看| 樱桃国产成人精品视频| 亚洲欧洲一区二区久久| 三级黄色录像| 亚洲一级二级三级不卡| 在教室里磨B被男生发现小说| 久青草国产97香蕉在线影院| 久久久av熟女人妻波多野结衣| 亚洲AV永久无码偷拍| 国产出差在线播放| 青青视频人人看| 色呦呦国产在线视频| 欧美午夜成人免费不卡 | 中文无码A∨一区二区三区| 福利热门电影院全集免费观看在线播放 | 久久九九久91精品国产综合 | 麻豆 91精品国产91久久久久久青草| 日产中文字幕在线观看不卡| 性暴行奶水人妻BD电影| 日本乱人伦中文字幕| 国内色综合精品视频在线| av毛片成人午夜| 日韩毛片中文在线看| 欧美久久久黄色片| 久久成人毛片国产毛片| 色哟哟视频资源在线观看| 了解最新香蕉午夜视频| 国产成人无码av丝袜美腿| 伊人网在线免费观看视频| 性饥渴艳妇性色生活片在线播放| 欧美成人精品欧美一级乱黄日韩三级大片成人专区 | 亚洲国产精品日韩综合网| 无码成人免费全部观看| ;国产福利小视频| 亚洲日韩欧美一区二区三区| 色综合伊人丁香五月桃花婷婷| 亞洲綜合激情五月丁香六月 | 国产日批视频免费观看| 欧美一级黄片综合在线视频| 国产内地精品毛片视频| 国产成人一区不卡在线观看| 韩国兔费A级作爱片在线观看| 亚洲黑牛影视一区二区三区| 91午夜福利精品国产手机| 青青久草免费在线视频| 日韩精品成人AV在线播放| 免费观看理论片毛片| 欧美视频在线观看免费精品| 女人自己扒荫道口自慰| 亚洲精品国产精品国自产精品| 亚洲精品国产私拍在线| 欧美色图另类日本| 日本一区最新不卡| 青春热久免费精品视频| 国产日韩欧美各类影视全部免费观看| 欧美精品一区二区三区va| 自拍三级综合在线观看| 国产女人又紧又湿视频| 国产欧美日本看片在线| 欧美成人少妇一区二区| 仑乱高清在线一级播放| 无码毛片一二区视频免费播放| 中国国产一级毛毛片午夜影院| 老师好紧好滑我要进去| 欧美日韩精品免费| 国产JK白丝喷白浆精品视频| 真实深喉口爆吞精视频| 午夜亚洲精品第一页| 黄色小视频网站在线免费观看| 欧美一级大黄| 免费观看理论片毛片| 中文字幕欧美视频77| 精品日韩一区二区三区av片| 国产无码成本人电影| 精品一区二区久久久久黄大片| 制服亚洲日韩丝袜欧美| 惠民福利国产免费AV片在线看观看| 亚洲午夜无码成人影院| 一区亚洲视频| 国产亚洲一卡2卡3卡4卡国色天香九零| 黄片免费版在线观看| 99re6在线观看国产精| 午夜麻豆精品男人的天堂| 波多野结衣一区二区观看| 久久婷婷色综合| 亚洲AV男人的天堂网址| 亚洲制服高清无码| 日日日干夜夜爽天天| 成年大片免费视频播放琳琅| 亚洲人成网站18禁止中文字幕| HEYZO无码AV观看蜜臀| 日本少妇免费精品| 99精品无码午夜福利理论片 | 亚洲av片一区二区| 中日韩亚洲无码AV电影手机版| 国产成人亚洲综合分区小说| 91亚洲精品一二三区| 欧美一区二区三区免费a级视频| 一个在线国产sss| 久久AⅤ秘一区区| 欧美日韩激情综合在线| 亚洲精品久久久久中文字幕| 国产免费av片在线观看无需下载| 日韩免费一级无码av片 | 亚洲26uuuu最新地址| 国内福利无码视频在线播放| 久久精彩视频免费一区 | 国产女人又紧又湿视频| 美女一区二区在线观看av| 日韩中文字幕亚洲无线码 | 夜间男生福利免费网站污污污| 欧美在线人高清一区二区三区| 苍井空无码在线一区二区| 色欲少妇一区二区三区| 91情侣在线偷精品国产| 亚洲特级精品毛片| 久久r99久久精品国产99热| 捆绑凌虐一区二区三区| 超碰在线97免费公开网址| 色婷婷国产精品久久包臀| 国产毛片一区二区精品| 亲胸揉屁股膜下刺激视频午夜| 香蕉视频手机在线观看国产| 亚洲自偷自拍另类校园| 国产国产xxxx免费视频| 国产精品永久免费自在线观看| 欧美极品色午夜在线视频| 国产婷婷久久久久久| 成人午夜免费福利视频| 亚洲国产精品小说| 亚洲欧美中文日韩高清| 青x视频中文字幕m3u8| 天堂网www天堂在线资源链接| 漂亮的保姆5完整版| 国产精品第页婷婷综合五月| 精品少妇人妻av免费久久洗澡 | 男人边吻奶边挵进去a片小说李晨| 日韩少妇无码中文字幕| 欧美成人精品动漫H| 国产精品黄日韩成人黄亚洲| 日本成人不卡視頻| 无码国产成人Aⅴ在线播放| 免费的色播影院性播私人影院| 国产手机在线91精品观看| 色欲AV涩爱AV蜜臀AV| 欧美另类videossexo潮喷| 十八禁疯狂喷水自慰爽| 国产精品69久久久久孕妇| 久久精品国产亚洲小说专区| 激情爽爽爽欧美一区二区三区| 三级片大香蕉| 理论片OK电影天堂| 日韩欧美国产欧美在线观看| 日本不卡视频在线观看| 伊人久久大香线蕉综合影| 免费蜜菠萝app视频| 91久久精品无码| 啊啊啊国产午夜视频在线观看| 性饥渴艳妇性色生活片在线播放| 国产精品无码22页| 黄色小蝌蚪视频软件| 私人小影院久久久影院| 久久久亚洲成人aⅴ| 久久久久久AV無碼免費網站| 在线中文资源免费| 一杆长枪直入两扇门免费日剧| segui久久综合精品| 天躁夜夜躁2021aa91| 97国产精品资源| 新一级毛片国语版| 国产亚洲日韩网爆欧美| 美女国产一区二区高潮| 一区不卡免费视频| 国产特级av露脸特级毛片| 欧美亚洲国产日韩在线播放| 草莓视频app网站| 亚洲国产精品超久无码爱情岛| 精品色网视频亚洲| 萝卜视频在线播放| 国产精品 欧美亚洲| 亚洲一级做a爰片久久毛片无码| 亚洲春色αV无码专区在线播放| 国产精品白浆直流在线观看 播放| 成年人免费观看的视频| 欧美激情带中文字幕| 另类av在线亚洲| 麻豆va在线精品免费播放| 国产精品二区综合久久久久久| 欧美人与动牲交a欧美精品免费的| 曰本一區二區三區| 亚洲精品另类国产| 亚洲国产精品成人无人精品| 国产成人综合日韩精品无| 老司机精品99在线播放| 国产av日韩av网站| A网站一区二区三区| 国产成人综合尤物在线观看| 欧美另类清纯中文字幕乱码| 中字人妻内射喷潮第二页| 欧美一区二区肥逼高潮啪啪| 国产精品一区二区+在线播放| 欧美精品一区二区三区手机在线| 流白浆视频网站| 八戒影院中文字幕一区二区三区 | 国产精品亚洲αv天堂2024| 欧美日韩亚洲国产精品亚洲欧美日韩综合影院| 美女黄频很a全部免费| 福利片一二三九一久久国产| 四虎永久精品视频在线| 久久久99国产精品免费看| 亚洲精彩视频在线观看| 综合久久精品亚洲国产| 国产婷婷久久久久久| 亚洲美女国产精选| 国产美女三级在线| 99无码人妻一区二区三区色| 亚洲制服高清无码| 国产成人三级| 黄色啊啊一区二区三区在线观看 | 18在线观看尤物国产| 爆操美乳娇小学生妹| 国产福利2024最新在线观看| 亚洲电影在线| 欧美精品在线播放第三页| 精品人人操九九v综网| 欧美欧美欧美欧美首页| 岛国av在线一区二区观看| 少妇亚洲精品高清| 亚洲av片免费在线观看| 林熙蕾做爰猛烈叫床戏| 国产黄片精品久久| 欧美网站一区二区三区四区| 中文字幕人妻系列乱码| 日韩高清不卡区一区二区| 99久久精品国产综合| 五月天色综合| 亚洲国产无套无码?V电影| 亚洲三区在线观看| 特级女性婬片录像| 欧美人与动牲交欧美精品91| 成人啪精国产精品不卡视频互动交流 | 成人毛片女人毛片| 午夜福利在线观看免费视频 | 日本成人不卡視頻| 美国一级大黄一片免费| 永久免费观看a级在线观看| 亚州国产区二区三区| 国产精品日本在线| 男人亚洲天堂在线看| 国产一区亚洲欧美成人| 免费看a级片视频| ?v一区二区免费中文字幕| 国产女同在线播放| 午夜欧美成人福利| 日韩潮喷无码一区二区| 天美果冻女儿的梦想| 強暴人妻hd中文字幕电影| 人妻少妇中文字幕乱码免费| 国语最新自产拍在线观看| 国产在线精品电影| 狠狠躁天天躁无码中文字幕图| 国产黑色丝袜在线看网站| 亚洲精品国产一区二区三区四区| 亚洲aⅤ乱码一区二区蜜臀av| 精品呻吟久久av| 久久精品欧美一区二区久久这里只精品99re免费 | 香蕉视频污免费下载| 影院无码人妻精品一区二区| 亚洲丁香五月天久久久精品| 日韩高清免费在线观看| 亚洲AV永久无码偷拍| 亚洲精品国产成人99久久6蜜臀| 大力精品影院久久久久久漫画| 8x8x国产精品一区二区三区| 成人禁片免费播放35分钟| 四虎精品国产一区二区三区| 亚洲av无码精品中字| 东京热无码免费视频 | 亚洲国产成人久久综合同性| 午夜欧美福利视频一区二区| 精品无码国产污污污免费下载| 任我鲁任我在线精品视频| 国产日产亚洲系列最新| 国产色xx群视频射精| 欧美成人极品在线免费| 日韩亚洲国产精品一区| 欧美A级毛欧美1级A大片式放| 草莓视频成年APP| 韩国兔费A级作爱片在线观看| 大力精品影院久久久久久漫画| 天天久久尤物视频综合| 欧美乱伦中文字幕| 国产 一区 二区 无码| www.黄色等最新内容!| 无码av免费中文字幕久久| 男人的天堂网站导航| 成人亚洲a片v一区二区三区色欲| 精品一区二区三区Aⅴ天堂女女| 亚洲精品国产成人99久久6蜜臀| 久久精品午夜福利电影| 精品精品男人的天堂在线| 这里只有精品视频播放| 免费的av网址在线观看| 五月天成人无码| 亚洲aⅤ乱码一区二区蜜臀av| 看黄a大片爽爽影院69免费看 | 久热在线这里只有精品| 日韩亚洲国产三级| 国产美女自拍自拍视频| 黄色片网站在线观看| 久久狠狠五月婷婷| 成人看片欧美一区二区| 日本三级2020在线观看| 精品久久久久精免费| 无码操逼视频| 欧美日B 狠狠天天| 最新黄色片在线免费观看| 无码超碰日韩精品| 99清品国产91久久久久久无码| 99久久精品国产综合| 精品久久中出人妻系列| 成人久久精品流白浆国产| 中文字幕乱码久久一区麻豆蜜臀| 欧美色图另类日本| j8又粗又硬又大爽又长网站| KTV把奶罩解开让客人摸| 在线观看精品国产福利片2019| 精品亚洲国产成人av| 国产免费亚洲精品| 黄色无码国产| 最新欧洲日韩在线播放| 久久精品国产亚洲av高清四虎| 久久国产欧美日韩精品免费孕妇| 一区二区三区视频网站| 国产日韩av无码免费播放| 精品日本成人一区二区三区| 国产一级a爱片在线播放| 这里只有精品66| 人人操人人爱毛片| 久久99久久99精品免观看动漫| 99热播国产精品| 日韩熟女黄片| 亚洲国产欧美日韩精品| 免费版十大黄色软件最新内容| 无码成人免费全部观看| 中文有码色网视频在线观看 | 欧美有码在线一区二区| 亚洲春色αV无码专区在线播放| 最新av口爆吞精无码在线观看| 婷婷夜色成人网站| 午夜久久久久深夜福利| 在线观看黄色无毒| 尹人香蕉100久久綜合網站| 日韩欧美中文字幕无码| 国产精品第页婷婷综合五月| 一级特一级特色生活片| 国产一级a 播放| 国产人成高清亚洲精品| 久久久噜噜噜久久精品直播| 狼友视频专区国产在线观看| 熟女天堂av一区二区三区| 亚洲视频一区久久| 亚洲国产午夜福利在线| 久揄揄鲁精品一区二区| 黑人白人淫乱潮喷视频| 91青春福利在线 | 成人亚洲A片V二区三区久久 | 久久精彩视频免费一区| 精品不卡电影AV| 亚洲日本人成网站在线播放18| 她在丈夫面前被耍了无码版| 国产av电影在线观看| 亚洲日韩欧美一区二区三区| 成人在线免费激情| 国产手机在线视频观看| 中国人XXXXX69免费视频| 国产成人av尤物国产| 中文字幕久精品免费视频| 亚洲精品456在线播| 国产亲子私乱对白| 久久久久久999精品| 蜜臀av色偷偷av老熟女| 日韩午夜精品| 十八禁无码aⅴ免费网站| 青草视频在线观看精品无码 | 97國產精品系列在線觀看| 欧美一级黄片高清视频| 欧美日韩精品免费| 国产免费v片在线看| 又黄又好看的久久免费视频| 国产无码免费在线观看网站| 西西大胆色情一区二区三区| 国产亚洲综合在线观看播放页| 精品无吗Av一区二区| 女同性爽爽爽在线观看| 91精品露脸国产在线观看| 成人禁片免费播放35分钟| 国产乱淫av麻豆国产免费| 这里只有精品视频播放| 免费亚洲欧美日韩大片| 国产av一区二区三区天美| 被公侵犯的漂亮人妻中字葵司| 中文字幕无码电影| 亚洲第一乱码字幕小综合| 国产成人综合尤物在线观看| 92久久嫩草影院免费看| 免费一级欧美片在线观免看| 中文制服丝袜另类| 18禁黄网站禁片免费观看下载| 亚洲AV成人精品网站在AV| 国产又色又爽又黄刺激在线观看视频| 欧美丰满美乳XXⅩ高潮| 成人毛片免费视频观看| 性夜影院爽黄a爽免费视频app| 日本少妇做爰全过程二区| 97se亚洲综合在线韩国专区福利 | 亚洲AV色一区二区桃| 在线观看国产一区亚洲bd| 麻豆国产精品二区| 亚洲小说区视频区图片区| 亚洲色欲啪啪久久www综合网| 国产精品中文| 欧美色图亚洲自拍| 97久久人国产精品婷婷| 日本肥老熟妇在线观看| 国产成人综合尤物在线观看| 亚洲2017无码中文字幕天堂网| 色在线中文字幕大| 色婷婷色综合激情国产日韩大黑牛 | 免费欧美黄片亚洲操逼大吊| 成 人 在线手机版视频 视频| 色欲av一区二区三区蜜芽| 了解最新香蕉午夜视频| 国产精品久久专区中文字幕| 97国产精品资源| 欧美日韩一级黄片视频| 国产精品无码22页| 打烊后仅剩两人沙发| 国产suv精品一区二区66| 老司机精品福利视频在线| 欧美日本高清阿v视频在线| 国产在线精品一区二区三区av| 国产偷伦视频免费观看| 高清女女同性一区二区| 亚洲人妻无码?久久久久久| 免费看无码一级片| xvideos国产中文在线观看| 这里只有精品视频播放| 国产免费一区二区三区最新不卡 | 午夜欧美成人福利| 综合自拍无码国产| 人爱爱免费视频| 内射老妇女BBWXOX| 国产亚洲精品bt天堂精选| 日韩一级免费黄色片| 嫩草影院网站| 飘花午夜福利影院| 国产毛片一区二区精品| 免费成人美女在线观看| 小东西好几天没弄了还能吃吗| 欧美人牲交?欧美精区日韩| 国产午夜激无码A∨毛片护士| 国产性爱毛片| 国产极品视觉盛宴分类| 国产精品人人视频| 亚洲无码天堂在线观看| 欧美成aⅴ久久综合| 免费黃色网站在线观看| 国产成人无码a区在线观看软件| 99久久国产熟女| 2024精品极品国产成人| 国产欧美综合自拍| 欧美女同视频激情| 日本国产高清在线观看| 无遮挡在线观看国产片 | 手机日韩在线看片精品国产日韩亚洲一区 | 久久久久中文字幕| 免费人成在线观看视频平台| 国内一级黄片免费观看视频| 国产影视无码自拍| 高清国产综合久久| 忘忧草日本在线www| 亚洲一二三四最新观看| 久久精品国99国产精| 欧美人ZOZO另类特级| 亚洲三区在线观看| 中文字幕无码无码专区| 国产日韩av无码免费播放| 中文成人无码国产亚洲| 久久美女美腿视频网站大全| 高清成人一区二区三区| 14表妺好紧没带套18分钟| 99无码人妻一区二区三区色| 国产综合久久av| 性饥渴少妇xxxⅹ999| YIN荡到骨子里的SAO货| 国产免费久久| 老熟女色网视频天天操夜夜操| a欧美一级爱看视频| 夜夜高潮夜夜爽高清完整版| 高清特黄A大片中文| 日韩欧中文字幕精品| 成熟少妇高潮av片免费高清美女| 亚洲日韩国产欧美精品91| 亚洲国产熟妇无码日韩| 黄网站app视频免费下载在线观看| 正在播放91精品嫖妓达人| 青青青草网站免费视频在线观看| 手机精品国产福利视频在线| 骚逼好痒舒服受不了久久免费视频 | 久热亚洲综合| 麻豆av无码精品一区| 无码h成年动漫在线观看| 国产日韩欧美有码| 中文字幕国产一区欧美| 熟女天堂av一区二区三区| 国产免费亚洲精品| 成人免费黄色网| 亚洲一区 欧美一区| 久久人妻露出自慰18| 色AV一区二区三区麻豆| 欧美精品一区二区三区va| 色婷婷一区二区三区粉嫩av| 国产手机在线视频观看| 男人的Av色天堂| 欧美综合日韩专区久久麻豆| 中国无码人妻丰满熟妇| 一二三四日本视频中文| 影音先锋亚洲成aⅴ无码| 国产免费久久| 一级黄片一级黄片中国一级| 四季无码一区二区三区| 国产亚洲精品bt天堂精选| 黄色91网站免费在线观看| 欧美成人三级经典中文字幕| 国产在线欧美日韩一区二区| 国产三级在线现看影院廣大網友最新影片 | 中文字字幕在线中文乱| 亚洲日本高清一区| 国产精品一区三区无码毛片 | 亚洲国产视频香蕉网不卡| 免费无码成āv在线播放| 亚洲AV不卡无码国产粉色| 国偷自产一区二区三区欧美| 中文无码在线精品| 四虎国产亚洲精品一区久久| 在线观看国产日韩| 香港经典?毛片免费观看| 国产精品综合第二区| 国产无套护士在线观看直播| 日本国产一级毛卡片| 日本xxxxx黄区免费看下载| 熟女按摩spa偷拍| 欧美视频全部一区二区| 正在播放91精品嫖妓达人| 真人无遮挡猛进猛出视频| 国产精品黄日韩成人黄亚洲| 91影视亚洲成在线观看 | 69av在线观看免费亚洲| 无码自拍有码中文字幕无码不卡| 国产极品尤物va在线精品| 亚洲国产欧美日韩精品| 美女一区二区在线观看av| 色欲aⅴ亚洲情无码AV| 伊人久久大香线蕉综合影| 成人三级电影久久久| 亚洲高清国产一区| 青青青爽在线视频观看| 亚洲国产中文另类久久久精品黑人 | 日韩高清免费在线观看| 国产黄片很黄免费视频| 五月天成人无码| 国产亚洲精品综合在线a| 亚洲三区在线观看| 日本在线观看www鲁啊鲁视频| 日本高清欧美国产| 亚洲 欧美 国产 日韩 制服 bt| 亚洲av不卡在线观看| 浪荡尤物(高干、H)男男| 丝袜日韩欧美综合| 小东西好几天没弄了还能吃吗| 91精品国产网红女主播| 老司机福利精品视频| 国产在线视频导航| 欧美久久熟妇成人精品| 亚洲欧美卡通另类小说| 漂亮妈妈5韩国高清| 國產在線亂子倫一區二區| 成人毛片免费高清| 国产午夜精品一区二区三区嫩A| 亚洲AV男人的天堂网址| 曰韩一级欧美一级久久| 欧美人牲交?欧美精区日韩| 国产成人香港三级录像视频| 国产免费av片在线观看无需下载| 久久r99久久精品国产99热| 91精品中综合久久久久婷婷| 在线观看国产一区亚洲bd| 欧美日韩一级大片免费| 美女国产一区二区高潮| 美女131爽爽爽做爰中文视频| 久久成人免费亚洲一区视频| 国产免费欧美高清| 国产hh视频在线观看| 亚洲最大?V资源站无码?V网址 | 久久精品a一级免视看成人| 91pao国产在线观看| 又色又爽又湿视频在线观看| 歐美日韓成人在線| 国产在线ts人妖免费视频| 亚洲老熟女精品第一区| 亚洲av片免费在线观看| 日本最新高清一区二区免费看日本| 中文字幕国产一区欧美 | 亚洲国产成人精品成人| 女人18毛片a级女人水真多毛片| 黄视频在线观看www免费| 在线中文资源免费| 久草精品五月天婷婷| 用户可以在平台上观看各种麻豆福利视频| 六姊妹完整版免费观看| 国产理论精品三级| 国产成人av尤物国产| 国产揄拍视频在线观看激情| 织田真子中文字幕| 91理论片午午伦夜理片久久| 亚欧偷拍一区二区综合| 视频二区三区中文字幕在线| 日韩精品免费九色伊人| 不卡的AV免费在线| 激情粉嫩精品无码| 久久精品一区二区91| 日韩一本亚洲| 男人放进女人阳道动态图试看| 亚洲激情黄色大片免费看| 免费无码蜜臀在线观看| 久久久久中文字幕| 国产网红s视频在线观看| 精品国产乱码97久久久| 久精品无码午夜福利理论片| 无码h成年动漫在线观看| 无码A级毛片影院| 最新每日AV资源更新网站| 毛茸茸厕所偷窥xxxx| 一级做a爱黄无码性色永久免费| 亚洲中文字幕乱码在线| 亚洲日本欧美成人| (凹凸18+)亚洲精品8MAV在线观看 午夜国产成人福利片在线观看 | 亚洲最大?V资源站无码?V网址| 九九热这里只有精品18国产| 日本最新高清一区二区免费看日本| 欧美精品福利视频一区| 91久久精品国产91久久| 久久亚洲综合无码| 特级女性婬片录像| 八戒影院中文字幕一区二区三区| 欧美高清日韩在线| 三级免费乱伦国产| 九七电影97电影院理论| 国产女同真实视频在线观看| 亚洲欧美一区二区三区蜜芽| 一区二区三区视频网站| 日本无码人妻av在线九色| 林熙蕾做爰猛烈叫床戏| 嗯啊视频在线少妇| 国产婷婷久久久久久| 亚洲国产欧美另类专区| 国产成年女人精品视频| 玩弄少妇秘书人妻系列| 92精品国产自产在线观看481…| 97日日碰日日摸日日澡| 视频一区二区自拍偷拍| 大又粗的一级毛片又黄视频| 第一页亚洲精品| 亚洲无码在线加勒比| 日韩熟女黄片| a无码精品一区二区三区| 久久人妻少妇嫩草av无码叫床| 日本精品久久久久中文字幕5| 又色又爽又黄又刺激美女视频| 久久精品视频中文偷拍| 狠狠躁夜夜躁人人爽天天天天| 欧美日韩中文综合第一页 | 国产欧美日本看片在线| 欧美日韩亚洲国产精品亚洲欧美日韩综合影院 | 男人亚洲天堂在线看| 國產91在線九色| 真实深喉口爆吞精视频| 国产网红s视频在线观看 | 又黄又粗又猛国产免费| 又色又爽又黄的视频春意影院 | 美发店里的特性服务5D| 亚洲高清一区不卡| 亚洲AV无码不卡尤物在线观看| 蜜臀福利视频免费观看 | 国产美女自拍自拍视频| 国产一区二区青草久久| 毛片日产av一区二区三区四区| 永久免费观看啪啪网站| の教室の成熟した女教师| 亚洲精品成人综合中文字幕 | 亚洲电影在线| 国产精品亚洲片在线观看不卡蜜月 | 亚洲黄片av在线免费观看| 啊啊啊国产午夜视频在线观看| 日韩精品中文字幕无码一区| jk中文情趣三级一本正道一区| 久久久久.国产精品| 一级特级全黄| 黑人白人淫乱潮喷视频| 美女黄频很a全部免费| 在线观看日韩我的妈妈| 曰韩一级欧美一级久久| 1204你懂的国产国片免费| 99久久久无码国产精品9| 久久精品欧美日韩一区麻豆小说| 久热国产精品视频一区二区三区 | 国产综合 亚洲日韩中文| 日韩高清免费在线观看| 精品久久国产亚洲av麻豆| 2021国产成人综合网| 一级成人性色生活片免费看| 亚洲麻豆大神在线观看| 日本xxxxx黄区免费看下载| 亚洲jjzzjjzz在线观看| 久久精品免费小视频| 中文热免费在线视频| 亚洲av中文免费| 无码国产成人Aⅴ在线播放| 无码少妇一级av片在线| 国产亚洲精品bt天堂精选| 99精品又大又硬少妇毛片| 国产成人综合日韩精品无| 在线观看精品国产福利片2019| 欧美国产精品三级a三级三级| 麻豆精品网站在线观看| 一二三四日本视频中文| 东北老夫妇啪啪嗷嗷叫| 惠民福利欧美性欧美巨大黑白大战| 丝袜美腿中文字幕不卡| 日本免费三片在线观看| 密臀传媒.av手机在线成人无码| 亚洲av日韩av无码一区二区| 国产模特众筹精品视频| 2018手机在线亚洲成人?v| 777米奇影视第四色| 国产成人欧美在线视频观看| 国产成人精品亚洲曰本| 九九热这里只有精品18国产| 精品欧美乱码久久久久久张柏芝| 董卿一丝丝不挂裸体大乳照| 欧美 亚洲 精品 网站| 亚洲av福利天堂导导航 | 成人无码H免费动漫在线观看| 精品影視久久少婦| 中国老太婆BB无套内射| 激情粉嫩精品无码| 视频制服一区二区第三页| 久久久久亚洲AV成人片小说 | 92看片亚洲精品| 国产精品3DAV五月天无码| 精品人人操九九v综网| 久久久久亚洲AV无码午夜| 国产成人AⅤ国产| 强奷漂亮的女邻居中文| 男人边吻奶边挵进去a片小说李晨| 欧美黄色一级影院| 亚洲无码中文字视| 中文字幕乱码一区二区视频| 一级做a爱黄无码性色永久免费 | 宇都宫紫苑野外中文字幕 | 老司机精品福利视频在线| 使劲肏人妻中文字幕| 人人爽人人爽人人片av漫画| 污污网站国产在线观看| 1久久夜色精品国产九色| 又大又硬又爽又刺激的视频 | 亞洲綜合激情五月丁香六月| 国产大屁股精品无码视频免费区 | 深夜福利的视频免费| 一区二区三区免亚洲费| 亚洲AV中文无码字幕色最新不卡| 久久精品一品道久久精品91| 亚洲爽爽爽爽爽A片黄漫画| 国产一级美女| 日本乱亲伦视频中文字幕| 亚洲无码在线在线一区二区| 四虎亚洲精品私库av在线| 欧美黑人狂躁亚洲区综合| 中国国产一级毛毛片午夜影院| 国产精品丝袜视频| 91经典无码在线| 晚上睡不着想看点片4399| 八戒八戒在线视频免费观看3| 久久久7777888精品| 最新欧洲日韩在线播放| 国产精品狼人久久院| 影音先锋一区二区av资源| 亚洲专区首页在线观看| 国产无码乱伦自拍| 欧美日韩国产99精品| 深夜看e黄免费在线播放| 久久久精品亚洲国产无码一二三区 | 好吊区一区二区三免费看| 国产思思精品视频| 欧美最猛性xxxxx潮喷不卡| 国产高潮抽搐喷浆视频在线| 区一区二精品国产91| 色影音先锋国产资源| 爆乳裸体无码天堂AV白浆| 中国漂亮护士一级毛片| 美国亚洲AV无码| 人人爽人人模人人人爽人人爱| 无码人妻AⅤ一区二区三区九色| 亚洲欧洲日产国码无码VA| 国产色xx群视频射精| 亚洲欧美日韩第三页| 韩国年轻漂亮的继坶| 久久精品免费小视频| 不良研究所AV导航| 国产三级国产精品国产国在线| 精品视频在线播放一区二区三区| 日韩不卡无码精品一区高清视频| 亚洲A∨成人一区影片在线观看| 五月天色综合| 午夜被窝福利在线观看| 玖玖爱视频在线| 无码h成年动漫在线观看 | 精品国产一区二区三区香蕉9| 久久99久久99精品免费看小说| 免费亚洲精品人妻| 韩国亚洲欧美一区二区三区| 美国亚洲AV无码| 激情视频亚洲| 日本高清不卡不码一区二区| 丰满的岳乱妇久久久| 欧洲亚洲 视频一区亚洲视频一区在线视频观看| 青草青草久热精品视频国| 少妇大叫太大太粗太爽了a片小说| 國產成人天天5g影院| 国产乱人伦av麻豆网| 日韩少妇毛片一区二区免费| 无码人妻AⅤ一区二区三区九色| 国产欧美另类视频在线| 高跟翘臀老师后进式试看| 日本国产高清视频一二区| 一女n男巨h高辣h文np| 日本成人在线网站| 日韩国产aⅴ精品丝袜| 精品欧美一区二区在线| 女朋友的朋友5中汉字晋通话| 日本高清不卡不码一区二区| 欧美另类videossexo潮喷| 中文字幕一区二区日韩欧美| 曰韩内射六十七十老熟女影视| 国色天香社区视频手机版| 亚洲香蕉一本大道日韩在线| 国产 日本在线观看| 亚洲国产成人久久综合同性| 亚洲美女国产精选| 少妇一晚三次一区二区三区| 无码av高潮毛片无遮挡免费高清| 老头添女荫道口视频| 波多野结衣一区二区观看 | 性激烈的欧美三级视频中文字幕| 精品久久国产亚洲av麻豆| 午夜亚洲一区二区亚洲福利| 亚洲国产综合一区日韩精品等优质内容!| 欧亚精品码1码2一码3码| 善良的女秘书+日本大片| 亚洲日韩欧美一区二区三区| 亚洲av永久一区二区三区| 欧美日黄色大片久久网| 97成人免费视频在线观看| 99久久免费看精品无码视频| 日韩精品一区二区三区老鸦窝 | a无码精品一区二区三区| 四虎精品国产一区二区三区| 一级av网站在线观看免费| 东京热一精品无码av| 激情久久五月激情| 国产免费久久精品99不卡| 国产精品亚洲综合91一级乱黄网站| 91精品国产综合久久久情侣| 亚洲五月丁香中文字幕| 欧美电影一区二区三区| 4HC44四虎WWW在线影院动漫| 性激烈的欧美三级视频中文字幕| 无码一区二区一二三一区| 亚洲色第一次在线观看| 欧美 日韩 偷拍 视频| 亚洲精品成av人片天堂无码| 欧美日本一道本| 成人在线精品一区二区| 八戒八戒在线视频免费观看3| 国产无码乱伦自拍| 国产欧美日韩va另类不卡| 久久精品一区二区91| 黄色一级大片网美女| 尹人香蕉100久久綜合網站| 中文字幕一亚洲中文字幕电影| 欧美做暖在线视频爱视频| 性色一区二区三区av| 欧美日韩精品无码免费毛片| 最近综合中文字幕| 午夜福利欧美在线一区| 性暴行奶水人妻BD电影| 亚洲国产精品色区在线观看| 亚洲国产美女精品久久综合| 手机在线看片你懂的1024| 无码少妇一级a片在线观看| 91k国产在线观看尤物| 另类日韩中文字幕在线观看视频 | 中文无码一区| 免费A级毛片手机版观看| 91无码在线观看| 欧美熟妇vdeostv高清中国版| 警花全黄h全肉禁乱| 国产成人无码?V片在线观看不卡| αV无码东京热亚洲男人的天堂| 欧美另类videossexo潮喷| 久久精品視频久久人人| 国产欧美日韩在线观看一区二区视频| 久久99久久99精品免观看动漫| 精品卡一卡三卡四卡AⅤ新区| 久久 亚洲 二区| 国产精品自产高潮在线| 黄色片毛片免费看| 亚V综合在线欧美网| 国产二区91精品在线观看| 午夜黄色影院| 日韩精品福利片午夜免费观看| 无码aⅴ高清毛片在线看 | 青青青草网站免费视频在线观看| 精品国产一区二区又爽| 久久青草综合网| 老师腿开大点我添添公视频| 精品视频在线免费| 国产精选一区二区| 97色超级碰碰免费公开视频 | 色国模啪啪啪掰B视频| 国产成人8x视频网站入口| 人人爱天天做夜夜爽毛片| 韩国一级婬片A片无码肉蒲团| 国产强奷伦奷片| 精品无吗Av一区二区| 一级伦奷大片免费| 亚洲精品高清国产一线| 日韩三级片视频在线播放| 国产舔日韩射高清| 免费观看亚洲人成网站| 久久久亚洲导航av一区二区| 无码一区二区一二三一区| 欧美一线视频| 日韩美精品又色又爽中文| 青青青青久久国产免| 日本不卡精品一区二区三区| 亚洲成?人v欧美综合天堂| 成人无码三级在线播放| 重口另类无码av| 亚洲AV无码VS国产AV| 国产suv精二区九色| 最新国产成人av电影| 狠狠躁天天躁无码中文字幕图| 午夜福利在线观看免费视频 | 国产精品hd在线播放| 欧美a级成人淫片免费看| 日韩在线观看福利片| www久久久黄网站免费| 久久人人爽片| 国产欧美亚洲蜜臀亚洲综合一区欧美| 人人爱天天做夜夜爽毛片| 无码又爽又刺激、涩涩免费| 国产JK白丝喷白浆精品视频| 久久影院综合精品视频| 国产无码在线一区二区理论片 | 国产AⅤ邪恶超碰| 五月天色综合| 狼人综合色五月| 国产成人无码?V片在线观看不卡| 亚洲色大成网\站久久久| 99国产精品无码在线| 色欲AV涩爱AV蜜臀AV| 亚洲老熟女精品第一区| 久久少妇精品亚洲| 日韩一区二区三区免费观看av| 亚洲国产二区三区久久全集观看| 阿v视频在线免费观看| 精品国产成人亚洲午夜福利AV| 国产色xx群视频射精| 日本色网免费电影| 三级黄色片在线播放| 国产午夜精品一区二区三区嫩A| 人妻少妇中文字幕乱码免费| 无码av动漫精品专区| 欧美电影一区二区三区| 亚洲国产精品成人无人精品 | 亚洲2017无码中文字幕天堂网| 中文字幕午夜成人乱码在线| 免费看a级片视频| 男女下面一进一出好爽视频| 91亚洲精品一二三区| 激情丁香五月天婷婷五月丁香色色| 久久免费观看少妇高潮A级毛片| 中文字幕午夜成人乱码在线| 日本成人在线网站| 亚洲精彩视频在线观看| 欧洲精品一区二区无码不卡久久 | segui久久综合精品| 国产性无码性av观看| 免国产精品三级av在线| 亚洲欧洲一区二区久久| 久久久久国内精品破除母乳| 毛片日产av一区二区三区四区 | 操欧美日韩美女| 被按摩的人妻中文字幕| 打烊后仅剩两人沙发| 免费看a级片视频| 亚洲A永久无码精品毛片| 国产一精品久久久| 97se亚洲综合在线韩国专区福利| 精品人人操九九v综网| 日韩少妇无码中文字幕| 国产精品美女在线露脸| 国产精品美女久久久浪潮∨v | 美女激情精品一区二区三区| 日日日干夜夜爽天天| 又黄又爽的视频在线观看 | 欧美不卡在线观看一区二区三区 | 亚洲欧美日韩另类久久久精品| 中文字幕精品无码一区| 欧美网站一区二区三区四区| 天堂无码毛片毛片毛片| 日韩精品人妻系列无码| 国产 日韩 字幕 欧美| 免费久久精品电影午夜电影院 | 日韩精品一区二区三区四茋| 成人免费高清观看| 高辣H无码视频在线观看| 日日操夜夜添| 美女一区二区在线观看av| 久久国产精品波多野结衣一区| 欧美久久?V免费无码久久木| 精品伊人久久大香线蕉男人的天堂 | 男生喜欢的污网站免费| 一级特级全黄| 午夜久久一二三区| 国产亚洲欧美在线专区免费黄片在线看| 亚洲国产高清一区二区三区(www.nsk | 日韩免费黄色电影| 国产高清在线精品一区不卡| 91免费版视频软件| 99久久精品国产综合| 97se亚洲综合在线韩国专区福利| 亚洲无码在线观看a| 欧美人牲交?欧美精区日韩| 成人久爱av在线播放| 天天爽夜夜欢免费视频| 野花在线成人xxx视频日本| 日本va中文字幕亚洲久| 色棕色天天综合网| 丰满人妻跪趴高撅肥臀| 亚洲日本欧美成人| 日本亚洲欧洲免费一区| 黄色一级免费在线看| 国产成人无码精品久久久露 | 国产欧美综合视频二区| 亚洲第一页日韩专区| 狠狠色色二色色色二色色| 欧美一区二区肥逼高潮啪啪| 202z欧美人妻有码一区二区| 欧美美色精品视频在线观看| 亚洲高清无码一级在线| 惠民福利国产免费AV片在线看观看| 国产尤物在线综合网| 欧美午夜激情影院| 国产ts精品系列米兰| 99久久婷婷热re99久久| 老师腿开大点我添添公视频| 日本99视频在线观看| 狠狠躁日日躁夜夜躁2020老妇| 美女扒开尿眼让男人桶爽视频| 久久AⅤ秘一区区| 偷偷久久久久久影院| 国内精品久久久久久麻豆| 精品国产乱码久久久久久口爆网站 | 青青草视频污在线观看| 国产精品va在线观看手机版| 鲁大师一区影视| 国产超薄肉色丝袜脚视频| 午夜网站福利| 国产一区二区黑丝高跟| 内射老妇女BBWXOX| 91青春福利在线 | 国产高清视频一区三区| 国产成人精品一区理论在线| 国产成人8x视频网站入口| 精品一区二区三区Aⅴ天堂女女| 韩国大尺度禁片bd在线播放| 国产高清91专区| 天天躁日日躁狠狠躁av麻豆 | 免费精品国自产拍在线不卡| 国产精品一区六区九区| 歐美日韓國產va另類| 国产欧美一区二区三区精剧| 图片区小说区中文字幕| 韩国无码无卡在线观看| 99精品国产免费观看视频| 三级免费乱伦国产| 日本黄大片视频在线播放| 免费亚洲精品人妻| av看片在线免费观看| 国产综合久久av| 思思99思思久久| 免费观看亚洲人成网站 | 免费的色播影院性播私人影院| 又大又硬又粗再深一点视频| 亚洲性爱小视频试看| 久久精品国产99国产精2022| 亚洲A V无码电影在线播放| 欧美国产精品三级a三级三级| 视频网站无码专区遭暴露| 99久久无色码中文字幕1080p蓝光| 久久亚洲欧州男女精彩视频| 国产精品xvideos精品久久香蕉国产线看观看亚洲 | 国内精品人妻久久| 香蕉污黄在线观看 | 精品人人槡人妻人人玩日产欧| 国产成人香港三级录像视频| 国产精品丝袜尤物在线观看| 久久人妻精品99| 欧美日产欧美国产成人私人影院| tutu视频国产在线| 欧美综合日韩专区久久麻豆| 骚逼好痒舒服受不了久久免费视频 | 黑料不打烊站长工具| 国产无码成本人电影| 丰满少妇一级毛片免费播放器| 久久精品国产99国产精2022| 亚洲电影制服丝袜欧美| 精品久久久久久综合字幕| 亚洲免费视频2020| 人人插人人爽| 男生和女生打扑克软件| 亚洲一区二区精品偷拍| 亚洲电影在线| 精品成在人现av无码免费看 | 国产农村妇女野外牲交视频| 狠狠色色二色色色二色色| av免费在线观看网址| 亚洲日本欧美成人| 日本国产一级毛卡片| 国产AV无码一区二区三小说| 办公室艳妇潮喷费蜜桃AV| 国产精品一区二区久久| 丝袜美腿日韩中文在线| 亚洲午夜电影亚洲免费影院| 日韩福利一区二区| 浪荡尤物(高干、H)男男| 无码无遮挡在线观看免费| 亚洲最大成人AV在线天堂网| 日本不卡一区亚洲五月| 午夜黄视频免费看| 在线观看精品国产福利片2019| 性暴行奶水人妻BD电影| 国产激情久久99久久互動交流| 91久久综合一区二区三区桃色| 夜间男生福利免费网站污污污| 亚洲精品久久久久中文字幕| 黄色高清网站| 99精品又大又硬少妇毛片| 免费福利未满十八勿进| 无码6080yy私人影院在线看| 日本亚洲欧洲免费一区| 欧美一级午夜在线视频播放| 久久影视国产亚洲| 日本肥老熟妇在线观看| 嫩草影院网站| a毛片视频中文字幕| 国产手机在线91精品观看| 91青春福利在线| 亚洲香蕉久久一区二区| 老司机深夜福利在线观看网站| 色色精品资源网站| 久热国产精品视频一区二区三区| 在线观看精品日韩av| 深夜看e黄免费在线播放| 四虎亚洲精品私库av在线| 曰本一區二區三區| 无码h成年动漫在线观看| 国产精品黄日韩成人黄亚洲| 无码浓密的中出人妻| 99人妻少妇一区二区三区| 成人亚洲A片V二区三区久久| 亚洲欧洲一区二区久久| 曰批全过程免费视频观看69视频| 久久免费午夜福利院| 熟女按摩spa偷拍| a天堂在线资源| 国产三级中文无码在线观看| 亚洲欧美色国产中文字幕在线| 高跟翘臀老师后进式试看| 七十路一区国产精品一区| 久久疯狂做爰流白浆xxxⅹ高潮 | 美女搞AAADVD免费看| 国产成人综合尤物在线观看| 欧美日韩亚洲国产精品亚洲欧美日韩综合影院 | 成人精品一级视频| 少妇久久综合日本| 2024天天躁夜夜躁狠狠躁| 日韩免费自拍| 136国产福利导航| 无码成人AAAAA免费毛片| 97se亚洲综合在线韩国专区福利 | 91人妻丰满熟妇无码| 青x视频中文字幕m3u8| 老头添女人下部高潮视频| 精品成人无码一区二区三区| 深夜福利国产av| 国产激情小视频中文在线观看| 欧洲亚洲 视频一区亚洲视频一区在线视频观看| 二区三区无码视频| 国产亚洲一卡2卡3卡4卡国色天香九零| 中文字幕不卡第一页| 日韩dvb论理免费影视资源网站| 亚洲精品一二三四| 久久成人午夜视频| 婷婷在线欧美视频激情| 无遮挡在线观看国产片| 色婷婷一区二区三区粉嫩av| 精品国产一区二区又爽| 午夜网站福利| 韩国年轻漂亮的继坶| 欧美色网视频在线| jk自慰到不停喷水| 国产 日韩 国欧美 三区| 欧美成人色站在线视频| 国产在线啊看| AV在线高清高跟丝袜观看中文动漫版 | 国内免费av网站在线观看| 9191精品国产免费久久片| 国产午夜激无码A∨毛片护士| 欧美一级大黄| 一級黃色毛片免費看| a毛看片免费观看视频| 国产美女嘘嘘露脸在线播放| 精品伊人久久大香线蕉男人的天堂| 人妻三级日本香港三级极| 欧美成人精品欧美一级乱黄日韩三级大片成人专区 | 惠民福利国产免费AV片在线看观看| 色综合色国产热无码一| 中文字幕无码精品三级在线电影| 欧美精品久久久久久久影视| 欧美亚洲精品乱码免费高清| 亞洲綜合激情五月丁香六月 | 国产91欧美情侣在线| 亚洲欧美色国产中文字幕在线 | 日本va中文字幕亚洲久| 在线香港三级日本三级人妇| 一区二区三区免亚洲费| 日日干天天操懂色AV| 俄罗斯少妇一级毛片| 欧美www亚洲综合第二页| 日本视频网站色电脑| 思思99思思久久| A网站一区二区三区| 午夜国产视频亚洲精品影院| 国产欧美另类视频在线| 中文字幕在线有码| 亚洲高清国产成人精品久久| 中文一级特级毛片视频| 韩国年轻漂亮的继坶| 黄色片三级在线观看免费| 色老大国产成人av| 少妇一晚三次一区二区三区| 韩国三级电影在线播放| 日本黄色一级黄色片| 欧美日韩国产码高清综| 午夜国产视频亚洲精品影院| 国产精品农村妇女一二区| 天天操天天干天天摸| 欧美亚洲国产日韩在线播放| 国产免费v片在线看| 久久狠狠五月婷婷| 国产精品99久久精品无码小说| 美女激情精品一区二区三区| 久热这里只有精品中文字幕| 久久亚洲精品偷拍视频| 好爽又高潮了毛片免费下载| 无码在线观看综合国产| 亚洲∧Ⅴ久久久无码精品| 特级毛片无码无遮挡免费播放| av免费在线观看网址| 国产精品小妹在线观看| 国产中文字幕黄片| 国产精品v日韩精品v欧美精品v| 久久国产香蕉一区精品的直播内容| 狠狠躁夜夜躁人人爽天天天天| 国产欧美日韩18在线资源动漫| 成人无码三级在线播放| 美女高潮喷水网站| 东京热一精品无码av| 777米奇影视第四色| www.黄色等最新内容!| 亚洲AV无码成人精品区第一页 | 手机在线亚洲精品不卡| 国产精品不卡av在线播放资讯| 中文字幕无亚洲人成无码综合网| 欧美成人高清不卡视频免费| 亚洲āV永久无码精品三区在线4| 西西人体高清bb大尺度| 一级黄片特黄尻逼片| 久久久久久久久69| 国产录音一区二区三区| 男朋友找他朋友一起上我| 成人区人妻精品一区二区| 国产美女丝袜在线观看| 91精品人妻在线| 欧美色一区二区在线视频| 韩国一级婬片A片无码肉蒲团| 中文字幕在线观看日韩少妇 | 久久精品国产在热久久2019| 日韩熟女黄片| 欧美一区二区久久免费观看| 白洁一夜被躁了六次| 亚洲丁香五月天久久久精品| 男女在线免费视频| 国产成人啪精品午夜在线观看| 亚洲日韩台美av在线| 国产xxxx免费视频在线观看| 国产特级av露脸特级毛片| 日本少妇做爰全过程二区| 五月天成人无码| 在线观看亚洲一区| 夜色资源站国产www在线视频| 天天操天天干男同性恋2020 | 精品不卡电影AV| 一区二区三区免亚洲费| yjizz国产精品视频| 国产美女精品福利一区二区| 成年人高清无码性爱片 | 色樱桃影院亚洲精品影院| 99久久电影精品欧美一级| 骚逼好痒舒服受不了久久免费视频 | 国产欧美日韩一卡| 少妇大叫好爽受不了午夜视频| 歐美日韓成人在線| 免费毛片全部不收费app下载| 精品国产一区二区三区高潮视| 亚洲一级特黄大片| 在线观看精品国产福利片2019| 一级黄色大片视屏免费看| 天美影视传媒有限公司| 欧美日韩精品免费| 福利姬在线喷水一区二区| 橙子视频app免费下载观看| 欧美久久久黄色片| 三级视频亚洲精品社区| 久久婷婷人人澡人人爽人人爱 | 国产黄片很黄免费视频| 正在播放国产一区| 久揄揄鲁精品一区二区| 亚洲AV男人的天堂网址| 精品呻吟久久av| 99久久久无码国产精品9| 欧美区亚洲一区在线观看| 先锋资源吧中文字幕| 国产精品久久久久高潮| 97理论三级在线看| 美女午夜黄色网站在线观看视频| 欧美18vivode精品黑人| 日韩精品高清无码不卡| 欧美厨房肉欲情趣妇| 国产精品福利网红主播日韩欧美| 国产欧美黄片欧美亚洲性爱| 清纯国语对白videoshdcom| 色婷婷国产熟妇人妻露脸AV| 国产真人无码作爱视频免费中国| 四影虎库25mc免费打开| 色欲av蜜桃av一区二区三区| 免费一级欧美片在线观免看| 狠狠躁天天躁无码不卡| 男人j进女人p高潮免费视频软件| 丰满的人妻hd高清完整版| 黑人又粗又大免费视频 | 国产sm主人调教女m视频| 亚州AV成人无码久久精品| 国产亚洲曝欧美精品软件| 99精品无码午夜福利理论片| 久久国产欧美日韩精品免费孕妇| 久久久一本精品99久久精品97 | 国产+日韩+欧美| 国产丝袜制服av| 国产高清在线观看视频一线| 青草视频在线观看精品无码| 中文无码子幕久久久久久| 人人爽人人模人人人爽人人爱 | 在线不卡无码精品中文字幕二| 国产剧情一区二区三区| 青青视频人人看| 综合中文高清三级| 男人亚洲天堂在线看| 一个人看的www片免费高清中文 | 亚洲国产午夜美女福利天天看| 最新影视资源在线观看| 亚洲无码在线加勒比| 精品一区二区久久久久黄大片| 成 人 在线手机版视频 视频| 久久亚洲Av片无码| 亚洲成?人v欧美综合天堂| 亚洲国产中文成人久久无码| 亚洲欧美另类人妻| 自拍偷在线拍每日更新| 男人的天堂在線a無碼| 欧美性爱午夜福利群p视频| 老头添女荫道口视频| 四虎影视成人永久免费观看亚洲欧美 | 免费日批视频网站| 国产黄片精品久久| 国产黄色成人av| 国产成人亚洲欧洲图片| 国产中字无码| 美女在线一级毛片| 2024精品极品国产成人| 99re8热这里有精品国产| 色六月综合在线色五月国产在线| 日韩激情中文字幕欧美| 两性午夜刺激性视频| 曰批全过程免费视频观看69视频| 潮湿的心无删减版电影免费看| 国产AⅤ邪恶超碰| 美女少妇一级毛片免费| 日本国产高清在线观看| 亚洲最大的成人av在线播放 | 中文字幕不卡第一页| 欧美日韩成人妻精品丰满熟妇| 国产精品农村妇女一二区| 欧美一区二区网址网站| 天美果冻女儿的梦想| 草草久久精品国产一区二区三区 | 1024国产精品视频一区| 亚洲欧美另类激情综合区蜜芽| 成人福利午夜| 激情成人五月天成人AV免费在线| 一边摸一边抽搐一进一出视频| 伊人成长在线综合视频播放| 国产日批视频免费观看| 午夜久久一二三区| 一区二区三区四区成人午夜| 91午夜福利在线视频| 欧美日韩激情黄色大片| 色七七久久综合影院| 欧美人妻人人爽| 夜夜爽一区二区三区精品| 一级毛片毛片网址| 一区二区三区国产在线视频| 在线中文资源免费| 中日韩人妻人人爽| 一区二区在线看日韩视频| 国产黄在线观看免费观看网站不卡| 在线观看精品国产福利片2019| 久久成年视频| 一区二区三区日韩免费视频| 丰满少妇一级毛片免费播放器| 国产在线精品电影| 中文字幕午夜成人乱码在线| 日本中文字幕天堂网| 国产精品农村妇女一二区| 色婷婷国产熟妇人妻露脸AV| 亚洲欧美国产日韩精品一区| 亚洲国产中文成人久久无码| 一二三四日本视频中文| 国内精品久久久久2021| 国产 一区 二区 无码| 麻豆av无码精品一区| 色噜噜AV男人的天堂| 惠民福利欧美疯狂做受XXXXX高潮| 中国CHAIN同志GAY片国产| 亚洲美女国产精选| 国产亚洲精品日韩在线tv黄| 曰韩内射六十七十老熟女影视| 免费观看理论片毛片| 亚洲伊人精品国产欧美大战日韩91综合一区婷婷久久青草1024 | 亚洲av全裸情侣激情| 金瓶3之野鸳鸯大尺度观感| 欧美日B 狠狠天天| 国产精品电影在线| 啊灬啊灬啊灬快灬用灬力| 亚洲春色αV无码专区在线播放| 國產一區二區精品久久91| 免费观看国产精品视频大全| 欧美成人精品动漫H| 亚洲欧美国产影院| 日本韩国一区| 自拍三级综合在线观看| 午夜福利欧美在线一区| 国产精品美女久久久浪潮∨v| 色天堂在线观看| 国产成人av尤物国产| 不良研究所AV导航| {国产精品丝袜肉丝出水| 91经典无码在线| 爱福利视频一区二区精品| 自拍偷拍精品51视频| 粉嫩AV无码一区二区三区软件| 国语最新自产拍在线观看| 精品黄片一级在线| 日韩免费放播放区| 久久免费国产| 欧美性猛交xxxx乱大交高清| 国产一区精品推荐在线播放| 亚洲∧Ⅴ久久久无码精品| 国产午夜福利精品一区| 成 人 在线手机版视频 视频| 精品久久国产亚洲av麻豆| 日本精品区在线观看| 欧美群妇大交群| 综合人妖二区亚洲中文字幕| 国产人成人无码WWW| 中文字幕乱视频在线观看| 一区二区毛片三级片在线观看| 草莓成人草莓污视频| 亚洲中文字幕久久精品无码2021| 国产免费乱伦精品一区二区三区| 亚洲码欧洲站一区二区三区| 日本足恋vk视频| 影视三级中文免费| 国产成人香港三级录像视频| 日韩av片免费播放| 国产精品黄一区二区三区| 这里只有精品视频播放| 国产精品综合第二页| 97pao狠狠狠狠狼亚洲综合网| 韩剧《我的瑜伽教练》| 国产浪潮午夜精品在线| 国产日韩av无码免费播放| 99久久精品国产综合| 亚洲精品国产私拍在线| 久久久久亚洲AV成人片小说| 亚洲人成在线电影播放天堂色| 无码国产成人Aⅴ在线播放| 國產成人精品午夜視頻| 日本一道高清一区二区三区 | 色多多在深夜释放自己| 亚洲中文国产综合精品中文| 99自拍视频在线观看| 久久疯狂做爰流白浆xxxⅹ高潮 | 欧美一级黄片综合在线视频| 日一卡2卡3卡4卡新区乱码久久| 国产成人综合亚洲资源| 一级毛片国产视频| 少妇一晚三次一区二区三区| 国产一区高清亚洲激情网址| 曰批全过程免费视频观看69视频 | 天堂网www天堂在线资源链接| 好爽好紧免费30分钟视频| 中文字幕在线操喷| 亚洲欧美另类人妻| 国模亚洲天堂| 91精品露脸国产在线观看| 日韩精品一区二区三区老鸦窝| 精品久久久无码中文字幕廣大網友最新影片| 人人插人人爽| 欧美三级免费久久| 狠狠色噜噜狠狠狠| 任我鲁任我在线精品视频| 青青国产在线观看播放| 欧美最猛性xxxxx潮喷不卡| 欧美又大又粗又黄禁止片| 国产激情Xo自拍| 69免费看婬秽视频| 久久久久久999精品| 久久国产高清| 色棕色天天综合网| 毛茸茸厕所偷窥xxxx| 热久久中文字幕人妻系列| 国产欧美亚洲蜜臀亚洲综合一区欧美 | 午夜麻豆精品男人的天堂| 国产91丝袜在线播放九色| 四虎国产亚洲精品一区久久| 久久久久午夜精品精品| 国产精品播放器在线播放| 91亚洲精品一二三区| 国产成人精品一二三四区| 免费一级特黄特色黄录像| 天天干天天爽天狠| 97超碰碰国产精品乱码| 诱人的老师hd中文字幕| av漫画免费版在线观看| 狠狠爱亚洲五月婷婷av| 国产成人精品久久一区二区三区av | 黄色小蝌蚪视频软件| 99久久免费看精品无码视频 | 免费看国产一级片| 又大又长又粗又硬的色网视频| 亚洲日韩欧美一区二区三区| 一区二区三区无码观看免费视频| 国产精品午夜久久久| 思思精品视频九九| 国产精品999高清在线播放| 亚洲无码 另类小说| 2020久久天天躁狠狠躁夜夜| 国产原创免费av网站| 99清品国产91久久久久久无码 | 日韩精品人妻系列无码| 日本亚洲黄色不卡视频| 欧美日韩综合在线观看不卡| 午夜黄色福利电影| 国产在线免播放器视频| 欧美日韩在线视频中文字幕不卡| 精品成人无码一区二区三区| 一级免费黄色录像| 欧美一二区域欧美高清综合| 国产极品视觉盛宴分类| 国产浪潮午夜精品在线| 你懂的国产电影在线观看 | 人爱爱免费视频| 惠民福利国产免费AV片在线看观看 | 成人高清无码视频| 日本一道高清一区二区三区 | 无码首播在线影院在线播放免费完整版 | 一杆长枪直入两扇门免费日剧| 在线免费观看a级黄色毛片| 欧美成人一区二区免费| 欧美成人三级经典中文字幕| 网站黄无需付费在线看视频足交 | 办公室内衣动漫第二季| 国产精品99r8免费视频2022| 奇米成人四色眼影| 色婷婷一区二区三区粉嫩av| 久久一级片一级二级免费看| 国产中文无码视频| 国产精品一区二区+在线播放| 国产hh视频在线观看| 2024精品极品国产成人| 精品中文无码少妇Av毛片免费| 天天视频黄色在线观看完整| 国产精品农村妇女一二区| 精品国产一区二区三区成人品无码 | 另类av在线亚洲| 的故事!97欧美亚洲综合色| 亚洲人成影视交流| 国产欧美日韩大蕉蕉一区| 91嫩草国产线观看免费18| 亚洲日韩欧美一区二区三区在线观看| 色天堂在线观看| 国产三级国产精品电影网| 国产成人美女精品自在拍av| 欧美日韩2021卡一卡二乱码| 无码操逼视频| 国产高清视频一区三区| 强奷表妺好紧2| 麻豆丨国产丨白浆秘洗澡| 人妻久久精品一区二区夜夜嗨| 影视免费综合自拍| 亚洲av综合精品| 免费一级真人片视频| 国产hd老太婆中国老太60| 尤物在线亚洲无码| 天堂网www天堂在线中文字幕版下载| 亚州+欧洲+日本+国产| 亚洲无码一区二区偷拍网| 苍井空aⅴ免费播放视频| 羞羞视频网站免费| 日本黄视频在线观看| 欧美日韩在线亚洲一区综合| 国产欧美综合自拍| 越狱犯强奷漂亮人妻| 国产精品一区二区久久| 午夜黄色影院| 欧美性爱视屏免费| 欧美成人看片一区二区三区| 亚洲综合丁香五月| 国产超级精品视频在线观看| 欧美精品黄片永久免费| 国产成人大尺度深夜视频| 精品国产乱码久久久久久口爆网站| av 性爱图片国产一级| 一区不卡免费视频| 丰满女人一级毛片免费看| 国产视频福利| 国产+日韩+欧美| 日韩欧中文字幕精品| 国产一区精品推荐在线播放 | 亚洲精品一区二区三区久久| 黄色片毛片免费看| 无码免费影视国产| 国产无遮挡又黄又爽网站| 影视免费综合自拍| 亚洲爽爽爽爽爽A片黄漫画| 國產成人精品在線觀看| 久久手机免费不卡视频| 国产成人无码?V片在线观看不卡| 91久久精品国产91久久| 92精品国产自产在线观看481…| 8又粗又硬又大好爽喷水视频| 亚洲中文无码专区在线| 亚洲国产精品乱码福利| 欧美阿v我不卡久久| 国产成人av尤物国产| 最近最好的中文字幕2019免费| 国产sm主人调教女m视频| 午夜片无码区在线观看视频| 中文欧美乱码伦视频免费| 亚洲精品香蕉久久| 无遮挡在线观看国产片 | 成人午夜视频在线女人| 亚洲最新中文字幕大全| 亚州免费色网视频| 网曝门精品国产事件在线观看| 亚洲日韩欧美一区二区三区在线观看| 20岁大学生多次高潮在线观看| 天天添天天射| 精品一二三区| 日韩欧美一级特黄片| 欧美熟妇性开放| 制服亚洲日韩丝袜欧美| 亚洲婷婷日日综合婷婷噜噜噜| 中文字幕在线欧美亚洲青青草原| 麻豆VIDEOS在线观看| 两性午夜免费视频| 日本韩国一区| 91久久综合一区二区三区桃色| 亚洲av综合免费黑人| 流白浆视频网站| 无码又爽又刺激、涩涩免费| 国产欧美日韩大蕉蕉一区| 法国色情巜卧室秘密3| 高清色本在線www| 免费看AV网站在线观看| 国产无码在线一区二区理论片 | 欧美日韩另类在线高清| 欧美电影一区二区三区| 國內精品久久久久影院蜜芽| 97久久人国产精品婷婷| 另类av在线亚洲| 超虎粉嫩自慰观看新朋友| 国内精品久久人妻互换下载| 国产乱码1卡一卡二卡| 黄色毛片精品一级| 国产一线大片免费观看| 国产一级毛片精品完整版| 国产精品免费一级在线观看| 亚洲一区精品99| 欧美精品自拍 一区| 亚洲国产无套无码?V电影| 欧在线一二三四去| 日韩理论电影在线免费观看 | 国内免费av网站在线观看| 国产乱人伦av麻豆网| 日韩一级aa欧美成人| 黑料不打烊站长工具| 国产无限资源在线播放视频| 在线观看免费视频/国产97| 激情丁香五月天婷婷五月丁香色色 | 97人妻无码免费超级碰碰碰| 十八禁在线免费观看网站 | 中文字幕人妻丝祙乱一区三区| 岛国无码免费一本道直接| 亚洲婷婷日日综合婷婷噜噜噜| 国产精品hd在线播放| 亚洲毛片专区| 中文字幕久精品免费视频| 亚洲大尺度av无码专区| 国产91三级片在线观看| 夜色资源站国产www在线视频| 日本无码人妻av在线九色| 自拍一区综合图区第五页| 96久久精品人人槡人妻人人玩| 草久久久久精品视频| 国产亚洲一卡2卡3卡4卡国色天香九零| 国产无遮挡色视频免费| 国产手机在线91精品观看| 国产思思精品视频| a免费视频国产精品第7页| 欧美在线日韩免费2o19| 欧美亚洲综合另类国产情拍图 | 玖玖爱网站中文字幕高 | 中国精品自拍| 精品一区二区三区四区成人精品 | 亚洲综合一区二区三区| 浪荡尤物(高干、H)男男| 欧美成人国产精品视| 欧美综合性爱视频| 国产经典中文字幕mv影片| 中日韩亚洲人成无码网站| 久久精品国产亚洲亚洲www| 国产黄片精品久久| 亚洲国产精品乱码福利| 亚洲A V无码电影在线播放| 一区亚洲视频| 中文字幕亚洲免费看国产女女人视频免费播放 | 20岁大学生多次高潮在线观看| 无码少妇一级av片在线| 午夜男人的天堂| 香蕉99久久久久成人网站| 日韩午夜网站| 国产精品中年女人mdav在线| 亚洲不卡无码永久在线观看亚洲成av人无码综合在线观看 | 狠狠爱亚洲五月婷婷av| 无码免费影视国产| 国内精品自国内精品自线| 国产精品91免费| 惠民福利国产一区二区三区乱码| 国产亚洲一区二区精品| 国产在线精品一区在线观看;| 亚洲高清一区不卡| 欧美日韩激情综合在线| 精品欧美一区二区视频| 狼友视频免费观看国产精品| 国产无限资源在线播放视频| 黑人粗硬进入过程视频| 天天躁日日躁AAAAAAXX| 国产真人无码作爱视频免费中国| 久久成年人一级片| 国产亚洲成AV人片在线看| 手机看片直播福利永久国产| 中文乱码在线中文字幕中文乱码| 精品日本成人一区二区三区| 日韩欧美日本爽爽在线观看| 久久久久中文字幕| 1204你懂的国产国片免费| 性乌克兰18videos少妇| 台湾佬中文娱乐22vvvv| 美剧午夜电影频道爱情电影全集免费播放在线观看 | caoporen免碰在线视频| 美女视频黄的全是免费的| 最好看的2019中文字幕视频 视频| 日韩一级aa欧美成人| 91青春福利在线| 日韩av福利免费在线观看| 日一卡2卡3卡4卡新区乱码久久| 成人精品妖精视频在线观看| 日韩精品无码久久一区二区三区 | 久久久日韩精品一区二区| 偷拍女偷所一区二区三区| 国产成人AⅤ国产| 四虎永久在线精品2022| 原创国产AV剧情丝袜秘书| 国产成人精品亚洲曰本| 久久亚洲午夜精品毛片| 法国色情巜卧室秘密3| 四季无码一区二区三区| 国产精品日韩欧美4438| 日本一本二本大道高清视频| 中文字幕久精品免费视频| 日韩女性性开放视频网站| 国产精品影院亚洲国语| 国产小视频2021| 国产成人AV在线免播放观看新| 中文无码子幕久久久久久| 成人三级电影久久久| 精品无码久久久久久国产..| 午夜一级黄片免费看| 国产免费亚洲精品| 日本免费一区二区三区看片| 青草视频在线观看精品无码| 香蕉视频手机在线观看国产| 亚洲无码中文字视| 国产欧美日韩大蕉蕉一区| free国露脸china明星高潮| 天天操天天干天天摸| 国产人妻精品丰满大屁股干炮| 亚洲电影 有码 中文字幕| 喷水高潮一区二区三区视频| 爆乳放荡的女医生BD在线观看| 精品不卡电影AV| 日本国产高清在线观看| 亚洲高清无码一级在线| 中文无码au在线观看| 爱福利视频一区二区精品| 自拍内地三级在线观看| 亚洲精品另类有吗中文字幕| 亚洲精品综合久久国产二区| 好爽又高潮了毛片免费下载| 国产成人欧美在线视频观看| 手机日韩在线看片精品国产日韩亚洲一区| 国产自产拍精品视频免费看| 小嫩妇好紧好爽再快视频在线观看| 国产成人无码?V片在线观看不卡 | 国产乱淫av麻豆国产免费| 草莓视频无下载无限看| 免费成人A片视频在线观看| 天美影视传媒有限公司| 国产?v精品一区二区在线观看| 青草视频在线观看精品无码| 国产精品亚洲国产在国产成人精品| 欧美不卡在线观看一区二区三区| 2020久久天天躁狠狠躁夜夜| 国产三级在线现看影院廣大網友最新影片 | 影音先锋在线观看资源| 一区二区三区四区成人午夜| 成人区人妻精品一区二区| 欧美成人国产精品视| 亚洲人成在线电影播放天堂色| 插女人屁股午夜视频| 亚洲色在线永久免费视频| 国产黄片很黄免费视频| 欧美成人高清在线视频大全| A级毛片中文字幕不卡| 91精品大片在线观看| 999久久免费视频精品| 综合亚洲另类清纯图片第一| av免费在线观看网址| 久久疯狂做爰流白浆xxxⅹ高潮| 一本三道a无线码一区v小说| 日韩成人免费VA毛片| 久久97精品国产综合色av网站| 精品国产大片免费色综合久久久久久| 97色超级碰碰免费公开视频| 成人影片亚洲| 欧美插插插插插| 女人自己扒荫道口自慰| 日韩一级淫片一区二区三区| 国产精品99r8免费视频2022| 真人肉体一级毛片| 黄色禁无遮挡网站免费观看| 又黄又湿真实网站不付费| 日本有码在线观看首页| 亚洲欧美国产校园| 人妻三级日本香港三级极| 深夜福利视频一区二区三区| 国产美女做a全免费视频| 性色AV無碼一區二區三區人妻| 曰本人做爰大片免费观| 亚洲国产精品无码中文字视| 私人小影院久久久影院| 国产人妻精品丰满大屁股干炮| 免费看a级片视频| 國產成人精品午夜視頻| 国产综合区久久久久久| 无码av高潮毛片无遮挡免费高清| 高中国产开嫩苞实拍视频在线观看| 国产精品丝袜视频| 欧美精品福利视频一区| 国语最新自产拍在线观看| 欧美成人影片aⅴ免费观看| 青草视频在线观看精品无码| 亚洲国产av一区二区| 免费视频在线观看五丁香| 92久久嫩草影院免费看| 亚洲26uuuu最新地址| 日韩午夜无码TV影院| 国产美女视频cao| 日本精品区在线观看| の教室の成熟した女教师| 国产 日产 无码| 欧美一线视频| 一本无码久本草在线中文字幕 | 啊灬啊灬啊灬快灬用灬力| 国产成人拍拍拍高潮尖叫软件| 国产成人无码白浆视频在线播放| 一级无码免费啪啪| 亚洲精品五区九区在线观看| 天美影视传媒有限公司| 最新高清特级a级黄片一级 | 91亚色视频在线观看| 熟妇无码爱v在线观| 亚洲AV禁18无码成人| 一二三四日本视频中文| 国产精品亚洲视频醉红楼| 偷拍 自怕 亚洲 精品| 一区二区三区久久久精品黄色| 欧洲精品无码一区在线播放| 91秦先生在线视频| 亚洲国产欧美另类专区| 国产高跟短裙精品视频| 1024在线视频精品免费| 91久久精品国产91久久| 香蕉99久久久久成人网站| 最新每日AV资源更新网站| 欧美一二三区视频| 黄色一级毛片免费观看| 丰满少妇被爽到高潮喷水| 免费大香伊蕉在人线国产卡| 无码首播在线影院在线播放免费完整版| 香蕉视频免费看片亚洲国产精彩视频在线观看 | 成人免费福利影院| 欧美激情免费观看一区| 四季亚洲av日韩av无码中文| 日韩?v女优电影一区二区精品无码毛片| 久色天使在线视频一区二区| 大道东京热无码av| 91嫩草国产线观看免费18| 亚洲中文字幕久久精品无码2021 | 一级一级a爰片免费看在线| 国产suv精品一区二区66| 国产亚洲精品综合在线a| 国产一区二区三区欧美中日韩| 国产高清在线自在| 亚洲黄色日韩网站| 精品国产综合久久久久久国| 国产女人精品视频国产灰线| 成人午夜精品久久久久久久蜜臀| 亚洲无码精品·人妻| 香蕉国产精品一区二区| 日韩欧美中文字幕无码| 久久人人爽片| 欧美丝袜在线视频一区二区三区| 精品精品男人的天堂在线| 亚洲中文字幕久久精品无码2021 | 国产女同在线播放| 最新影视资源在线观看| 日本有码在线观看首页| 一级Aⅴ片在线看污黄| 国产精品免费一级在线观看 | 高清精品综合中文| 国产激情在线视频剧情版| YIN荡到骨子里的SAO货| 极品少妇高潮乱语456视频 | 俄罗斯少妇一级毛片| 桃色无码AV天堂| 50岁女人毛茸茸风骚视频| 妖精视频在线观看免费版网站| 亚洲free性XXXX护士白浆 | 国产激情淫妇毛片| 国语对白在线免费视频| 亚洲av片一区二区| 久久天天躁夜夜躁狠狠躁2015| 成人免费黄色网| 美国一级大黄一片免费| 成人黄色免费大片| 日韩一区极品美女裸视频网站| 日本韓國三級國產歐美| 女同性爽爽爽在线观看| 小东西好几天没弄了还能吃吗| 中文日韩欧美在线| 91亞洲播播 免費網站| 天天亚洲 都市 校园 激情 另类| 亚洲视频欧美视频| 成人免费试看| 国产JK白丝喷白浆精品视频| 亚洲最新中文字幕大全| 影音先锋日韩精品| 便劲快到高潮了国产对白在线| 在线亚洲精品国产一区麻豆 | 一区二区三区视频网站| 丰满的岳乱妇久久久| 欧美日韩精品免费| 中文热免费在线视频| 欧美成人免费观看aⅴ| 精品欧美激情一区二区三区| 麻豆国产vA 免费精品高清在线| 精品久久一区另类| 青x视频中文字幕m3u8| 亚洲性爱小视频试看| 免费毛片全部不收费app下载| 精品国产一区二区三区成人品无码| 欧美女同视频激情| 国产成人精品亚洲77美色蜜v| 国产最新2021午夜福利| 激情粉嫩精品无码| 欧美综合色婷婷欧美激情| 國產成人精品午夜視頻| 精品无码久久久久久国产..| 亚洲欧美自拍偷拍一区二区| 亚洲色在线v中文字幕app| 亚洲日本网站在线观看| 亚洲美女国产精选| 国产内地精品毛片视频| 2021最新国产va在线| 国产午夜片无码区在线播放| 亚洲视频小说之无码| 草中文字幕在线观看| 亚洲视频一区手机版下载| 亚洲国产精品超久无码爱情岛| ?国产免费观看视频一区| 91经典无码在线| 成人国产综合视频网| 亚洲高清一区不卡| 久久天天躁狠狠躁夜夜Αv?浪潮| 情人伊人久久综合网毛茸茸| 成人CILICILI黄短视频APP| 一区二区三区国产亚洲电影| 亚洲国产欧美另类专区| 青青视频人人看| 国产成人高清一区| 国产黄色成人av| 日韩亚洲欧美伦理| 中文字幕午夜成人乱码在线| 國產91在線九色| 亚洲国产综合无码一区二区sm| 久久九九久91精品国产综合| 波多野结衣a∨免费观看| 国产又色又爽又黄刺激在线观看视频| 任我鲁任我在线精品视频| 黄色啊啊一区二区三区在线观看| 午夜人国产毛片视频在线直播| 精品国产美女午夜喷天仙| 日本留学生在线精品| 免费看全黄色的a毛片| 国语最新自产拍在线观看| 国产精品第页婷婷综合五月| 国产suv精品一区二区66| 毛片高潮喷液视频在线观看 | 日韩精品一区二区三区A片| 免费观看国产精品视频大全| Av网址国产在线观看| 曰本人做爰大片免费观| 国产一级精品兔费播放| 野狼社区久久社区| 免费大香伊蕉在人线国产卡 | 国产内射在线激情一区| 日韩高清不卡区一区二区| 人妻纶乱a级毛片免费看初女| 日韩在线观看免费一区二区三区| 久久久久亚洲AV成人片小说| 日本毛片视频免费播放| 精品少妇大屁股白浆无码| 紧身裙女教师三上悠亚| 亚洲另类视频在线观看| 欧亚精品码1码2一码3码| 亚洲国产不卡一区二区三区| 国产模特众筹精品视频| 国产成人色图在线播放精品在线| 亚洲欧美另类人妻| 免费无码蜜臀在线观看| 亚洲欧洲日产国码无码VA| 中文字幕日韩精品xxxx| 三级成人国产在线观看| 欧美一区二区三区四区啪啪| 最新黄色片在线免费观看| 国产在线喷潮视频免费观看| 日本一区最新不卡| 99精品又大又硬少妇毛片| 中文av国语对白| 色综合色国产热无码一| 一区亚洲视频| 成人野外激情免费观看视频| 亚洲黑牛影视一区二区三区| 国产第二页久久精品| 97久久人国产精品婷婷| 五月天成人无码| 成人精品一级视频| 欧美无砖专区| 久久亚洲国产中文精品影院| 国产综合久久av| 都市激情中文字幕| 不卡的AV免费在线| 十八禁疯狂喷水自慰爽| 成人在线免费激情| 精品一区二区三区爱欲| 强奷表妺好紧2| 亚洲AV成人一区二区三区网站| 亚洲美女国产精选| 隔壁邻居波多野结衣在线播放| 99热精品毛片全部国产动态| 中文乱码日韩av| 九九视频在线| 五月激情综合婷婷欧美图片视频 | 亚洲∨欧美∨国产人成网 | 黄色软件app下载3.0.3免费oppo版大全装 | 欧美日韩中文综合第一页| 一区二区三区成人黄片免费看| 一区二区三区在线看| 欧美午夜激情影院| 无套进入无套内谢A片| 国产欧美黄片欧美亚洲性爱| 蒋舒含校花的yin荡大学生活| 中文字幕一亚洲中文字幕电影| 国产盗摄偷窥在线观看优酷网| 国产在线啊看| 精品无码αv一区二区三区| 国产免费人成在线视频| 日本视频网站色电脑| 欧美成人少妇一区二区| 亚洲片在线视频| 久久久99国产精品免费看| 超清中文乱码字幕在线观看| {国产精品丝袜肉丝出水| 日本女w黄视频a| aaa精品在线免费视频| 国内精品久久久久2021| 精品精品男人的天堂在线| 自拍欧美国产在线| 无码在线欢看不卡| 歐美日韓在線精品成人綜合網| AV在线高清高跟丝袜观看中文动漫版| 国产又粗又深又猛又爽又在线观看 | 国产精品久久99一区| 国产免费久久| 日韩欧美精品有码在线播放免费| 91探花国产在线综合精品| 91香蕉国产线观看免费全集| 私人小影院久久久影院| 真人无遮挡猛进猛出视频| 日韩一区二区av| 91精品国产网红女主播| 亚洲国产日韩曝欧美| 精品国产污污免费网站入口在线| 一区二区毛片三级片在线观看| 伊人网在线免费观看视频| 91亚洲精品一二三区| 日韩精品成人网页视频在| 国产免费久久精品99不卡 | 小说区图片区视频区| 人妻中文字幕在线视频欧| 一区二区欧美日韩亚洲| 中文日韩无码制服| 久久91精品福利久久久久久| 色欲av蜜桃av一区二区三区| 女朋友的朋友5中汉字晋通话| 混乱的生物课月老师后续视频| 久久综合一区无码专区| 亚洲欧美日韩综合中文字幕| 97色超级碰碰免费公开视频| 五月丁香开心欧美久久| 亚洲第一站精品久久久久久| 免费国产一级| 亚洲精品五区九区在线观看| 欧美日韩精品免费| 国产精品狼人久久院| 成人?级视频在线播放| A级黄片视频免费| 欧美日韩综合在线综合网| 国产精品美女久久久99麻花豆传媒剧国产| 麻豆成人在线免费视频| 最新奇米7777第四视频| 92看片亚洲精品| 免费国产一级| 美女国产一区二区高潮| 2022无码在线免费视频| 免费十分钟在线播放av| 国产一级美女| 亚洲香蕉久久一区二区| 女生怎么奖励自己?| 91影视亚洲成在线观看| 免国产精品三级av在线| 欧美国产精品激情在线| 草莓视频免费下载污| 一级黄片一级黄片中国一级| 亚洲第一区免费二| 国产精品V欧美精品片源丰富、内容全面| 欧美国产精品激情在线| 成人久久18秘 免费网站免费| yw193尤物网站在线观看| 欧美成人免费观看A√| 日韩人妻视频精品在线| 无码人妻永久免费视频| 日韩国产aⅴ精品丝袜| 国产极品美女久久久久| 日一卡2卡3卡4卡新区乱码久久 | 草莓视频下载色版| 无码毛片一二区视频免费播放| 国产高清精品免费精品| 精品无码αv一区二区三区| 亚洲五月丁香中文字幕| ?国产免费观看视频一区| 亚洲一二三四最新观看| 欧美97色伦欧美一区二区日 | 日本乱妇18日本乱妇18p| 精品久久国产亚洲av麻豆 | 欧美成人精品欧美一级乱黄日韩三级大片成人专区 | 202z欧美人妻有码一区二区| 日韩亚洲国产三级| 日韩福利一区二区| 亚洲2017无码中文字幕天堂网| 婷婷在线欧美视频激情| 女高中生高潮娇喘流水视频| 激情久久五月激情| 肉滚滚的大屁股熟妇| 国产成人无码a区在线观看软件| 14表妺好紧没带套18分钟| 男女午夜爱爱福利专场| 国内精品久久久久久麻豆| 国产一区在线观看不卡| 一级黄97毛片在线播放| 久热亚洲综合| 国产老熟女六十路| 国语最新自产拍在线观看| 国产真实伦子伦老人视频| 免费黃色网站在线观看| 高清在线观看美女av| 中文在线一级视频免费| 超虎粉嫩自慰观看新朋友| 日本一道高清一区二区三区| 亚洲欧美国产影院| 免费看欧美日本韩综合国产成人一区二区三区在线 | 亚洲国产视频香蕉网不卡| 亚洲熟妇av午夜无码不卡| 成人在线一区二区在线| 国产91热爆TS人妖陈雯雯| 免费一级毛片全播放| 成人看片欧美一区二区| 国产成人精品一区理论在线| 九九热这里只有精品18国产| 欧美插插插插插| 天天躁日日躁狠狠躁av麻豆 | 精品久久中出人妻系列| 国产无限资源在线播放视频| 日韩毛片网站在线| 久久精品欧美日韩一区麻豆小说| 天天日成人黄片| 亚洲国产美女精品久久综合| 在线观看亚州国产| 日韩潮喷无码一区二区| 丰满的人妻hd高清完整版| 精品日本成人一区二区三区| 久久电影院综合色一区二区| 精品久久久久久人妻av热| 国产插逼网站苍井空精品aⅴ视频| 尤物yw午夜国产精品大臿蕉| 在线国产一区| 亚洲先锋资源亚洲中文字幕在线| 亚洲VA中文慕无码久久AV| 丰满少妇被爽到高潮喷水 | 久久成年人一级片| 无码免费影视国产| 国产高潮无码av片在线观看| 少妇特黄一级免费观看视频| 色欲少妇一区二区三区| 日韩中文国产欧美三区| 亚洲无遮挡无码A片在线| 老熟女色网视频天天操夜夜操 | 欧美成人影片aⅴ免费观看 | 99久久国产熟女| 日韩大片在线永久免费观看网站| 成人CILICILI黄短视频APP| 日本亚洲欧洲免费一区| 忘忧草日本在线www| 国产放荡对白视频网络| 免费版十大黄色软件最新内容| 国产性无码性av观看| 中文字幕之人妻中出| 了解最新天天搞夜夜| 在线播放日产www| 在线视频不卡国产在线视频不卡| 国模一少妇一色欲久久AV| 亚洲国内精品一区二区三区| 国产原创免费av网站| 女人十八毛片免费观| 长篇乱肉合集乱500小说小莹| 密臀传媒.av手机在线成人无码| 欧美日韩综合在线观看不卡| 男人扒开女人双腿猛进视频| 少妇无码a级毛片日韩精品| 美女午夜黄色网站在线观看视频| 欧美日B 狠狠天天| 亚洲国产欧美另类专区| 国产精品亚洲aⅤ涩涩| 日韩久久久免费播放| 久久99精品国产麻豆91婷婷| 综合自拍无码国产| 亚洲 欧洲 日产 专区动漫| 国产精品一区在线日本韩国| 一国产二欧美三日韩| 国偷自产一区二区三区欧美| 亚洲尺码欧洲尺码的对照| 天天躁日日躁狠狠躁av麻豆 | 香蕉99久久久久成人网站| 又黄又爽的视频在线观看| 国产成人亚洲综合分区小说| 亚洲∨欧美∨国产人成网| 亚洲jjzzjjzz在线观看| 一区二区无人在线观看免费高清| 欧美性爱一级片免费| 亚洲AV无码国产日韩| 亚洲AV不卡无码国产粉色| 日本足恋vk视频| 亚洲无码高清在线不卡一二三区| 亚洲成综合人影院| 亚洲午夜精品一级毛片下载| 91香蕉污污网站在线观看免费 | 亚洲电影在线| 精品欧美一区二区在线| 欧美国产精品激情在线| 久久窝窝国产精品午夜看片久久久 | 欧美成人www在线观看男男| 国产无码激情唉v| 中国漂亮护士一级毛片| 老司机深夜福利在线观看网站| 中国精品自拍| 精品精品男人的天堂在线| 少妇无码a级毛片日韩精品| 精品无码一区二区三区涩涩屋| 91麻豆国产在线播放| 视频网站无码专区遭暴露| 国产AV无码一区二区三小说| aⅴ网站在线免费观看| 亚洲国产成人久久综合同性| 国产一区在线观看不卡| 无码麻豆国产精品| 久久夜夜少妇熟女| 亚洲电影制服丝袜欧美| 在线成人爽a毛片免费软件| 国产精品无码专区AV在线播| 国产成人丝袜美女厕所视频| 中文无码在线精品| 国产极品美女到高潮| 草莓视频app网站| 野狼社区久久社区| 欧美一级视频免费观看| 国产原创免费av网站| 婷婷夜色成人网站| 五月丁香色婷婷国产一区| yw.193.c㎝国产在线观看 | 中文自拍日韩在线播放视频网站| 中文字幕1区2区在线观看| 91在线无码精品秘人口| 国产成人精品无套在线观看| 免费欧美黄片亚洲操逼大吊| 亚洲free性XXXX护士白浆| 亚洲A日韩久久久久久| 97理论三级在线看| 五月亭亭中文字幕| 四虎国产亚洲精品一区久久| 丁香六月色综合深爱动情网| 亚洲欧美视频人妻制服中字| 日韩一区极品美女裸视频网站| 嫩草在线观看免费高清视频| 精品国产污污免费网站入口在线| 偷拍 自怕 亚洲 精品| 一级欧美一级日韩片老司机100| 色哟哟视频资源在线观看| 国产在线喷潮视频免费观看 | 白浆喷水网站导航| 国产精品 欧美亚洲| 一国产二欧美三日韩| 日本成人在线网站| 成人免费黄色网站无毒下载| 6080YY理论在手机观线视频| 69久久夜色精品| 欧美一级黄片综合在线视频| 亚洲欧美国产影院| 美女高潮喷水网站| 亚洲精品嫩模酒店援交土豪| 中文制服第一页专区日韩| 拍国产在线的州亚又久区一二三四| 忍不住的亲子中文字幕| 一区二区三区视频网站| 极品美女一二三区在线| 色欲av蜜桃av一区二区三区| 日韩欧美中文字幕无码| 欧美精品福利视频一区| 久色天使在线视频一区二区| 久久久久囯产精品无码免费| 精品一二三区| 日本三级一区二区视频| 又粗又爽又黄毛片无码AV| 国产欧美另类视频在线| 国产精品网友自拍| jk国产在线精品丝袜| 日一卡2卡3卡4卡新区乱码久久| 精品三级AV在线网站| 国产揄拍视频在线观看激情| 国产成人丝袜美女厕所视频| 久久精品国产在热久久2019| 国产无码乱伦自拍| 亚洲精品一区二区三区久久 | 丰满的岳乱妇久久久| 精品国产丝袜一区二区| 国产精品美女在线露脸| 美女黄频很a全部免费| 久久久久国内精品破除母乳 | 免费大香伊蕉在人线国产卡| 无码日韩三及啪啪| 草莓视频网站| 日本在线做H视频在线观看| 国产成人无码av丝袜美腿| 尤物yw午夜国产精品大臿蕉| 中文字幕之人妻中出| 亚洲大尺度av无码专区| 夜夜爽一区二区三区精品| 日本一区最新不卡| 亚洲AV噜噜狠狠网址蜜桃尤物 | 91理论片午午伦夜理片久久| 粉色视频免费高清视频| 一級黃色毛片免費看| 2024国产三级精品最新在线| 韩国兔费A级作爱片在线观看| 亚洲综合在线观看片尤物| 男人亚洲天堂在线看| 丝袜日韩欧美综合| 彩虹男GARY视频2023入口| 美发店里的特性服务5D| 一本综合九九国产二区| 国产1024视频精品91| 亚洲国产精品色区在线观看| 免费观看亚洲人成网站| 久久天天躁狠狠躁夜夜Αv?浪潮| 你懂的免费在线观看| 橙子视频app免费下载观看| 在线观看色视频网站| 色六月综合在线色五月国产在线| 国产精品10p综合二区| 高清中文少妇三级| 国产在线视频制服丝袜| 国产精品一区的视频| 国产av黄色一级毛片| 性色AV無碼一區二區三區人妻| 久久看一级毛片视屏| 玉女阁福利视频导航| 国产精品刺激好大好爽视频| 欧美成人影片aⅴ免费观看| 成在线人免费视频播| 久久无码精品三级| 欧美国产日韩综合二区| 一本精品99久久精品66最熱門最齊全的電影 | 中文字幕在线有码| 久久婷婷综合国产| 美日韩一区二区三区精品视频| 精品成人无码一区二区三区| 国产精品国产亚洲| 久久国产精品波多野结衣一区 | 中文字幕?v无码免费一区| 手机看片直播福利永久国产| 国产三级片视频久久| 一级黄97毛片在线播放| 无码在线欢看不卡| 手机看片1024人妻首页| 国产美女爽到喷出水来视频| 小草影视视频大全| 国产精品3DAV五月天无码| 黄色片在线免费看国产| 国产午夜精品一区二区三区嫩草网站| 八戒八戒在线视频免费观看3| 免费看国产一级片| AAA一级淫秽毛片在线观看| 国产精品一区二av| 成人毛片免费视频观看| 啊啊啊国产午夜视频在线观看| 麻豆v?一区二区三区久久浪。| 女生怎么奖励自己?| 国产品无码一区二区三区在线| 站亚洲最大的网站| 精品正在播放国产| 在在线看台湾高清毛片电影a| 2020人妻中文字幕乱码在线 | 久久成人毛片国产毛片| 久久久人人涩AV男人的天堂 | 无码国产成人Aⅴ在线播放| 五月天婷婷丁香综合在线| 欧美人成视频无需播放器| 国产精品~色哟哟| 国产精品、欧美精品、精品动漫日本| 性色av网址大全| 色老大国产成人av| 又黄又爽的视频在线观看| 都市激情中文字幕| 性欧美暴力猛交xxxxx高清| 一级大片免费看| 国产成人无码视频网站在线观看| 91久久国产香蕉熟女线看| 十八禁视频网站| 国产真人无码作爱视频免费中国| 国产中文字幕黄片| 亚洲国产成人久久综合同性| av女人网啪啪网站| 亚洲综合在线观看片尤物| 妓女妓女影院妓女影院妓女网| 精品无人妻一区二区三区| 国产婬妇无码无遮挡A片在线观看| 久久精品视频中文偷拍| 日本亚洲欧洲免费一区| 精品久久久久久人妻av热 | 看黄a大片爽爽影院69免费看| 一级全黄男女久久免费| 亚洲欧美日韩综合中文字幕| 国产在线视频导航| 被窝影院午夜看片爽爽无码| 一国产二欧美三日韩| 国产舔日韩射高清| 无码自拍有码中文字幕无码不卡| 久久夜夜少妇熟女| 小嫩妇好紧好爽再快视频在线观看| 国产午夜视频观看| 国产精品裸体女模特视频| 天天操天天干男同性恋2020| 日本动漫爆乳h无遮挡免费| 亚洲无码高清在线不卡一二三区| 三级成人国产在线观看| 91精品中文在线观看| 丁香久久激情婷婷综合五月天| 国产一区精品推荐在线播放 | 成人乱麻av一区二区三区| 国产人成高清亚洲精品| 亚洲综合久久夜av| 中日韩亚洲人成无码网站| 亚洲国产成+人+综合国产精久久久久久亚洲美女高潮 | 久久少妇精品亚洲| 国产精品色婷婷亚洲综合片 | 不良研究所AV导航| 欧美一级黄片高清视频| 高清色本在線www| 美国亚洲AV无码| >亚洲欧美日韩中文无线码| 亚洲毛片专区| 国产日产欧产精品精品首页| 日韩欧美精品一区二区综合视频| 国产成人亚洲视频在线观看| 老司机伊人午夜天夜久久| 国产成人精品91在线| 国产午夜激无码A∨毛片护士| 国产性爱毛片| 久久久无码精品亚洲日韩做| 欧美大片免费??级动作片| 亚洲日韩精品国产福利| 91香蕉APP官网安卓下载| 一本到二区三区高清在线不卡| 少妇秘书被狂啪嗯啊高清视频| 久久99久久精品无码专区| 久久久av熟女人妻波多野结衣| 1024在线视频精品免费| 国产综合区久久久久久| 国产 日韩 国欧美 三区| 成年视频xxxxx在线观看| 国产内地精品毛片视频| 国产精品永久免费av观看| 天天久久尤物视频综合| 14表妺好紧没带套18分钟| 秋霞电影亚洲精品久久| 久久精品国产在热久久2019| 性欧美暴力猛交xxxxx高清| 一级黄色大片视屏免费看| 又粗又爽又黄毛片无码AV| 久久本道综合色狠狠五月| 美女131爽爽爽做爰中文视频| 手指扣女人下面逼逼视频| 午夜日韩电影院热映电影免费观看全集在线播放 | 国产女同一区二区三区免费站| 无码av高潮毛片无遮挡免费高清 | 国产毛片一区二区精品| 精品国产一区二区av麻豆| 日韩综合一区二区。| 麻豆精品不卡国产免费看| 国产理论精品三级| 女上男下gifxxoo动态图| 一区二区3区免费视频| 两根粗大在她腿间进进出出| 国产偷伦视频免费观看| 国产成人a一片在线观看99| 狠狠躁天天躁无码不卡| 欧美 亚洲 精品 网站| 无码精品一区二区三区av| 无码超碰日韩精品| 51久久夜色精品国产| 亚洲欧美一区二区三区蜜芽| 国产精品刺激好大好爽视频 | 久久久久久婷婷2021| 五月天色综合| 91免费版视频软件| 看全色黄全色大全免费久久| 91精品国产乱码久久久| 免费蜜菠萝app视频| 男女男精品视频免费观看| 亚洲国产成人久久综合同性 | 韩国三级电影在线播放| 国产亚洲va综合人人澡精品| 精品无人妻一区二区三区| 色六月综合在线色五月国产在线| 337p日本欧洲大胆精品| segui久久综合精品| av真正免费一级毛片在线播放 | 曰韩内射六十七十老熟女影视| 131mm亚洲国产精品久久| 超碰男人aⅴ天堂东京热| 日韩熟女黄片| 天美影视传媒有限公司| 二区三区无码视频| 国产一级婬片a片a网站| 视频午夜一级免费| 国产欧美综合视频二区| 无码超碰日韩精品| 欧美另类清纯中文字幕乱码| 第一页亚洲精品| 97精品超碰一区二区三区| 污污的视频在线观看| 成人免费高清观看| 精品国产乱码久久久久久口爆网站| 亚洲精品区午夜亚洲精品| 初见直播app最新下载| 黄色小蝌蚪视频软件| 国产精品福利导航大全| 中文自拍日韩在线播放视频网站| 韩国福利专区在线观看| 国产精品午夜久久久| 亚洲国产中文另类久久久精品黑人| 久草精品五月天婷婷| 日韩a无码每日更新| 消息称日韩欧美中文字幕| 国产免费之久久精品| 亚洲av不卡在线观看| 国产99一道本视频在线观看| 亚洲精品456在线播| 国产精品黄日韩成人黄亚洲| 國產手機在線精品| 91人妻丰满熟妇无码| 亚洲精品国产成人99久久6蜜臀| 国产高清在线观看视频一线| 用户可以在平台上观看各种麻豆福利视频 | 欧美一级特黄aa大片婷婷| 成人毛片免费视频观看| 打烊后仅剩两人沙发| 国产乱子精品免费视观看片| 国产视频广东福利一区二| 国产高清美女一级毛片图片| 成人大片免费播放| 精品一区二区三区爱欲| 正在播放国产操视频| 日本国产一级毛卡片| 亚洲色大成网\站久久久| 欧美不卡在线观看一区二区三区 | 在线亚洲精品国产一区麻豆 | 国色天香社区视频手机版| 嗯啊哈亚洲无码加勒比av在线| 国产亚洲精品美女久久j久久| 久久久精品无码網站| 美女黄色免费网站| 免费成人网站天堂| 老熟女色网视频天天操夜夜操| 国产成人亚洲欧洲图片| 国模私拍国内精品国内av| 在线看黄片免费| 亚洲色在线永久免费视频| 国产精品亚洲第一区不卡原创| 免费一级毛片全播放| 宋雨琦ai人工智能造梦| 国内久久这里只有精品66| 欧美电影精品亚洲网站| 秋霞伦理+手机在线看片| 日韩永久免费进入2015| 免费日批视频网站| 14表妺好紧没带套18分钟| 99清品国产91久久久久久无码| GOGO人体大胆瓣开下部L| 国产亚洲va综合人人澡精品 | 亚洲一区黄色电影视频网站| 国产精品99r8免费视频2022| 综合一区精品色欲讓| 中日韩人妻人人爽| 亚洲精品五区九区在线观看| 日本一本二本大道高清视频| 久在线视频时刻让我为你唱首歌| 综合自拍无码国产| ?国产免费观看视频一区| 自拍 亚洲 日韩 三级 八十路| 红桃视频在线观看一区二区| 在线成人爽a毛片免费软件| 天天躁日日躁AAAAAAXX| 美国一级大黄一片免费| 天堂网无码AV手机版| 国产在线视频喷奶水| 男人扒开女人双腿猛进视频| 男女下面一进一出好爽视频| 了解最新全黄性性激高免费视频| 成人午夜被窝福利| 金瓶3之野鸳鸯大尺度观感| 一级做a爱黄无码性色永久免费 | 国产精品农村妇女一二区| 丁香六月久久久| 精品国产一区二区又爽| 亚洲AV无码不卡尤物在线观看| 深夜看e黄免费在线播放| 精品国产乱码97久久久| 亚洲free性XXXX护士白浆| 欧美人妻人人爽| 美女大学生特污嫩逼 | 混乱的生物课月老师后续视频| 国产精品狼人久久院| 9191精品国产免费久久片| 2024亚洲综合中文字幕| 宋雨琦ai人工智能造梦| 亚洲三区在线观看| 国产在线啊看| 亚洲综合 丝袜 另类 制服| 车文各种play男女| 精品国产成人亚洲午夜福利AV| 一级免费黄色录像| 可以直接看的毛片网址| 日韩女性性开放视频网站| 在在线看台湾高清毛片电影a| 又色又爽又黄又刺激美女视频| 国产精品第三页在线看| 天天日成人黄片| 好紧好爽要喷了免费影院| 日韩高清免费在线观看| 一区二区无人在线观看免费高清| 亞洲綜合激情五月丁香六月| 1024在线视频精品免费| 成人免费高清观看| KTV把奶罩解开让客人摸| 日韩大胆视频| 麻豆天美蜜桃91| 先锋影音国产精品成人资源| 俄罗斯少妇一级毛片| 国内精品久久久久2021| 国产精品无码22页| 欧美a级成人淫片免费看| 先锋影音国产精品成人资源| 国产欧美综合自拍| 国产精品69久久久久孕妇| 清纯国语对白videoshdcom| 91午夜福利在线视频| 免费无码婬片AAAA片直播孕妇| 亚洲av综合免费黑人| 成人精品妖精视频在线观看| 亚洲jjzzjjzz在线观看| 亚洲精品五区九区在线观看| 热最新精品re在线地址永久| 日韩a级无码免费一级视频| 青青草视频污在线观看| 一区二区三区国产在线视频| 国产精品99r8免费视频2022| 三级黄色录像| 秋霞国产福利一区二区| 人人爱天天做夜夜爽毛片| 国内一级黄片免费观看视频| 九九视频在线观看国产| 亚洲中午字幕在线不卡| 了解最新香蕉午夜视频| 欧美人妻人人爽| 精品成a人亚洲成a无码麻豆| 亚洲高清国产一区| 精品影視久久少婦| 不良研究所AV导航| 久久成年人一级片| 强奸乱伦无码AV| 国产精品亚洲片在线观看不卡蜜月| 久久国产欧美日韩精品免费孕妇| 亚洲中文无码专区在线| 99人妻少妇一区二区三区| 狐狸视频黄瓜视频在线观看 | 亚洲精品国产成人99久久6蜜臀| 国产成人a一片在线观看99| xvideos国产中文在线观看 | 日本黄视频在线观看| 国产亚洲国产一区二区三区| 6068理伦午夜少妇| 男人的Av色天堂| 亚洲无码天堂在线观看| 无码浓密的中出人妻| 隔壁邻居波多野结衣在线播放| 日韩人妻精品一区| 91免费国产精品无码| 国产一区a久久不射电影网| 午夜黄色福利电影| 男生和女生一起差差差30分钟视频| 亚洲色播在线观看| 文字幕av每天更新| 亚洲国产成人精品成人| 国产成人在线观看免费| 国产在线精品电影| 网站黄无需付费在线看视频足交| 亚洲∧Ⅴ久久久无码精品 | 久久久综合视频一本| 欧美日韩中文综合第一页 | 激情a∨在线视频播放| 9久精品久久综合久久超碰| 国产插逼网站苍井空精品aⅴ视频| 亚洲αV无码成人精品区天堂| 国产成人大尺度深夜视频| 午夜被窝福利在线观看| 国产精品无码嫩草免费视频| 草莓视频免费下载污| 久久久99国产精品免费看| 久久久99国产精品免费看| 国产a级毛色视频免费观看| 草莓视频下载色版| 男生和女生打扑克软件| 亚洲欧美国产影院| 国国产一级黄色免费电影| 香蕉视频污免费下载| 中文字幕乱码人妻久久精品| 亚洲精彩视频在线观看| 国产女同真实视频在线观看| 可以免费观看的毛片AV| 亚洲AV无码专区国产乱码在线观| 草莓视频下载色版| 一本色道久久88亚洲精品| 亚洲高清欧美色图| 人人插视频国产一级片在线| 久久免费午夜福利院| 亚洲AV男人的天堂网址| 色棕色天天综合网| 国产无码成本人电影| 久久r99久久精品国产99热| 欧美另类videossexo潮喷| 福利视频亚洲一区| 人爱爱免费视频| 无码在线观看综合国产| free国露脸china明星高潮| 思思精品视频九九| 五月丁香婷婷综合激情在线| 国产一级aaaa片精品免费高清| 久久re这里视频只精品首页| 国产强制深喉吞精视频| 日韩午夜无码TV影院| www久久久黄网站免费| 国产精品一区二av| 黄色一级毛片免费观看| 亚洲国产长腿白丝袜av天堂| 污污的视频在线观看| 国产护士资源总站| 91精品尤物在线播放| 老师腿开大点我添添公视频| 欧欧美人成国产91视频| 日韩精品人妻系列无码| 欧美做暖在线视频爱视频| 最新福利免费视频一区二区三区 | 一级福利午夜片| 亚洲动漫自拍日韩| 久久国产成人午夜AV影院樱花| 欧美日韩国产码高清综| 亚洲国产日韩中文字幕| 亚洲大尺度av无码专区| 精品色网视频亚洲| 成年人高清无码性爱片| 亚洲视频小说之无码| 日本留学生在线精品| 亚洲aⅤ乱码一区二区蜜臀av| 欧美做暖在线视频爱视频| 国产在线五月综合婷婷| 女人被啪呻吟aaa级毛片| 男J进入女J内部免费网站| 欧美 日韩 成人国产| 亚洲人成影视交流| 国产手机在线视频观看| 国产在线精品一区国产在线精品 | 国产精品三级五月婷婷一区| 最新每日AV资源更新网站| 日韩精品重口另类一区| 精品人妻电影在线播放| 国产美女自拍自拍视频| 国产成人欧美在线视频观看| 日本少妇久久| 亚洲免费视频2020| 国产欧美色一区二区| 性色一区二区三区免费视频| 国产在线啊看| 国产内射在线激情一区| 999re6热在线精品视频思思| 欧美日韩人妻精品区二区三区| 99精品无码午夜福利理论片| 99久久精品少妇高潮喷水| 亚洲av无码成人福利在线| 中文乱码字幕在线视频32| 日韩黄色视频免费网址| 狼友视频专区国产在线观看| 国产日韩欧美春色另类小说| 日韩 中文在线| 国产日韩一区二区三区免费高清| 国产精品第一区第二区| 草莓视频无需登录免费| 亚洲AV色一区二区桃| 玉女阁福利视频导航| 国产免费女明星色视频| 国产成人AⅤ国产| 高清欧美日韩卡一卡二卡三新区| 精品久久理论A级一区二区| 久久久久亚洲精品国产| 又粗又深又爽一级毛片| 天美果冻女儿的梦想| 国产日产亚洲系列最新| 日本在线做H视频在线观看| 美女少妇一级毛片免费| 久热在线这里只有精品| 五月天婷婷婷综合小说在线| 十八禁视频在线观看免费播放| 十八禁视频网站| 色在线中文字幕大| 亚洲国产熟妇无码日韩| 国产女人与公拘交91| 一区二区三区国产在线视频| 2021最新国产va在线| 黄色啊啊一区二区三区在线观看| 日日摸夜夜添夜夜添无码国产| 狠狠躁天天躁无码中文字幕图| 日韩欧美国产欧美在线观看| 最新每日AV资源更新网站| 少妇制服凌辱t在线视频| 一区二区三区韩国电影| 久久夜夜少妇熟女| 欧美黑人巨大xxx猛交| 日韩精品一区二区三在线区| 无码精品人妻一区二区激情| 日韩一区免费视频99| 一级全黄男女久久免费| 亚洲欧美国产校园| 亚洲大尺度av无码专区| 撑开惨叫黑人摧残蹂躏乱| 67194精品熟妇在线观看| 欧美极品色午夜在线视频| 亚洲视频一区久久| 女人18毛片a级女人水真多毛片 | 成年无码高潮?V片在线观看| 99在线视频国产| 国产精品达达兔视频播放| 国产成人精品久久一区二区三区av| 最近好看的2019中文在线一页| 善良的女秘书+日本大片| 国产三级片视频久久| 高清无码?视频在线观看| 麻豆精品不卡国产免费看| 日韩高清免费在线观看| 亚洲东方av码在线影院| 伊人久久妓女影院| 久久少妇高潮| 97se亚洲综合在线韩国专区福利| 十八禁啪啪av免费无码网站| 午夜爽歪歪福利视频| 国产极品视觉盛宴分类| 国产亚洲综合在线观看播放页| 欧美日韩第一页第二页| 在线看黄片免费| 日韩欧中文字幕精品| 国产无遮挡又黄又爽网站| 一区二区国产91| 成年无码高潮?V片在线观看| 无码浓密的中出人妻| 一区二区精品亚洲高清| 欧美一级A免费片| 天美果冻女儿的梦想| 亚洲av成人福利在线观看| 欧美97色伦欧美一区二区日 | 久久久久国产黄片视频| 亚洲26uuuu最新地址| 激情久久五月激情| 国产制服日韩丝袜86页雏田| 日韩人妻视频高清在线手機看片影視| 老公昨天晚上吃我小花园的饭| 思思精品视频九九| 欧美电影精品亚洲网站| 国产一区a久久不射电影网| 福利片一二三九一久久国产| 欧美一区二区网址网站| 亚洲无码一区二区偷拍网| 国产精品一区在线日本韩国| 国产精品10p综合二区| 成人黄色免费大片| 黑人大战上海少妇完整版| 中山卧式注塑机器人| 国产91特黄特色?级毛片 | 欧美日韩综合在线观看不卡| 欧美日韩激情综合在线| 欧美黄大片手机版| 白浆喷水网站导航| 久久影视国产亚洲| 国产精品人人视频| 性爱网站国产精品高清| 在线观看免费视频国产| 欧美18vivode精品黑人| segui久久综合精品| 日韩?v女优电影一区二区精品无码毛片 | 一区二区国产中文字幕在线观看| 欧美一级视频免费观看| 成年人电影久久久久| 成人午夜被窝福利| 人妻一区二区三区色欲AⅤ| 女同调教女同奶奴在线观看| 国内精品久久久久久麻豆| 亚洲高清欧美色图| 性色一区二区三区免费视频| 又粗又紧又湿又爽a视频| 免费的av网址在线观看| 黄色毛片精品一级| 俄罗斯少妇一级毛片| 免费一级毛片网址| 少妇大叫好爽受不了午夜视频 | 欧美成人看片一区二区三区| 视频制服一区二区第三页| 又黄又粗美女被草av| 國產手機在線精品| 国产三级片视频久久| 久久久久无码中| 精品二卡三卡四卡无卡| 国产91刘玥在线观看| 男女爱爱好爽视频动态图| GOGO人体大胆瓣开下部L| 国产精品一区六区九区| 精品国产大片免费色综合久久久久久| 亚洲综合一区二区三区四区| 无码浓密的中出人妻| 无码在线欢看不卡| 日韩亚洲欧美伦理| 国产午夜片无码区在线播放| 免费夜里18款禁用软粉色APP | av在线中文字幕不卡电影网| 欧美日韩第一页第二页| 欧美国产日韩综合二区| 国产舔日韩射高清| 成 人 在线手机版视频 视频|