Dojo
最新
最佳
搜索
订阅
解道Jdon
架构设计
领域驱动
DDD介绍
DDD专辑
战略建模
领域语言UL
领域事件
商业分析
工作流BPM
规则引擎
架构师观点
数据工程
产品经理
系统思维
微服务
微服务介绍
微服务专辑
模块化设计
SOA
API设计
clean架构
SpringBoot
分布式事务
事件溯源
Kafka消息
Kubernetes
DevOps
编程设计
GoF设计模式
模式专辑
面向对象
函数式编程
编程语言比较
编程工具比较
形式逻辑
前端编程
Reactive编程
Jdon框架
Rust语言
人工智能
Web3
模因梗
幽默梗
程序员吐槽
面试技巧
Java入门
数字化转型
认知偏差
道德经
更多话题
ECommerce Microservices:基于DDD+CQRS的实用电子商务.NET源码
22-03-18
banq
ECommerce Microservices是一个虚构的电子商务,基于不同的软件
架构
和技术,如
微服务
架构、垂直切片架构、CQRS 模式、领域驱动设计、事件驱动架构、收件箱和发件箱模式,并使用 Postgres 写入端和 MongoDb 读取端等。
该项目正在进行中,随着时间的推移将添加新功能。
项目的目标
带有领域驱动设计(DDD)实现的微服务架构。
为每个微服务正确地分离
有界上下文
。
通过使用RabbitMQ和一些自治服务的
异步
消息代理,在受约束的上下文之间进行通信。
简单的
CQRS
实现和事件驱动架构,写端使用Postgres,读端使用MongoDB和Elastic Search。为了同步读端和写端,我将使用EventStore
Projections投射或Marten Projections。我们也可以通过在服务之间传递一些集成事件来同步我们的读和写模型,以实现最终一致性。
实施各种类型的测试,如单元测试、集成测试和端到端测试。
使用收件箱模式来保证接收方微服务的消息空闲性和精确一次的交付模式,使用收件箱模式来确保任何消息的丢失和至少一次的交付规则。
使用最佳实践和新技术以及
设计模式
。
使用
事件风暴
来提取数据模型和有边界的环境(使用Miro)。
使用Docker-Compose、Helm和Kubernetes作为我们的部署机制,同时使用Terraform作为基础设施的代码。
使用Istio和Service Mesh实现我们的微服务。
涉及技术库:
.NET 6 - .NET框架和.NET核心,包括ASP.NET和ASP.NET核心
Npgsql Entity Framework Core Provider - Npgsql有一个Entity Framework (EF) Core Provider。它的行为与其他EF Core提供者(如SQL Server)类似,所以一般的EF Core文档也适用于此。
FluentValidation - 流行的.NET验证库,用于构建强类型的验证规则。
Swagger & Swagger UI - 用于记录建立在ASP.NET Core上的API的Swagger工具。
Serilog - 具有完全结构化事件的简单.NET日志。
Polly - Polly是一个.NET弹性和瞬时故障处理库,允许开发人员以流畅和线程安全的方式表达策略,如重试、断路、超时、隔板隔离和回退。
Scrutor - Microsoft.Extensions.DependencyInjection的汇编扫描和装饰扩展。
Opentelemetry-dotnet - OpenTelemetry .NET客户端
DuendeSoftware IdentityServer - 用于ASP.NET Core的最灵活、最符合标准的OpenID Connect和OAuth 2.x框架。
Hangfire - 在ASP.NET应用程序中执行即用即忘、延迟和重复性任务的简便方法。
EasyCaching - 开源缓存库,包含缓存的基本用法和一些高级用法,可以帮助我们更容易地处理缓存。
AutoMapper - .NET中基于约定的对象-对象映射器。
Hellang.Middleware.ProblemDetails - 用于处理.Net Core中异常的中间件。
IdGen - Twitter Snowflake-alike ID generator for .Net。
1
DDD案例源码
GitHub开源免费源代码
CQRS命令查询分离架构
微服务架构