在现代 .NET 应用(尤其是 ASP.NET Core)中,ClaimsPrincipal 是身份认证和授权的核心对象。它封装了当前用户的身份信息、角色声明(claims)以及其他安全上下文数据。然而,当你需要将用户身份信息跨服务传递、记录日志、缓存或用于调试时,往往会遇到一个看似简单却颇具挑战的...
使用中介者模式轻松实现命令查询职责分离,构建高内聚、低耦合的应用系统 一、知识点回顾 1. 什么是CQRS? CQRS是Command Query Responsibility Segregation的缩写,一般称作命令查询职责分离。从字面意思理解,就是将命令(写入)和查询(读取)的责任划分到不同的...
书接上回。 上一篇文章中已经通过一个实际的业务场景结合RabbitMQ的四种交换机类型对RabbitMQ发布订阅模式同一消费者多个实例如何防止重复消费这个问题给出了解决方案。结尾的时候挖了个坑,水这篇的目的就是要把这个坑填上,给大家提供一个可以直接抄作业的代码。 先把一些参数提前公布出来,后面代码里...
微服务架构模式中,服务间的通信一般采用HTTP、RPC或者MQ(消息队列)。在这三种方案中,HTTP和RPC是一对一的方式,通常用来进行查询或者命令式的操作,MQ则多用于事件的发布和处理。 在实际项目中我们通常会遇到一种情况: 事件有多个订阅者,有的订阅者部署多个实例,要求每个事件只需要发布一次,每...
Event Bus(事件总线)是一种用于在应用程序内部或跨应用程序组件之间进行事件通信的机制。它允许不同的组件通过发布和订阅事件来进行解耦和通信。 在给定的代码片段中,我们可以看到一个使用C#实现的Event Bus。它定义了一些接口和类来实现事件的发布和订阅。 首先,我们有两个基本的约束接口:IE...
Azure Functions 的五种托管方式,包括 Flex Consumption、Premium、Dedicated、Container Apps 和 Consumption 计划,比较了它们在缩放方式、资源限制、适用场景和计费方式上的差异。...
Cache 在 REST 设计中使用缓存可以缩短响应时间、节约网络带宽。 A “cache” is a local store of previous response messages and the subsystem that controls its message storage, ret...
What is REST REST, stands for REpresentational State Transfer, proposed by Roy Fielding in his 2000 PhD dissertation[1], is an architectural approach ...
在Thoughtworks的第25期 技术雷达中有一个主题:便利背后的陷阱,再次强调了软件开发的一种反模式: 开发团队一般为了图方便,而在其技术生态系统的复杂环节中,引入一些不合理的行为,从而欠下长期存在的技术债务,并会引发更糟的问题。这种例子不胜枚举,包括将数据库作为集成点,使用 Kafka 作为...
BFF(Backend for Frontend)架构是一种设计模式,它在后端服务器和前端用户界面之间引入了一个中间层。BFF充当中介,负责处理前端应用程序的请求并与后端服务通信。这种架构可以提高前后端协同效率,优化接口调用,以及满足不同前端设备的需求。 BFF架构开发注意点 在使用BFF架构进行项...