zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    PHP、JAVA、C#、Object-C 通用的DES加密
    xtraScrollableControl 滚动条随鼠标滚动
    C#让TopMost窗体弹出并置顶层但不获取当前输入焦点的终极办法
    C#获取“所有用户桌面”的路径
    C#如何获取快捷方式指向的目标文件
    10
    09
    新浪微博中tableview中头部信息
    ASIHTTPRequest类库简介和使用说明
    IOS常用设计模式之委托模式
  • 原文地址:https://www.cnblogs.com/linezero/p/aspnetcore3preview.html
Copyright © 2011-2022 走看看