.NET 6 Preview 4 已發(fā)布冬耿,ASP.NET Core 更新內(nèi)容

.NET 6 預(yù)覽版 4 現(xiàn)已發(fā)布闲擦,其中包括對 ASP.NET Core 的許多新改進(jìn)。

下面是此次預(yù)覽版中 ASP.NET Core 的更新內(nèi)容:

引入最小 API

異步流

HTTP 日志中間件

新項(xiàng)目中使用 Kestrel 作為默認(rèn)啟動

IConnectionSocketFeature

改進(jìn)單頁應(yīng)用程序(SPA)模板

更新了 .NET 熱重載

Razor 組件中的泛型約束

Blazor 錯誤邊界(error boundaries)

Blazor WebAssembly 的 AOT 編譯

.NET MAUI Blazor 應(yīng)用程序

其他性能改進(jìn)

1纷妆、開始使用

要開始使用 .NET 6 Preview 4 中的 ASP.NET Core盔几,請安裝 .NET 6 SDK[1]。

如果你在 Windows 上使用 Visual Studio凭需,我們建議安裝 Visual Studio 2019 16.11 的最新預(yù)覽版问欠。如果你在 macOS 上肝匆,我們建議安裝 Visual Studio 2019 for Mac 8.10 的最新預(yù)覽版。

2顺献、升級一個現(xiàn)有的項(xiàng)目

要將一個現(xiàn)有的 ASP.NET Core 應(yīng)用程序從 .NET 6 Preview 3 升級到.NET 6 Preview 4旗国。

將所有?Microsoft.AspNetCore.*?引用包更新為?6.0.0-preview.4.*。

更新所有?Microsoft.Extensions.*?引用包更新為?6.0.0-preview.4.*注整。

請參閱 .NET 6 中 ASP.NET Core 的完整中斷變化列表[2]能曾。

3、引入最小 API

在 .NET 6 中肿轨,我們?yōu)?Web 應(yīng)用的托管和路由引入了最小 API寿冕。這為使用 .NET 構(gòu)建第一個 Web 應(yīng)用程序以及想要構(gòu)建小型微服務(wù)和 HTTP API 的開發(fā)者打開了大門。這些精簡的 API 提供了 ASP.NET MVC 的優(yōu)點(diǎn)椒袍。

要嘗試創(chuàng)建一個最小 API驼唱,請創(chuàng)建一個新的 ASP.NET Core 空 Web 應(yīng)用。

只需一個文件和幾行代碼驹暑,你現(xiàn)在就有一個功能齊全的 HTTP API玫恳。

4、新的路由 API

新的路由 API 允許用戶路由到任何類型的方法优俘。這些方法可以使用類似控制器的參數(shù)綁定京办、JSON 格式化和 Action 結(jié)果。

之前(使用現(xiàn)有的 Map APIs):

現(xiàn)在(使用新的 Map 重載):

5帆焕、C# 10 的改進(jìn)

這些 API 已經(jīng)利用了較新的 C# 特性惭婿,如頂層語句。在今年晚些時候與 .NET 6 一起發(fā)布的 C# 10 中叶雹,體驗(yàn)將變得更好财饥。例如,不再需要明確地把類型轉(zhuǎn)換成?(Func<string>)浑娜。下面的圖片展示了 C# 10 支持的特性:

開發(fā)者從使用類和方法到使用 lambda佑力,擁有和使用 MVC 控制器及屬性操作一樣的功能。

6筋遭、新的托管(hosting) API

新的空 Web 模板使用的是 .NET 6 Preview 4 中引入的新的托管模式打颤。

你并不局限于只使用新的路由 API。下面是一個 Web 應(yīng)用程序的例子漓滔,它被更新為使用新的托管模式编饺,配置服務(wù)和添加中間件。

新的托管 API 減少了配置和啟動 ASP.NET 應(yīng)用程序所需的模板數(shù)量响驴。

7透且、性能

