Aspnet-Core
2 min read
为什么 API 版本管理如此重要? API 版本管理的核心目标是:在不破坏现有用户的前提下,持续迭代和改进 API。通过版本管理,我们可以:
引入新功能:在新版本中添加字段、接口等,而不影响旧版本的用户。 修复 bug:在新版本中修复问题,而不冒破坏旧版本的风险。 逐步淘汰:在新版本中移除过时的功能,给用户足够的时间迁移。 常见的版本策略有这几种:
URL 路径版本:/api/v1/users,直 …
2 min read
引言 这篇文章我们来聊一聊 asp.net core 的内存缓存。asp.net core 内存缓存(IMemoryCache)是一个轻量级的缓存方案,适用于单实例应用或者分布式环境中的本地缓存。它提供了简单的 API 来存储和检索数据,同时支持过期策略、优先级设置等功能。
什么是缓存 从用户请求到数据库返回数据,这是一个漫长的过程(夸张了点,通常也就是几十毫秒到几百毫秒)。可是又不止一个用户在访 …
3 min read
订单服务最容易出现的稳定性问题,不是业务代码写错,而是下游支付、库存、短信网关一抖,整个接口成功率跟着雪崩。看起来只是一次超时,实际上会引发重试风暴、线程池占满、数据库回写积压。今天这篇就只做一件事:把外部依赖调用链路收敛到可控、可观测、可恢复的状态。
1. 问题背景:服务没挂,为什么成功率先掉 线上经常出现这种现象:
API 进程还活着,CPU 占用也不高,可能只有40%(举个例子,非真实数 …
2 min read
这篇文章不讨论完整身份平台建设,只聚焦 ASP.NET Core 里最常见、也最容易出错的一段:JWT 认证、Policy 授权,以及资源级权限边界该怎么落到代码里。
问题背景 真实现场:一个后台退款接口原本只允许财务角色调用,但线上排查发现,普通运营账号只要拿到有效 token,也能调用成功。
根因并不复杂:
接口加了 [Authorize] 系统只校验“是否登录” 没有继续校验角色、权限和资源 …
2 min read
很多团队做性能优化时,第一反应是改 SQL、加缓存、扩机器。结果接口还是慢,而且慢得不稳定。
这类问题里,有一部分根因并不在业务代码,而在请求进入业务之前就已经产生了: 中间件顺序、重复序列化、过重日志、异常处理位置不当,都会把每个请求的固定成本悄悄抬高。
这篇文章我们不讲抽象概念,直接从一个真实工程场景出发,拆开 ASP.NET Core 请求管线,回答三个问题:
请求管线到底是怎么执行的 哪些 …
5 min read
引言 欢迎阅读,这篇文章主要面向初级开发者。
在开始之前,先问你一个问题:你做的系统,是不是每次增加一个查询条件或者排序字段,都要去请求参数对象里加一个属性,然后再跑去改 EF Core 的查询逻辑?
如果是,那这篇文章应该对你有用。我会带你做一个统一的、扩展起来不那么麻烦的分页查询方案。整体思路是四件事:统一入参、统一出参、动态排序、动态过滤。 …
2 min read
在一个项目中,方便为多个客户提供服务,我们需要实现多租户系统。多租户系统,就是多个客户共享一个运行的项目实例,同时确保每个客户的数据安全隔离(你看不见我,我看不见你)。
这篇文章,我们将落地在 ASP.NET Core 和 Entity Framework Core 中,基于 TenantId 的全局过滤机制,实现多租户数据隔离。
原理解析 先确定隔离模型 多租户常见有三种模型:
每个租户一套数据 …
2 min read
引言 不知道你有没有在面试中遇到过这样的问题:“中间件和过滤器的区别是什么?",或者在平时开发中思考过:“一个请求进来,ASP.NET Core 到底是怎么一步步处理它的?”
这篇文章就来聊聊,不会涉及太深的源码,主要面向初级开发者,帮你建立一个清晰的认知。
先说中间件 中间件是 ASP.NET Core 处理 HTTP 请求的基本部件,是框架本身的组 …