netcorepal-cloud-framework icon indicating copy to clipboard operation
netcorepal-cloud-framework copied to clipboard

基于 ASP.NET Core 的领域驱动设计微服务架构实现方案

netcorepal-cloud-framework

Release Build Preview Build NuGet MyGet Preview GitHub license

一个基于ASP.NET Core实现的领域驱动设计落地战术框架。

A tactical framework for Domain-Driven Design based on ASP.NET Core.

文档

https://netcorepal.github.io/netcorepal-cloud-framework

愿景

随着 .NET 技术生态的发展,其在云原生时代的微服务架构已经发展得非常成熟,而领域驱动设计的落地也得到了非常好的支持。同时随着各行各业的信息化、数字化发展诉求越发强烈,更多的企业和团队也对如何有效地组织研发团队以及实现自己的业务架构这个课题开始投入关注。

本项目的核心目的是帮助企业快速构建一套基于领域驱动设计的技术实现框架,同时在领域驱动设计方法论方面进行沉淀和探讨,从而让更多的企业和团队得到帮助。

关注重点

  • 入门友好
    • 完善的文档
    • 配套教程
  • 建模友好
    • 对领域驱动设计建模的直接支持
  • 扩展友好
    • 模块化设计
    • 支持模块集成或替换
    • 鼓励基于源码定制修改
  • 部署友好
    • 支持Docker
    • 支持Helm
  • 测试友好
    • 强调对单元测试、集成测试的支持
  • AI 友好
    • 持续探索对大语言模型AI自动化代码生成的支持

一些原则

我们不重复造轮子,更多地是有机地将优秀的基础设施组织起来,通过建立良好的架构约定来达到目的。

我们持续关注协作效率,本项目的架构设计,会持续关注架构对团队协作的影响,并持续改进。

我们持续关注健壮性,持续关注项目代码的质量。

如何使用

使用 NetCorePal.Template 模板工具创建项目:

# 安装模板工具
dotnet new -i NetCorePal.Template
# 创建项目
dotnet new netcorepal-web -n My.Project.Name

模板工具:https://github.com/netcorepal/netcorepal-cloud-template

Roadmap

规划提供的能力

  • [ ] 支持灵活配置与部署的网关
  • [ ] 基于 ASP.NET Core和开源组件的快速开发框架
  • [ ] 提供领域驱动设计实现的代码模板工程脚手架
  • [ ] 实现具备业务扩展性的整体灰度解决方案
  • [ ] 实现具备业务扩展性的租户能力
  • [ ] 提供带有可视化操作界面的微服务基础设施
  • [ ] 模块化的设计,可按需使用、按需替换
  • [ ] 提供详实的文档
  • [ ] 基于领域驱动设计的微服务架构实践

组件说明

  • [x] Context Passing
    • [x] AspNetCore (HTTP Request)
    • [x] HttpClient
    • [x] RabbitMQ (Based on DotNetCore.CAP)
  • [x] Domain
    • [x] Entity
    • [x] StronglyTypedId (With Source Generator)
    • [x] ValueObject
    • [x] AggregateRoot
    • [x] DomainEvent
  • [x] Repository (Based On EntityFrameworkCore)
  • [x] Transaction
    • [x] UnitOfWork
    • [x] Distributed Transaction(Based on DotNetCore.CAP)
      • [x] Outbox
      • [ ] Saga
  • [x] IdGeneration
    • [x] Snowflake
      • [x] Snowflake with Etcd
  • [x] Mappers
  • [x] Primitives
    • [x] Exception Handling
    • [x] Clock
  • [x] Service Discovery
    • [x] Service Discovery Kubernetes
    • [ ] Service Discovery Consul
    • [ ] Service Discovery Nacos
  • [ ] Multi Tenant
  • [x] Multi Environment

更多信息请参阅使用文档

引用项目

关于协作

我们具有开放的心态,欢迎任何人提出意见和建议,也欢迎任何人贡献代码。

开发调试

  1. 安装.NET 8.0 SDK或更高版本。

    SDK下载地址: https://dot.net/download

  2. 拥有Docker环境,用于自动化单元测试和集成测试。

    Docker Desktop下载地址: https://www.docker.com/products/docker-desktop/

  3. 构建项目

    dotnet build
    
  4. 运行测试

    dotnet test
    
  5. 其它可选依赖

    安装skywalking

    # 安装oap
    docker run --name oap -p 11800:11800 -p 12800:12800 --restart always -d apache/skywalking-oap-server:9.0.0
    
    # 安装oap-ui
    export version=9.0.0
    docker run --name oap-ui -p 8080:8080 -d --link oap -e SW_OAP_ADDRESS=http://oap:12800  apache/skywalking-ui:$version
    
    

预览版源

https://www.myget.org/F/netcorepal/api/v3/index.json