這些新的路由 API 的開銷比基于控制器的 API 少得多。使用新的路由 API,ASP.NET Core 能夠在 TechEmpower[3]?JSON 基準(zhǔn)測試中達(dá)到約 80 萬 RPS秽誊,而 MVC 則達(dá)到約 50 萬 RPS鲸沮。

異步流

ASP.NET Core 現(xiàn)在支持從控制器 Action 一直到響應(yīng)的 JSON 格式化器的異步流。從 Action 中返回?IAsyncEnumerable锅论,在發(fā)送之前不再在內(nèi)存中緩沖響應(yīng)內(nèi)容讼溺。這有助于在返回可異步枚舉的大型數(shù)據(jù)集時減少內(nèi)存使用。

請注意最易,Entity Framework Core 提供了用于查詢數(shù)據(jù)庫的?IAsyncEnumerable?的實(shí)現(xiàn)怒坯。在 .NET 6 中,ASP.NET Core 對?IAsyncEnumerable?的支持有所改進(jìn)藻懒,可以使 EF Core 與 ASP.NET Core 的使用更加高效剔猿。例如,下面的代碼在發(fā)送響應(yīng)前將不再把?Products?數(shù)據(jù)緩沖到內(nèi)存中:

然而嬉荆,如果你已經(jīng)將 EF Core 設(shè)置為使用懶加載归敬,這種新的行為可能會導(dǎo)致在數(shù)據(jù)被枚舉時由于并發(fā)的查詢執(zhí)行而產(chǎn)生錯誤。你可以通過自己緩沖數(shù)據(jù)來恢復(fù)到以前的行為:

有關(guān)這一行為變化的更多細(xì)節(jié)员寇,見相關(guān)公告[4]弄慰。

8、HTTP 日志中間件

HttpLogging?是一個新的內(nèi)置中間件蝶锋,可以記錄 HTTP 請求和 HTTP 響應(yīng)的信息,包括頭信息和整個 Body什往。

HttpLogging?中間件提供了以下日志:

HTTP 請求信息

普通屬性

頭信息

請求 Body

HTTP 響應(yīng)信息

為了配置 HTTP 日志中間件扳缕,你可以在對?ConfigureServices()?的調(diào)用中指定?HttpLoggingOptions:

這會在日志中產(chǎn)生新的帶有?Microsoft.AspNetCore.HttpLogging.HttpLoggingMiddleware?類別的 HTTP 請求信息。

關(guān)于如何使用 HTTP 日志的更多信息别威,請看 HTTP 日志文檔[5]躯舔。

9、使用 Kestrel 作為默認(rèn)啟動

對于在 .NET 6 Preview 4 中創(chuàng)建的所有新項(xiàng)目省古,我們已將默認(rèn)的啟動配置文件從 IIS Express 改為 Kestrel粥庄。在開發(fā)應(yīng)用程序時,啟動 Kestrel 的速度明顯加快豺妓,并帶來了更靈敏的體驗(yàn)惜互。

IIS Express 仍然可以作為啟動項(xiàng),用于 Windows 認(rèn)證或端口共享等情況琳拭。

10训堆、IConnectionSocketFeature

IConnectionSocketFeature?功能使你能夠訪問與當(dāng)前請求相關(guān)的底層接受 socket。它可以通過?HttpContext?上的?FeatureCollection?訪問白嘁。

例如坑鱼,下面的應(yīng)用程序在接受 socket 上設(shè)置?LingerState?屬性:

11、改進(jìn)單頁應(yīng)用(SPA)模板

略...(譯注:文字太長絮缅,懶得翻譯了鲁沥,主要 VS 中的 SPA 模板我從來不用)

12呼股、NET 熱重載

最新的 Visual Studio 預(yù)覽版對.NET Hot 熱重載有一些初步的支持。你可能已經(jīng)注意到在調(diào)試你的應(yīng)用程序時画恰,新的?Apply Code Changes?按鈕和調(diào)試選項(xiàng)彭谁。

