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
在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
我们运行应用程序来测试一下这个服务,如下图所示
现在我们看到应用程序可以工作,我们最开始的空模板,创建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