ASP.NET Core 配置系列二

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

e15c6b8f36112f904ceec2563701229f.png

在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

我们运行应用程序来测试一下这个服务,如下图所示

2c782fc3a4075e73e2d577453848603e.png

现在我们看到应用程序可以工作,我们最开始的空模板,创建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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值