Apply Code Changes?按鈕將用你所作的代碼修改來更新正在運(yùn)行的應(yīng)用程序,甚至不需要保存阐枣。下面是一個更新?Counter?組件的例子马靠,它的增量從 1 改為 2。請注意蔼两,一旦修改被應(yīng)用甩鳄,當(dāng)前的計(jì)數(shù)不會丟失:

Visual Studio 中的 .NET 熱重載支持仍在進(jìn)行中,因此在 ASP.NET Core 應(yīng)用程序中使用它時有一些限制:

你必須在連接調(diào)試器的情況下運(yùn)行以應(yīng)用更改额划。

代碼修改只能應(yīng)用于 C# 文件--還不支持對 Razor 文件(.razor,?.cshtml)的修改妙啃。

已應(yīng)用的更改還不能強(qiáng)制更新用戶界面,因此需要手動觸發(fā)用戶界面更新俊戳。

目前不支持 Blazor WebAssembly 應(yīng)用程序揖赴。

所有這些限制都在解決中,并將在未來的 Visual Studio 更新中得到解決抑胎。敬請關(guān)注燥滑!

如果你通過?dotnet watch?使用 .NET 熱重載,修改將被應(yīng)用于 ASP.NET Core 托管的 Blazor WebAssembly 應(yīng)用程序阿逃。如果你刷新瀏覽器铭拧,修改也會重新應(yīng)用到你的 Blazor WebAssembly 應(yīng)用程序。

要了解更多關(guān)于.NET 熱重載的信息恃锉,你可以在我們的博文中獲得所有細(xì)節(jié):介紹.NET 熱重載[6]搀菩。

13、Razor 中的泛型約束

在 Razor 中使用?@typeparam?指令定義通用類型參數(shù)時破托,你現(xiàn)在可以使用標(biāo)準(zhǔn)的 C# 語法指定泛型約束肪跋。

14、Blazor 錯誤邊界

Blazor 錯誤邊界提供了一種方便的方式來處理組件層次結(jié)構(gòu)中的異常情況土砂。為了定義一個錯誤邊界州既,使用新的 ErrorBoundary 組件來包裹一些現(xiàn)有的內(nèi)容。只要一切運(yùn)行順利瘟芝,ErrorBoundary 組件將渲染其子內(nèi)容易桃。如果一個未處理的異常被拋出,ErrorBoundary 會渲染一些錯誤 UI锌俱。

例如晤郑,我們可以像這樣在默認(rèn) Blazor 應(yīng)用程序的布局中添加一個錯誤邊界:

該應(yīng)用程序繼續(xù)像以前一樣運(yùn)作,但現(xiàn)在我們的錯誤邊界將處理未處理的異常。例如造寝,我們可以更新?Counter?組件磕洪,在計(jì)數(shù)過大時拋出一個異常。

現(xiàn)在诫龙,如果我們過多地點(diǎn)擊計(jì)數(shù)器析显,就會拋出一個未處理的異常,這將由我們的錯誤邊界通過渲染一些默認(rèn)的錯誤界面來處理签赃。

默認(rèn)情況下谷异,ErrorBoundary?組件為其錯誤內(nèi)容渲染了一個帶有?blazor-error-boundary?CSS 類的空?div。這個默認(rèn)界面的顏色锦聊、文本和圖標(biāo)都是在應(yīng)用程序中使用 CSS 定義的歹嘹,所以你可以自由地定制它們。你也可以通過設(shè)置?ErrorContent?屬性來改變默認(rèn)的錯誤內(nèi)容孔庭。

因?yàn)槲覀冊诓季种卸x了錯誤邊界尺上,一旦拋出一個異常,不管我們導(dǎo)航到哪個頁面我們都能看到錯誤內(nèi)容圆到。一般來說怎抛,錯誤邊界的范圍最好比這更窄,但我們可以選擇在隨后的頁面導(dǎo)航中通過調(diào)用錯誤邊界的恢復(fù)方法將錯誤邊界重置為非錯誤狀態(tài)芽淡。

15马绝、Blazor WebAssembly 的 AOT 編譯

