使用三层架构实现 Core API

在现代软件开发中,三层架构(Three-Tier Architecture)是一种常用的架构模式,它将应用程序分为三个层次:表示层(UI)、业务逻辑层(BL)和数据访问层(DAL)。这种结构有助于提高代码的可维护性、可扩展性和可重用性。

本文将指导你如何使用三层架构实现一个简单的 Core API。我们将分步骤进行,每一步都将附上示例代码及其详细注释。

实现流程

以下是使用三层架构实现 Core API 的流程:

步骤描述
1创建数据访问层(DAL)
2创建业务逻辑层(BL)
3创建表示层(UI)
4配置API启动及路由

通过下面的流程图,我们可以进一步简化理解:

创建数据访问层 创建业务逻辑层 创建表示层 配置API启动及路由

步骤详细说明

1. 创建数据访问层(DAL)

数据访问层负责与数据库进行交互。在这里,我们将使用 Entity Framework Core 作为 ORM(对象关系映射)。

代码示例:

// DataAccess Layer: Model.cs
public class User
{
    public int Id { get; set; } // 用户ID
    public string Name { get; set; } // 用户名
}

// DataAccess Layer: AppDbContext.cs
public class AppDbContext : DbContext
{
    public DbSet<User> Users { get; set; } // 用户表

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("YourConnectionString"); // 数据库连接字符串
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
2. 创建业务逻辑层(BL)

业务逻辑层处理应用程序的逻辑,例如数据验证和业务规则。我们将在这里创建一个用户服务。

代码示例:

// Business Logic Layer: IUserService.cs
public interface IUserService
{
    User GetUser(int id); // 根据ID获取用户
    void AddUser(User user); // 添加用户
}

// Business Logic Layer: UserService.cs
public class UserService : IUserService
{
    private readonly AppDbContext _context;

    public UserService(AppDbContext context)
    {
        _context = context; // 初始化数据库上下文
    }

    public User GetUser(int id)
    {
        return _context.Users.Find(id); // 通过ID查找用户
    }

    public void AddUser(User user)
    {
        _context.Users.Add(user); // 添加用户至数据库
        _context.SaveChanges(); // 保存变化
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
3. 创建表示层(UI)

表示层是我们与 API 交互的地方。我们将使用 ASP.NET Core 创建一个简单的控制器。

代码示例:

// Presentation Layer: UserController.cs
[ApiController]
[Route("api/[controller]")]
public class UserController : ControllerBase
{
    private readonly IUserService _userService;

    public UserController(IUserService userService)
    {
        _userService = userService; // 注入用户服务
    }

    [HttpGet("{id}")]
    public IActionResult GetUser(int id)
    {
        var user = _userService.GetUser(id); // 根据ID获取用户
        if (user == null)
            return NotFound(); // 用户不存在时返回404

        return Ok(user); // 返回用户信息
    }

    [HttpPost]
    public IActionResult AddUser([FromBody] User user)
    {
        _userService.AddUser(user); // 添加新用户
        return CreatedAtAction(nameof(GetUser), new { id = user.Id }, user); // 201创建成功
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
4. 配置API启动及路由

在此步骤中,我们将配置应用程序的启动以及依赖注入。

代码示例:

// Startup.cs
public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddDbContext<AppDbContext>(); // 添加数据库上下文
        services.AddScoped<IUserService, UserService>(); // 注册用户服务
        services.AddControllers(); // 添加控制器
    }

    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage(); // 开发环境下使用异常页面
        }
        
        app.UseRouting(); // 启用路由

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapControllers(); // 映射控制器到路由
        });
    }
}
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.

总结

通过上述步骤,我们实现了一个简单的 Core API,采用三层架构的设计模式。具体来说,我们创建了数据访问层(DAL)来进行数据库操作,业务逻辑层(BL)进行数据处理,最后通过表示层(UI)与用户进行交互。这样的分层结构使得代码的可维护性和可扩展性得到了提升。

希望通过这篇文章,你能够理解并成功实现 Core API 使用三层架构。如果在实现过程中有任何疑问,欢迎随时与我讨论。