第一章 開發體驗

第一章 開發體驗

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());
    }

相關文章
相關標籤/搜索