Blazor WebAssembly 現(xiàn)在支持 AOT(ahead-of-time) 編譯,你可以將你的 .NET 代碼直接編譯為 WebAssembly挣菲,以顯著提高運(yùn)行時性能〖L剩現(xiàn)在 Blazor WebAssemby 應(yīng)用程序使用 WebAssembly 中實(shí)現(xiàn)的 .NET IL 解釋器運(yùn)行。由于 .NET 代碼是被解釋的己单,通常這意味著在 WebAssembly 上運(yùn)行的 .NET 代碼比在正常的.NET 運(yùn)行時要慢得多。.NET WebAssembly AOT 編譯通過將你的 .NET 代碼直接編譯成 WebAssembly 來解決這個性能問題耙饰。

AOT 編譯你的 Blazor WebAssembly 應(yīng)用程序纹笼,對于 CPU 密集型任務(wù)來說,其性能的提高是相當(dāng)顯著的苟跪。例如廷痘,下面的片段顯示了使用相同的 Blazor WebAssembly 應(yīng)用程序進(jìn)行一些基本圖像編輯的比較,首先使用解釋器件已,然后是 AOT 編譯笋额。AOT 編譯后的版本運(yùn)行速度快了五倍以上。

你可以在 GitHub 上查看這個 PictureFixer[7]?的代碼篷扩。

.NET WebAssembly AOT 編譯需要一個額外的構(gòu)建工具兄猩,必須作為一個可選的 .NET SDK 工作負(fù)載來安裝才能使用。要安裝 .NET WebAssembly 構(gòu)建工具,請運(yùn)行以下命令:

為了在你的 Blazor WebAssembly 項(xiàng)目中啟用 WebAssembly AOT 編譯枢冤,在你的項(xiàng)目文件中添加以下屬性:

然后 AOT 將你的應(yīng)用程序編譯成 WebAssembly鸠姨,發(fā)布應(yīng)用程序。使用 Release 配置發(fā)布將確保 .NET IL 鏈接也被運(yùn)行淹真,以減少發(fā)布應(yīng)用程序的大小讶迁。

WebAssembly AOT 編譯只在項(xiàng)目發(fā)布時進(jìn)行。當(dāng)項(xiàng)目在開發(fā)過程中運(yùn)行時核蘸,它并不使用巍糯。這是因?yàn)?WebAssembly AOT 編譯可能需要一段時間。

AOT 編譯的 Blazor WebAssembly 應(yīng)用程序的大小通常比作為 .NET IL 的應(yīng)用程序要大客扎。在我們的測試中祟峦,大多數(shù) AOT 編譯的 Blazor WebAssembly 應(yīng)用程序大約大 2 倍,不過這取決于具體的應(yīng)用程序虐唠。這意味著搀愧,使用 WebAssembly 的 AOT 編譯,可以用加載時間的性能換取運(yùn)行時間的性能疆偿。這種權(quán)衡是否值得咱筛,取決于你的應(yīng)用程序。

16杆故、NET MAUI Blazor 應(yīng)用

Blazor 能夠用 .NET 構(gòu)建客戶端 Web UI迅箩,但有時你需要的東西比 Web 平臺提供的更多。有時你需要完全訪問設(shè)備的本地功能〈︻酰現(xiàn)在饲趋,你可以在 .NET MAUI 應(yīng)用程序中托管 Blazor 組件,以使用 Web UI 構(gòu)建跨平臺的本地應(yīng)用程序撤蟆。這些組件在.NET 進(jìn)程中原生運(yùn)行奕塑,并使用本地互操作通道向嵌入式 Web 視圖控件渲染 Web UI。這種混合方法為你提供了本地和網(wǎng)絡(luò)的優(yōu)點(diǎn)家肯。你的組件可以通過 .NET 平臺訪問本地功能龄砰,并呈現(xiàn)標(biāo)準(zhǔn)的 Web UI。.NET MAUI Blazor 應(yīng)用程序可以運(yùn)行在任何 .NET MAUI 可以運(yùn)行的地方(Windows讨衣、Mac换棚、iOS 和 Android),盡管我們對 .NET 6 的主要關(guān)注是在桌面場景反镇。

