天天看點

ASP.NET Core 配置系列二

作者:opendotnet

5 什麼是ASP.NET Core 服務

ASP.NET Core 服務是指在應用程式中可以執行特定任務的,例如:

1.給使用者郵箱發送驗證碼服務

2.通過一次性密碼來驗證使用者手機号服務3.恢複使用者賬号密碼的服務4.Entity Framework Core 服務5.Identity 服務

我們将建立一個ASP.NET Core 服務來統計應用程式注冊使用者的總數,在應用程式根目錄下建立一個Services檔案夾,在這個檔案中建立一個TotalUsers.cs類,在類中添加如下代碼:

namespace AspNetCore.Configuration.Services              {              public class TotalUsers              {              public long TUsers()              {              Random rnd = new Random();              return rnd.Next(100, int.MaxValue);              }              }              }           

TUsers()方法傳回應用程式注冊使用者的總人數,我們用随機數來生成最小值為100,最大值為int類型的最大值

接下來我們在應用程式中注冊這個類以至于ASP.NET Core能在應用程式中使用這個類

進入Program.cs類并且在調用builder.Build()之前添加代碼builder.Services.AddSingleton<TotalUsers>()Program類中的代碼如下:

using AspNetCore.Configuration.Services;              var builder = WebApplication.CreateBuilder(args);              builder.Services.AddControllersWithViews();              builder.Services.AddRazorPages();              builder.Services.AddSingleton<TotalUsers>();              var app = builder.Build();              // Configure the HTTP request pipeline.              if (!app.Environment.IsDevelopment())              {              app.UseExceptionHandler("/Home/Error");              // The default HSTS value is 30 days.              app.UseHsts();              }              app.UseHttpsRedirection();              app.UseStaticFiles();              app.UseRouting();              app.UseAuthorization();              app.MapControllerRoute(              name: "default",              pattern: "{controller=Home}/{action=Index}/{id?}");              app.Run();           

builder.Services.AddSingleton<TotalUsers>()代碼添加服務,在整個應用程式中共享該服務,接下來我們将這個服務注入到控制器并且在浏覽器中顯示使用者總數

5.1 在控制器中注入ASP.NET Core服務

使用依賴注入特性我們可以在控制器中使用服務,我們可以通過控制器的構造函數注入服務的對象,在下面的代碼中我建立了一個HomeController的構造函數并且在構造函數中添加了一個TotalUsers的參數

我們剛才已經在Program類中注冊了TotalUsers類是以依賴注入特性會自動為構造函數的參數提供TotalUsers執行個體并且進行指派

我們在應用程式的根目錄下建立Controllers檔案夾,接着在檔案夾下添加一個空的MVC Controller并且命名為HomeController.cs

ASP.NET Core 配置系列二

在HomeController中添加如下代碼

using AspNetCore.Configuration.Services;              using Microsoft.AspNetCore.Mvc;              namespace AspNetCore.Configuration.Controllers              {              public class HomeController : Controller              {              private TotalUsers _totalUsers;              public HomeController(TotalUsers totalUsers)              {              _totalUsers = totalUsers;              }              public string Index()              {              return "總使用者人數是" + _totalUsers.TUsers();              }              }              }           

控制器有一個構造函數,構造函數的參數是我們的服務類TotalUsers,當ASP.NET調用此控制器時,它會看到構造函數要求一個名為TotalUsers服務的依賴對象,接着MVC進入Program類并且查找TotalUsers類,接着會建立一個TotalUsers類的執行個體并且将該對象傳遞到HomeController的構造函數Index 方法調用TUsers()方法擷取注冊使用者的總數,最後将資料傳回到View

接下來在應用程式的根目錄下建立一個Views檔案夾,在Views檔案夾内建立一個Home檔案夾

現在在Views->Home檔案夾下建立一個Index.cshtml的空Razor視圖,添加下面代碼

@model string              @Model           

我們運作應用程式來測試一下這個服務,如下圖所示

ASP.NET Core 配置系列二

現在我們看到應用程式可以工作,我們最開始的空模闆,建立Service->Controller->View,這對于我們來說是個很好的學習經驗,下一節我們将讨論中間件

總結

這節我們主要介紹了ASP.NET Core服務

源代碼位址

https://github.com/bingbing-gui/Asp.Net-Core-Skill/tree/master/Fundamentals/AspNetCore.Configuration/AspNetCore.Configuration

參考文獻

[1]https://www.yogihosting.com/aspnet-core-configurations/#content-generating-middleware