.NET Core 3.0及ASP.NET Core 3.0 前瞻
前幾天微軟發(fā)布了 .NET Core 3.0 Preview 9 ,這是.NET?Core 3.0 最后一個預(yù)覽版。
[翻譯] .NET Core 3.0 Preview 9 發(fā)布
.NET Core 3.0?正式發(fā)布將在.NET?Conf 上發(fā)布,.NET Conf 時間是9月23日至25日。
Visual Studio 2019 16.3預(yù)覽版3和Visual Studio for Mac?8.3支持.NET?Core 3.0 ,這些版本也同時發(fā)布。
從.NET?Core 3.0 Preview 7就可用于生產(chǎn),目前dotnet官網(wǎng)就是使用?https://dotnet.microsoft.com/?Powered by .NET Core 3.0.0-preview9-19423-09。
博客園也在前些天升級為.NET?Core 3.0 Preview 8,目前運行算是良好。
下面實際體驗.NET?Core 3.0 新特性。
.NET Core 3.0
System.Text.Json
示例:
public class Person{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime? BirthDay { get; set; }
}
//轉(zhuǎn)成對象
string json = ...
Person person = JsonSerializer.Parse<Person>(json);
//轉(zhuǎn)成json字符串
Person person = ...
string json = JsonSerializer.ToString(person);
.NET Standard 2.1
要以.NET?Standard 2.1為目標(biāo),必須編輯項目文件并將TargetFramework屬性更改為netstandard2.1: .NET?Framework不支持.NET?Standard 2.1。
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup>
<TargetFramework>netstandard2.1</TargetFramework>
</PropertyGroup>
</Project>
Microsoft.Data.SqlClient
Microsoft.Data.SqlClient是Microsoft Sql Server的數(shù)據(jù)提供程序。
它是兩個System.Data.SqlClient組件的聯(lián)合體,獨立存在于.NET Framework和.NET Core中。
最新版本安裝
Install-Package Microsoft.Data.SqlClient?
https://github.com/dotnet/SqlClient?
發(fā)布成單個程序
dotnet publish -r win10-x64 /p:PublishSingleFile=true
Alpine Docker images
.NET Core and?ASP.NET?Core on ARM64
docker pull?mcr.microsoft.com/dotnet/core/runtime:3.0-alpine-arm64v8?
docker pull?mcr.microsoft.com/dotnet/core/aspnet:3.0-alpine-arm64v8
dotnet-counters
安裝 : dotnet tool install --global dotnet-counters --version 3.0.0-preview8.19412.1
使用示例:
顯示所有信息
dotnet-counters monitor --process-id 1902 System.Runtime
顯示CPU使用 GC 及異常數(shù)
dotnet-counters monitor --process-id 1902 System.Runtime[cpu-usage,gc-heap-size,exception-count]
官方文檔:https://github.com/dotnet/diagnostics/blob/master/documentation/dotnet-counters-instructions.md
ReadyToRun
你可以通過將應(yīng)用程序集編譯為ReadyToRun(R2R)格式來縮短.NET?Core應(yīng)用程序的啟動時間。R2R是一種提前(AOT)編譯的形式。
示例提升:
僅限IL的應(yīng)用:
啟動時間:1.9秒
內(nèi)存使用量:69.1 MB
應(yīng)用程序大小:150 MB
使用ReadyToRun圖像:
啟動時間:1.3秒。
內(nèi)存使用量:55.7 MB
應(yīng)用程序大小:156 MB
要啟用ReadyToRun編譯 需要以下操作:
將PublishReadyToRun屬性設(shè)置為true。 使用顯式發(fā)布RuntimeIdentifier。
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp3.0</TargetFramework>
<PublishReadyToRun>true</PublishReadyToRun>
</PropertyGroup>
</Project>
dotnet publish -r win-x64 -c Release
ReadyToRun編譯器目前不支持交叉定位。需要在給定目標(biāo)上進行編譯。例如,如果想要Windows x64的R2R程序,則需要在該環(huán)境中運行publish命令。
IL linker
使用IL linker 可以將程序大小從大約68MB減少到大約28MB
dotnet publish -r win10-x64 -c Release /p:PublishTrimmed=true /p:PublishSingleFile=true
HttpClient支持HTTP/2
使用示例:
var client = new HttpClient() { BaseAddress = new Uri("https://localhost:5001") };// HTTP/1.1 request
using (var response = await client.GetAsync("/"))
{
Console.WriteLine(response.Content);
}
// HTTP/2 request
using (var request = new HttpRequestMessage(HttpMethod.Get, "/") { Version = new Version(2, 0) })
using (var response = await client.SendAsync(request))
{
Console.WriteLine(response.Content);
}
ASP.NET Core 3.0
前一篇也有介紹ASP.NET Core 3.0預(yù)覽版體驗。
ASP.NET Core 3.0中主要更新還是Blazor和gRPC
Blazor
Blazor 是一個用于使用 .NET 生成交互式客戶端 Web UI 的框架:
使用 C# 代替 JavaScript 來創(chuàng)建豐富的交互式 UI。
共享使用 .NET 編寫的服務(wù)器端和客戶端應(yīng)用邏輯。
將 UI 呈現(xiàn)為 HTML 和 CSS,以支持眾多瀏覽器,其中包括移動瀏覽器。
使用 .NET 進行客戶端 Web 開發(fā)可提供以下優(yōu)勢:
使用 C# 代替 JavaScript 來編寫代碼。
利用現(xiàn)有的 .NET 庫生態(tài)系統(tǒng)。
在服務(wù)器和客戶端之間共享應(yīng)用邏輯。
受益于 .NET 的性能、可靠性和安全性。
始終高效支持 Windows、Linux 和 macOS 上的 Visual Studio。
以一組穩(wěn)定、功能豐富且易用的通用語言、框架和工具為基礎(chǔ)來進行生成。
Blazor 應(yīng)用基于組件 。?Blazor 中的組件是指 UI 元素,例如,頁面、對話框或數(shù)據(jù)輸入窗體。
組件類通常以?Razor?標(biāo)記頁(文件擴展名為 .razor )的形式編寫。?Blazor 中的組件有時被稱為 Razor 組件 。
Razor 標(biāo)記演示組件:
<div><h1>@Title</h1>
@ChildContent
<button @οnclick="OnYes">Yes!</button>
</div>
@code {
[Parameter]
public string Title { get; set; }
[Parameter]
public RenderFragment ChildContent { get; set; }
private void OnYes()
{
Console.WriteLine("Write to the console in C#! 'Yes' button was selected.From LineZero");
}
對話框的正文內(nèi)容 (ChildContent) 和標(biāo)題 (Title) 由在其 UI 中使用此組件的組件提供。?OnYes?是由按鈕的?onclick?事件觸發(fā)的 C# 方法。
Blazor 使用 UI 構(gòu)成的自然 HTML 標(biāo)記。?HTML 元素指定組件,并且標(biāo)記的特性將值傳遞給組件的屬性。
在以下示例中,Index?組件中使用上面的?Dialog?組件。
@page "/"<h1>Hello, world!</h1>
Welcome to your new app.
<Dialog Title="Blazor">
Do you want to <i>learn more</i> about Blazor?
From LineZero
</Dialog>
更多官方介紹:https://docs.microsoft.com/zh-cn/aspnet/core/blazor/get-started?view=aspnetcore-3.0&tabs=visual-studio
gRPC
gRPC 的主要優(yōu)點是:
現(xiàn)代高性能輕量級 RPC 框架。
協(xié)定優(yōu)先 API 開發(fā),默認(rèn)使用協(xié)議緩沖區(qū),允許與語言無關(guān)的實現(xiàn)。
可用于多種語言的工具,以生成強類型服務(wù)器和客戶端。
支持客戶端、服務(wù)器和雙向流式處理調(diào)用。
使用 Protobuf 二進制序列化減少對網(wǎng)絡(luò)的使用。
這些優(yōu)點使 gRPC 適用于:
效率至關(guān)重要的輕量級微服務(wù)。
需要多種語言用于開發(fā)的 Polyglot 系統(tǒng)。
需要處理流式處理請求或響應(yīng)的點對點實時服務(wù)。
雖然 C# 實現(xiàn)目前在官方?gRPC 上有介紹,但當(dāng)前實現(xiàn)依賴于用 C (gRPC?C-core) 編寫的本機庫。?
目前正在基于 Kestrel HTTP 服務(wù)器和完全托管的 ASP.NET Core 實現(xiàn)gRPC。
原文鏈接:https://www.cnblogs.com/linezero/p/netcore3andaspnetcore3.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號文章匯總?http://www.csharpkit.com?
總結(jié)
以上是生活随笔為你收集整理的.NET Core 3.0及ASP.NET Core 3.0 前瞻的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自学架构设计?帮你总结了 4 个方法
- 下一篇: .NET Core 微信小程序支付——(