要創(chuàng)建一個 .NET MAUI Blazor 應(yīng)用程序固蚤,你首先需要在開發(fā)機(jī)器上配置 .NET MAUI。最簡單的方法是使用?maui-check?工具歹茶。要安裝?maui-check 工具夕玩,請運(yùn)行:

然后運(yùn)行?maui-check?來獲取 .NET MAUI 工具和依賴你弦。有關(guān)開始使用 .NET MAUI 的其他信息,請參考 GitHub 上的 wiki 文檔风秤。

一旦一切安裝完畢鳖目,使用新的項(xiàng)目模板創(chuàng)建一個 .NET MAUI Blazor 應(yīng)用程序:

你也可以使用 Visual Studio 創(chuàng)建一個 .NET MAUI Blazor 應(yīng)用程序:

.NET MAUI Blazor 應(yīng)用程序是 .NET MAUI 應(yīng)用程序,它使用?BlazorWebView?控件將 Blazor 組件渲染到一個嵌入式 Web 視圖中缤弦。應(yīng)用程序的代碼和邏輯位于?MauiApp?項(xiàng)目中领迈,該項(xiàng)目被設(shè)置為多目標(biāo) Android、iOS 和 Mac Catalyst碍沐。MauiApp.WinUI3?項(xiàng)目用于為 Windows 構(gòu)建狸捅,而?MauiApp.WinUI3(Package)?項(xiàng)目則用于為 Windows 生成 MSIX 包。最終累提,我們希望將對 Windows 的支持合并到主應(yīng)用程序項(xiàng)目中尘喝,但現(xiàn)在這些獨(dú)立的項(xiàng)目是必要的。

在?MauiApp?項(xiàng)目的?MainPage.xaml?中設(shè)置了?BlazorWebView?控件:

該應(yīng)用程序的根 Blazor 組件在?Main.razor?中斋陪。其余的 Blazor 組件都在 Pages 和 Shared 目錄下朽褪。請注意,這些組件與默認(rèn) Blazor 模板中使用的組件相同无虚。你可以在你的應(yīng)用程序中使用現(xiàn)有的 Blazor 組件缔赠,而不用改變代碼,或者引用包含這些組件的現(xiàn)有類庫或包友题。應(yīng)用程序的靜態(tài)資源在 wwwroot 文件夾中嗤堰。

17、Windows

要在 Windows 下運(yùn)行該應(yīng)用程序度宦,你需要使用 Visual Studio 構(gòu)建和運(yùn)行踢匣。

選擇?MauiBlazorApp.WinUI3(Package)?項(xiàng)目作為你的啟動項(xiàng)目:

同時為目標(biāo)平臺選擇 x64:

然后你可以按?F5?或?Ctrl+F5,使 WinUI 應(yīng)用作為本地 Windows 桌面應(yīng)用運(yùn)行戈抄。

18离唬、Android

要在 Android 上運(yùn)行該應(yīng)用程序,首先使用 Android SDK 或 Android 設(shè)備管理器啟動 Android 模擬器划鸽。

然后使用以下命令從 CLI 運(yùn)行該應(yīng)用程序:

要從 Visual Studio 在 Android 上運(yùn)行男娄,選擇?MauiBlazorApp?項(xiàng)目作為啟動項(xiàng)目:

然后在運(yùn)行按鈕下拉菜單中選擇?net6.0-android?作為目標(biāo)框架:

然后你可以點(diǎn)擊?F5?或?Ctrl+F5,使用安卓模擬器運(yùn)行該應(yīng)用程序:

19漾稀、iOS 和 Mac Catalyst

譯注:Mac Catalyst 是一個幫助開發(fā)者將 iOS 應(yīng)用移植到 macOS 上的服務(wù)。

