Project Icon

AspNetCore-DDD

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

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

图表

概览

架构

依赖关系

项目依赖

代码流程

仓储与工作单元

技术栈

  • 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的异步方法

参考资料

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号