ASP.NET Core 3.0预览版体验
目前.NET Core 3.0的版本為.NET Core 3.0 Preview 3,對(duì)應(yīng)ASP.NET Core 3.0 Preview 3。
ASP.NET Core 3.0 之后將不再支持.NET Framework,只運(yùn)行在.NET Core 上面。
ASP.NET Core 3.0 現(xiàn)在已經(jīng)出到了第三個(gè)預(yù)覽版,增加和改進(jìn)了很多功能。
環(huán)境準(zhǔn)備:
下載最新.NET Core 3.0?Preview 3 SDK,?https://dotnet.microsoft.com/download/dotnet-core/3.0。
ASP.NET Core 3.0 需要VS 2019開發(fā),或者使用VS Code,Visual Studio for Mac version 8.0 or later。
Visual Studio 2019 將會(huì)在4月2日推出正式版。
下面大致列舉一些功能:
Json.NET 不在內(nèi)置在框架內(nèi)
如果要將Json.NET支持添加回ASP.NET Core 3.0項(xiàng)目:
首先將包引用添加到Microsoft.AspNetCore.Mvc.NewtonsoftJson
更新ConfigureServices方法以添加AddNewtonsoftJson()。
.AddNewtonsoftJson();
HostBuilder 替換掉WebHostBuilder
public class Program{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
UseRouting 中間件的增加
示例代碼:
app.UseRouting(routes =>{
routes.MapGet("/hello", context =>
{
return context.Response.WriteAsync("Hi there! linezero");
});
});
同時(shí)還增加?MapHealthChecks及RequireHost 等功能,看示例:
app.UseRouting(routes =>{
routes.MapGet("/", context => context.Response.WriteAsync("Hi linezero!"))
.RequireHost("linezero.com");
routes.MapGet(context => context.Response.WriteAsync("Hi zero!"))
.RequireHost("zero.com");
routes.MapHealthChecks("/healthz").RequireHost("*:8080");
});
Razor Components?
razor 組件支持,下面實(shí)際看看這個(gè)功能點(diǎn)。
dotnet new razorcomponents -o mywebcd myweb
dotnet run
運(yùn)行起來如下圖:
對(duì)應(yīng)組件代碼Counter.razor :
@page "/counter"<h1>Counter</h1>
<p>LineZero</p>
<p>Current count: @currentCount</p>
<button class="btn btn-primary" οnclick="@IncrementCount">Click me</button>
@functions {
int currentCount = 0;
void IncrementCount()
{
currentCount++;
}
}
?你可以直接將組件添加到主頁(yè)或其他頁(yè)面,例如放到主頁(yè)Index.razor:
@page "/"<h1>Hello, world!</h1>
Welcome to your new app.LineZero
<Counter />
?還可以使用?[Parameter] int IncrementSize { get; set; } = 1; 來設(shè)置參數(shù):
@functions {int currentCount = 0;
[Parameter] int IncrementSize { get; set; } = 1;
void IncrementCount()
{
currentCount+=IncrementSize;
}
}
這樣可以做到每個(gè)頁(yè)面設(shè)置不同的大小,增加不同數(shù)量。
如:
@page "/"<h1>Hello, world!</h1>
Welcome to your new app.LineZero
<Counter IncrementSize="6"/>
下圖描述了Razor的一些原理。
另外,Blazor是一個(gè)實(shí)驗(yàn)性單頁(yè)面應(yīng)用程序框架,它使用基于WebAssembly的.NET運(yùn)行時(shí)直接在瀏覽器中運(yùn)行Razor Components。
在Blazor應(yīng)用程序中,Razor組件的UI更新都直接應(yīng)用于DOM。
運(yùn)行時(shí)編譯
從.NET Core 3.0中的ASP.NET Core共享框架中刪除了對(duì)運(yùn)行時(shí)編譯的支持,現(xiàn)在可以通過向應(yīng)用程序添加軟件包來啟用它。
要啟用運(yùn)行時(shí)編譯:
添加對(duì)Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation的包引用
<PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.0.0-preview3-19153-02" />在Startup.ConfigureServices加入方法AddRazorRuntimeCompilation
services.AddMvc().AddRazorRuntimeCompilation();Worker Service模板
此模板旨在作為運(yùn)行長(zhǎng)時(shí)間運(yùn)行的后臺(tái)進(jìn)程的起點(diǎn),例如您可以作為Windows服務(wù)或Linux守護(hù)程序運(yùn)行。
單頁(yè)面應(yīng)用程序模板的身份驗(yàn)證
由IdentityServer在后臺(tái)提供支持
dotnet new angular -au Individualdotnet run
最終運(yùn)行起來,可以進(jìn)行登錄注冊(cè),及對(duì)API 的保護(hù)。
更多可以查看官方文檔:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-3.0
gRPC服務(wù)模板
會(huì)生成兩個(gè)項(xiàng)目,一個(gè)在ASP.NET Core中托管的gRPC服務(wù),以及一個(gè)用它來測(cè)試它的控制臺(tái)應(yīng)用程序。
這是gRPC for ASP.NET Core的第一次公開預(yù)覽,并沒有實(shí)現(xiàn)gRPC的所有功能。對(duì)應(yīng)開源項(xiàng)目: https://github.com/grpc/grpc-dotnet
gRPC 簡(jiǎn)單介紹可以參照之前文章:http://www.cnblogs.com/linezero/p/grpc.html? 及?https://www.cnblogs.com/linezero/p/grpcnetcore.html
原文地址:https://www.cnblogs.com/linezero/p/aspnetcore3preview.html
.NET社區(qū)新聞,深度好文,歡迎訪問公眾號(hào)文章匯總 http://www.csharpkit.com
總結(jié)
以上是生活随笔為你收集整理的ASP.NET Core 3.0预览版体验的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 微信开发必看,使用.Net Core 开
- 下一篇: C# .net 中 Timeout 的处