比尔云BierYun--阿里云最新优惠活动
阿里云优惠码丨阿里云代金券

ASP.NET Core 3.0预览版体验

ASP.NET Core 3.0预览版体验

目前.NET Core 3.0的版本为.NET Core 3.0 Preview 3,对应ASP.NET Core 3.0 Preview 3。

ASP.NET Core 3.0 之后将不再支持.NET Framework,只运行在.NET Core 上面。

ASP.NET Core 3.0 现在已经出到了第三个预览版,增加和改进了很多功能。

 

环境准备:

下载最新.NET Core 3.0 Preview 3 SDK, https://dotnet.microsoft.com/download/dotnet-core/3.0。

ASP.NET Core 3.0 需要VS 2019开发,或者使用VS Code,Visual Studio for Mac version 8.0 or later。

Visual Studio 2019 将会在4月2日推出正式版。

 

下面大致列举一些功能:

Json.NET 不在内置在框架内

如果要将Json.NET支持添加回ASP.NET Core 3.0项目:

services.AddMvc()
  .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");
        });
    });
复制代码

同时还增加 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 组件支持,下面实际看看这个功能点。

dotnet new razorcomponents -o myweb

cd myweb

dotnet run

运行起来如下图:

对应组件代码Counter.razor :

复制代码
@page "/counter"

<h1>Counter</h1>
<p>LineZero</p>

<p>Current count: @currentCount</p>

<button class="btn btn-primary" onclick="@IncrementCount">Click me</button>

@functions {
    int currentCount = 0;

    void IncrementCount()
    {
        currentCount++;
    }
}
复制代码

 

你可以直接将组件添加到主页或其他页面,例如放到主页Index.razor:

复制代码
@page "/"

<h1>Hello, world!</h1>

Welcome to your new app.LineZero

<Counter />
复制代码

还可以使用 [Parameter] int IncrementSize { get; set; } = 1; 来设置参数:

复制代码
@functions {
    int currentCount = 0;

    [Parameter] int IncrementSize { get; set; } = 1;

    void IncrementCount()
    {
        currentCount+=IncrementSize;
    }
}
复制代码

这样可以做到每个页面设置不同的大小,增加不同数量。

如:

复制代码
@page "/"

<h1>Hello, world!</h1>

Welcome to your new app.LineZero

<Counter IncrementSize="6"/>
复制代码

 

下图描述了Razor的一些原理。

 

另外,Blazor是一个实验性单页面应用程序框架,它使用基于WebAssembly的.NET运行时直接在浏览器中运行Razor Components。

在Blazor应用程序中,Razor组件的UI更新都直接应用于DOM。

 

运行时编译

从.NET Core 3.0中的ASP.NET Core共享框架中删除了对运行时编译的支持,现在可以通过向应用程序添加软件包来启用它。

要启用运行时编译:

  1. 添加对Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation的包引用
    <PackageReference Include="Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation" Version="3.0.0-preview3-19153-02" />
  2. Startup.ConfigureServices加入方法AddRazorRuntimeCompilation
    services.AddMvc().AddRazorRuntimeCompilation();

Worker Service模板

此模板旨在作为运行长时间运行的后台进程的起点,例如您可以作为Windows服务或Linux守护程序运行。

单页面应用程序模板的身份验证

由IdentityServer在后台提供支持

dotnet new angular -au Individual

dotnet run

最终运行起来,可以进行登录注册,及对API 的保护。

更多可以查看官方文档:https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-3.0

gRPC服务模板

dotnet new grpc

会生成两个项目,一个在ASP.NET Core中托管的gRPC服务,以及一个用它来测试它的控制台应用程序。

这是gRPC for ASP.NET Core的第一次公开预览,并没有实现gRPC的所有功能。对应开源项目: https://github.com/grpc/grpc-dotnet

gRPC 简单介绍可以参照之前文章:http://www.cnblogs.com/linezero/p/grpc.html  及 https://www.cnblogs.com/linezero/p/grpcnetcore.html

原文地址https://www.cnblogs.com/linezero/p/aspnetcore3preview.html

未经允许不得转载:阿里云代金券 » ASP.NET Core 3.0预览版体验

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

强烈推荐

高性能SSD云服务器ECS抗攻击,高可用云数据库RDS