第一章 开发体验

第一章 开发体验

1、Asp.Net Core应用程序

  1. 使用CLI建立控制台应用程序web

    dot new console -n helloworld
  2. 编辑项目文件shell

    <ItemGroup>
    	<FrameworkReference include = "Microsoft.AspNetCore.App"></FrameworkReference>
    </ItemGroup>
  3. 建立Host主机并配置json

    在Main方法中,调用静态类Host的CreateDefaultBuilder方法,建立一个IHostBuilder对象,并调用Builder方法构建服务宿主的IHost对象,再调用IHost对象的扩展方法Run,AspNetCore应用程序就被启动了。c#

    var builder = Host.CreateDefaultBuilder();
    IHost host = builder.Build();
    host.Run();
  4. 配置请求管道服务器

    在调用Builder方法以前,调用ConfigureWebHost扩展方法,参数是Action 委托,构建请求管道。 mvc

    var builder = Host.CreateDefaultBuilder();
    builder.ConfigureWebHost(options =>
    {
          options.UseKestrel().Configure(app =>
          {
              app.Run(context => context.Response.WriteAsync("HelloWord"));
          });
    });
    IHost host = builder.Build();
    host.Run();
  5. launchSetting.json配置文件app

    修改项目配置文件,并从新加载,这时你会发现 控制台应用程序 变成了 web应用程序。框架

    <Project Sdk="Microsoft.NET.Sdk.Web">
      <PropertyGroup>
        <TargetFramework>netcoreapp3.1</TargetFramework>
      </PropertyGroup>
    </Project>

    CLI启动,并指定Kestrel服务器ui

    dotnet run --launch-profile helloworld

2、Asp.Net Core Mvc应用程序

  1. 注册服务与中间件code

    AspNetCore Mvc就是创建在用来实现路由的EndpointRoutingMiddleware中间件和EndpointMiddleware中间件上的。因此咱们开始改造。

    内置的依赖注入框架之后会深刻了解,如今拿来直接用。

    var builder = Host.CreateDefaultBuilder();
     builder.ConfigureWebHostDefaults(options =>
     {
         options.ConfigureServices(configureServices =>
            {
                 //注册服务
                 configureServices.AddRouting();
                configureServices.AddControllersWithViews();
            }).Configure(app =>
            {
                 //使用服务
                 app.UseRouting();
                app.UseEndpoints(endpoint =>
                {
                    endpoint.MapControllers();
                });
            });
     });
     IHost host = builder.Build();
     host.Run();
  2. 添加控制和视图

    添加一个类HelloController,而后继承controller。

    public class HelloController : Controller
    {
        [HttpGet("/hello/{name}")]
        public IActionResult SayHello(string name)
        {
            ViewData["Name"] = name;
            return View();
        }
    }
    @{
        ViewData["Title"] = "SayHello";
    }
    
    <h1>@ViewData["Name"]</h1>
  3. 注册Startup类型

    以上能够直接跑起来,如今开始注册Startup类,约定大于配置嘛,因此咱们把注册服务配置中间件的过程提取出来,单独放在一个类中,这样就方便之后维护了。

    修改Main方法

    private static void Main(string[] args)
    {
        Host.CreateDefaultBuilder()
            .ConfigureWebHostDefaults(configure =>
               configure.UseStartup<Startup>()
            ).Build().Run();
    }

    Startup类

    public class Startup
    {
        public void ConfigureServices(IServiceCollection services) => services.AddRouting().AddControllersWithViews();
    
        public void Configure(IApplicationBuilder app) =>
            app.UseRouting().UseEndpoints(point => point.MapControllers());
    }

相关文章
相关标签/搜索