要運(yùn)行 iOS 或 Mac Catalyst 的應(yīng)用程序建瘫,你需要使用一個運(yùn)行 Big Sur 的 macOS 開發(fā)環(huán)境崭捍。你目前不能從 Windows 開發(fā)環(huán)境中運(yùn)行 iOS 或 Mac Catalyst 的應(yīng)用程序,盡管我們確實(shí)期望 .NET MAUI 將支持使用連接的 Mac 構(gòu)建代理或使用熱重啟在連接的設(shè)備上運(yùn)行 iOS 應(yīng)用程序啰脚。

要運(yùn)行 iOS 和 Mac Catalyst 的應(yīng)用程序殷蛇,請使用以下命令:

在這個版本中实夹,.NET MAUI Blazor 應(yīng)用程序有一些已知的限制:

組件范圍內(nèi)的 CSS 文件(.razor.css)還不能在主 .NET MAUI 項(xiàng)目中使用。這將在未來的更新中得到修復(fù)粒梦。

了解更多關(guān)于 .NET 6 Preview 4 中 .NET MAUI 的新內(nèi)容[8]。

20、其他性能改進(jìn)

略...(注:這部分列舉了一些社區(qū)貢獻(xiàn)的提高性能的 PR蜗帜,沒啥可翻譯的旱函,感興趣的同學(xué)可以直接在英文原文點(diǎn)擊鏈接查看。)

21泄朴、提供反饋

我們希望你喜歡此次 .NET 6 中的 ASP.NET Core 預(yù)覽版重抖。我們很想聽聽你對這個版本的體驗(yàn)。在 GitHub[9]?上提交 Issue祖灰,讓我們知道你的想法钟沛。

感謝你嘗試使用 ASP.NET Core!

文中鏈接:

[1]. https://dotnet.microsoft.com/download/dotnet/6.0

[2]. https://docs.microsoft.com/dotnet/core/compatibility/6.0#aspnet-core

[3]. https://www.techempower.com/benchmarks/

[4]. https://github.com/aspnet/Announcements/issues/463

[5]. https://docs.microsoft.com/aspnet/core/fundamentals/http-logging

[6]. https://aka.ms/build2021-hotreload

[7]. https://aka.ms/picture-fixer

[8]. https://devblogs.microsoft.com/dotnet/announcing-net-maui-preview-4

[9]. https://github.com/dotnet/aspnetcore/issues

作者:微軟MVP-Eleven

https://www.bilibili.com/read/cv11514088

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末局扶,一起剝皮案震驚了整個濱河市恨统,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌三妈,老刑警劉巖畜埋,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異沈跨,居然都是意外死亡由捎,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門饿凛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來狞玛,“玉大人,你說我怎么就攤上這事涧窒⌒姆荆” “怎么了?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵纠吴,是天一觀的道長硬鞍。 經(jīng)常有香客問我,道長戴已,這世上最難降的妖魔是什么固该? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮糖儡,結(jié)果婚禮上伐坏,老公的妹妹穿的比我還像新娘。我一直安慰自己握联,他們只是感情好桦沉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布每瞒。 她就那樣靜靜地躺著,像睡著了一般纯露。 火紅的嫁衣襯著肌膚如雪剿骨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天埠褪,我揣著相機(jī)與錄音浓利,去河邊找鬼。 笑死组橄,一個胖子當(dāng)著我的面吹牛荞膘,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播玉工,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼羽资,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了遵班?” 一聲冷哼從身側(cè)響起屠升,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎狭郑,沒想到半個月后腹暖,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翰萨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年脏答,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片亩鬼。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡殖告,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出雳锋,到底是詐尸還是另有隱情黄绩,我是刑警寧澤,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布玷过,位于F島的核電站爽丹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辛蚊。R本人自食惡果不足惜粤蝎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望袋马。 院中可真熱鬧诽里,春花似錦、人聲如沸飞蛹。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卧檐。三九已至墓懂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間霉囚,已是汗流浹背捕仔。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留盈罐,地道東北人榜跌。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像盅粪,于是被迫代替她去往敵國和親钓葫。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容