AspNetCore-DDD

AspNetCore-DDD

ASP.NET Core项目框架 基于DDD的企业级开发方案

AspNetCore-DDD是一个基于领域驱动设计的ASP.NET Core项目框架,使用.NET 8.0技术栈。该框架整合了CQRS、事件溯源等设计模式,提供Docker支持、API版本控制和Swagger文档。它包含单元测试、集成测试和健康检查功能,适用于开发高性能、易维护的企业级应用。

ASP.NET Core设计模式Docker测试数据库Github开源项目

图表

概览

架构

依赖关系

项目依赖

代码流程

仓储与工作单元

技术栈

  • ASP.NET Core 8.0 (基于 .NET 8.0)
  • ASP.NET WebApi Core
  • ASP.NET Identity Core
  • Entity Framework Core
  • .NET Core 原生依赖注入
  • AutoMapper
  • FluentValidation
  • MediatR
  • Swagger UI
  • MSSQL
  • xUnit
  • Moq
  • FluentAssertions
  • Polly
  • Refit
  • DbUp
  • NPOI
  • Quartz
  • StyleCop

设计模式

  • 领域驱动设计
  • 领域事件
  • 领域通知
  • 命令查询职责分离 (CQRS)
  • 事件溯源
  • 工作单元
  • 仓储模式 & 通用仓储
  • 控制反转 / 依赖注入
  • ORM
  • 中介者模式
  • 规约模式
  • 选项模式

预配置

  • 配置用户密钥:

    • DDD.Services.Api.csproj 中找到 UserSecretsId(可更改为任意 GUID/UUID)
    • Windows:C:\Users\[用户名]\AppData\Roaming\Microsoft\UserSecrets\<user_secrets_id>\secrets.json
    • Linux / macOS:~/.microsoft/usersecrets/<user_secrets_id>/secrets.json
  • Windows 的 secrets.json

{ "ConnectionStrings": { "DefaultConnection": "Server=(localdb)\\MSSQLLocalDB;Database=DDD;Trusted_Connection=True;MultipleActiveResultSets=true" } }
  • LocalDB 是 SQL Server Express Edition 的打包机制,仅适用于 Windows,Linux / macOS 请使用 Microsoft SQL ServerAzure SQL Edge

  • Linux / macOS 的 secrets.json

{ "ConnectionStrings": { "DefaultConnection": "Data Source=<ip地址>,1433;Initial Catalog=aspnetcore-ddd;User ID=SA;pwd=<你的新强密码>;Integrated Security=False;ConnectRetryCount=0;MultipleActiveResultSets=True" } }

如何运行

  • Visual Studio:选择配置文件 > 运行 (F5)
  • VSCode:选择配置 > 运行 (F5)
  • 终端:
dotnet build Src/DDD.Services.Api/DDD.Services.Api.csproj dotnet run --project Src/DDD.Services.Api/DDD.Services.Api.csproj --launch-profile Dev dotnet watch --project Src/DDD.Services.Api/DDD.Services.Api.csproj run

测试

  • 终端:dotnet test

Docker

docker build -t aspnetcore-docker-image . docker run -it --rm -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image docker run -d -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image
docker compose up -d docker compose ps docker compose stop

Podman

podman build -t aspnetcore-docker-image . podman run -it --rm -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image podman run -d -p 3000:80 --name aspnetcore-docker-container aspnetcore-docker-image
podman-compose up -d podman-compose ps podman-compose stop

Swagger(仅限开发环境)

健康检查(仅限预发布和生产环境)

待办事项

  • 使用多环境
  • 事务(工作单元)
  • 验证(FluentValidation)
  • 响应包装器
  • 异步/等待
  • REST
  • JWT
  • 映射(AutoMapper)
  • API规范,API定义(Swagger)
  • ORM {Entity Framework Core}
  • 中间件
  • CORS
  • 分页
  • 排序
  • 错误处理,全局异常
  • 健康检查
  • 邮件
  • Http
  • 数据库审计:创建时间/更新时间 创建者/更新者
  • 软删除
  • 通用:常量,辅助函数
  • Docker,Docker Compose,Github容器注册表
  • EF:影子属性
  • 事件
  • 单元测试
  • 集成测试
  • 使用Scoped而非Transient
  • 在适当的类中使用abstract关键字
  • 使用IQueryableIEnumerableIList接口
  • 为类库使用NetStandard 2.1
  • 哈希
  • 分析级别:自动查找潜在错误 (.NET 5或更高版本默认启用)
  • 迁移(DbUp)
  • 用户机密
  • API版本控制
  • 带Swagger的API版本控制
  • Kubernetes
  • AKS
  • 热重载
  • SignalR
  • 通知
  • Webhook
  • 任务调度与队列:Quartz
  • Quartz:即发即弃
  • NPOI
  • REST客户端
  • StyleCopAnalyzers(使用默认规则集并禁用9条规则:SA0001,SA1200,SA1201,SA1309,SA1400,SA1512,SA1600,SA1601,SA1633)
  • RoslynAnalyzers(.NET 5或更高版本默认启用)
  • Secret Manager
  • OmniSharp Roslyn
  • sonar-dotnet
  • docfx
  • Autofac
  • Bogus
  • 脚手架
  • 数据种子
  • 日志记录
  • OAuth2,OIDC(OpenId Connect)
  • 搜索
  • KafkaRabbitMQ
  • 微服务,API网关(Ocelotyarp
  • 多租户
  • 主键改为整数
  • 文件存储:上传/下载
  • 全球化与本地化
  • 缓存
  • Kestrel
  • 会话与Cookie
  • 加密
  • EF:无跟踪查询
  • DapperDapper Contrib(可选)
  • RepoDB
  • 批量插入,批量更新,IRepository的异步方法

参考资料

编辑推荐精选

TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

Transly

Transly

实时语音翻译/同声传译工具

Transly是一个多场景的AI大语言模型驱动的同声传译、专业翻译助手,它拥有超精准的音频识别翻译能力,几乎零延迟的使用体验和支持多国语言可以让你带它走遍全球,无论你是留学生、商务人士、韩剧美剧爱好者,还是出国游玩、多国会议、跨国追星等等,都可以满足你所有需要同传的场景需求,线上线下通用,扫除语言障碍,让全世界的语言交流不再有国界。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
商汤小浣熊

商汤小浣熊

最强AI数据分析助手

小浣熊家族Raccoon,您的AI智能助手,致力于通过先进的人工智能技术,为用户提供高效、便捷的智能服务。无论是日常咨询还是专业问题解答,小浣熊都能以快速、准确的响应满足您的需求,让您的生活更加智能便捷。

imini AI

imini AI

像人一样思考的AI智能体

imini 是一款超级AI智能体,能根据人类指令,自主思考、自主完成、并且交付结果的AI智能体。

下拉加载更多