1. 程式人生 > 實用技巧 >【.Net Core從零開始前後端分離】(二)——後端專案搭建

【.Net Core從零開始前後端分離】(二)——後端專案搭建

一、環境安裝

首先需要安裝 .Net Core的SDK環境。

下載 SDK 地址 :https://dotnet.microsoft.com/download

選擇指定的平臺即可安裝

開啟命令視窗,直接執行命令【dotnet】,如果有結果證明成功了:

二、新建專案

開啟vs2019 ,建立一個新的專案,選擇web應用程式模板:


建立專案名稱,解決方案名稱設定語專案不一致,方便區分

三、專案整體結構

1、專案啟動檔案配置

可以設定兩種專案啟動的方式,分為IIS除錯以及專案自帶的Kestrel web應用調式。一般我們都是使用專案的自帶Kestrel web應用調式,將專案設定為啟動專案,選擇對應的專案執行即可

2、專案依賴和框架

這裡放置專案所有的依賴和框架。可以使用NuGet包新增程式集

3、API控制器介面


這裡預設,有一個 WeatherForecastController.cs ,開啟後:

1、當前控制器繼承了 ControllerBase 基類;

2、有一個路由特性,可以配置當前路由規則,比如當前的是[Route("[controller]")],表示 Url 路徑為 :localhost:5000/weacherforecast

如果你配置 [Route("[controller]/[action]")] 表明 Url 路徑為 :localhost:5000/weacherforecast/get

3、發現有一個預設的建構函式,裡邊已經注入了日誌 ILogger,這個依賴注入相關內容

4、預設提供了一個 get 方法,隨機生成了一個天氣集合;

4、專案整體配置檔案

後續可以在這裡配置資料連線等全域性的配置

5、專案整體配置檔案

Program


這個Program是程式的入口, 看起來很眼熟, 是因為asp.net core application實際就是控制檯程式(console application).

它是一個呼叫asp.net core 相關庫的console application.

Main方法裡面的內容主要是用來配置和執行程式的。

因為我們的web程式需要一個宿主,所以CreateHostBuilder這個方法就建立了一個IHostBuilder. 而且我們還需要Web Server.

asp.net core 自帶了兩種http servers, 一個是WebListener, 它只能用於windows系統, 另一個是kestrel, 它是跨平臺的.

kestrel是預設的web server, 就是通過UseKestrel()這個方法來啟用的.

但是我們開發的時候使用的是IIS Express, 呼叫UseIISIntegration()這個方法是啟用IIS Express, 它作為Kestrel的Reverse Proxy server來用.

webBuilder.UseStartup();, 這句話表示在程式啟動的時候, 我們會呼叫Startup這個類.

Build()完之後返回一個實現了 IHost 介面的例項(IHostBuilder), 然後呼叫Run()就會執行Web程式, 並且阻止這個呼叫的執行緒, 直到程式關閉.

Startup


    public class Startup
    {
        public Startup(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public IConfiguration Configuration { get; }

        // This method gets called by the runtime. Use this method to add services to the container.
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseAuthorization();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapControllers();
            });
        }
    };

其實Startup算是程式真正的切入點,是配置服務和中介軟體的啟動類。

Startup 預設建構函式,注入了配置項 IConfiguration。

ConfigureServices方法是用來把services(各種服務, 例如identity, ef, mvc等等包括第三方的, 或者自己寫的)加入(register)到container(asp.net core的容器)中去, 並配置這些services. 這個container是用來進行dependency injection的(依賴注入). 所有注入的services(此外還包括一些框架已經註冊好的services) 在以後寫程式碼的時候, 都可以將它們注入(inject)進去. 例如上面的Configure方法的引數, app, env, loggerFactory都是注入進去的services.

Configure 方法是asp.net core程式用來具體指定如何處理每個http請求的, 例如我們可以讓這個程式知道我使用mvc來處理http請求, 那就呼叫 app.UseEndpoints 這個方法就行,這個是一個短路中介軟體,表示 http 請求到了這裡就不往下走了.

總結

好啦,專案搭建完成了,簡單瞭解了.Net Core API是如何安裝,建立,各個檔案的意義以及如何運作,如何配置等。後續就可以愉快的開發了。