Day19:Service 业务层(企业架构核心)

一、今日学习目标

  1. Service 层职责(什么代码必须写这里,什么不能写)
  2. IService 接口 + ServiceImpl 实现类(标准规范)
  3. 依赖注入 DI
  4. Service 调用仓储(Repository)
  5. 事务、校验、逻辑、组合、DTO 转换
  6. Controller 只做路由、参数接收、返回结果

二、核心理论(背会)

1. Service 层是干什么的?

  • 处理业务规则
  • 处理参数校验
  • 处理事务
  • 处理多表操作
  • 处理Dto → Entity
  • 处理异常抛出
  • 不处理前端交互
  • 不处理路由

2. 三层架构铁律

  • Controller:接收请求 → 调用 Service → 返回格式
  • Service:业务 + 事务 + 逻辑 + 组合调用仓储
  • Repository:单表 CURD

3. 为什么要 IService 接口?

  • 面向接口编程
  • 方便单元测试
  • 方便替换实现
  • 企业规范

三、高频面试题 + 答案

1. Service 层为什么要写接口?不写行不行?

答案 :行,但不规范。接口是为了解耦、规范、扩展、测试 。企业项目必须写接口

2. Service、Repository、Controller 区别?

答案

  • Controller:接收参数、校验模型、返回格式
  • Service:业务、事务、多表、逻辑
  • Repository:单表 CURD

3. 事务应该写在哪一层?

答案必须写在 Service,一个事务 = 一个业务方法。

4. Service 可以调用 Service 吗?

答案 :可以,但避免循环依赖 。推荐:Service 调用 Repository / 其他 Service

5. 业务逻辑可以写在 Controller 吗?

答案 :**绝对不行!**Controller 只做入口,业务必须下沉 Service。

6. Service 是单例还是作用域?

答案AddScoped 作用域(一次请求一个实例)。


四、今日实战练习:用户业务 Service 完整实现

要求

  1. 新建 IUserService 接口
  2. 新建 UserService 实现类
  3. 注入 IUnitOfWork
  4. 实现所有用户业务
  5. Controller 完全不写业务
  6. 统一返回 R<T>
  7. 全部异步 async/await
相关推荐
Kimhill张2 天前
.net core8 WPF 依赖注入(DI)
wpf·.netcore
wangl_923 天前
C# / .NET 在工业环境中的优势
开发语言·c#·.net·.netcore·.net core·visual studio
豆豆6 天前
信创环境下CMS国产化适配实践:以.NET Core路线为例的技术验证
.netcore·cms·信创·国产化·建站系统·内容管理系统·网站管理系统
时光追逐者6 天前
C#/.NET/.NET Core技术前沿周刊 | 第 70 期(2026年5.01-5.10)
c#·.net·.netcore
van久11 天前
Day20:AutoMapper 对象映射
.netcore
van久11 天前
Day23 登录 + 颁发 Token(DDD 四层架构 + 企业标准)
.netcore
wangl_9212 天前
C#性能优化完全指南 - 从原理到实践
开发语言·性能优化·c#·.net·.netcore·visual studio
宝桥南山16 天前
GitHub Models - 尝试一下使用GitHub Models
microsoft·ai·微软·c#·github·.netcore
武藤一雄16 天前
WPF进阶:万字详解WPF如何性能优化
windows·性能优化·c#·.net·wpf·.netcore·鲁棒性