Skip to content

一个基于ASP.NET Core实现的整洁领域驱动设计落地战术框架。 A tactical framework for Clean Domain-Driven Design based on ASP.NET Core.

License

Notifications You must be signed in to change notification settings

netcorepal/netcorepal-cloud-framework

Repository files navigation

netcorepal-cloud-framework         English

Release Build Preview Build NuGet MyGet Preview GitHub license Ask DeepWiki

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

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

核心特性:

  • 领域驱动设计实践支持
  • CQRS
  • Event Driven
  • 分布式事务(事件处理的最终一致性)
  • 多租户
  • 多环境(灰度发布)
  • 分库分表

DeepWiki

https://deepwiki.com/netcorepal/netcorepal-cloud-framework

如何使用

使用模版工具

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

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

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

快速入门文档

完整文档

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

愿景

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

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

Roadmap

规划提供的能力

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

组件说明

  • Context Passing
    • AspNetCore (HTTP Request)
    • HttpClient
    • RabbitMQ (Based on DotNetCore.CAP)
  • Domain
    • Entity
    • StronglyTypedId (With Source Generator)
    • AggregateRoot
    • DomainEvent
  • Repository (Based On EntityFrameworkCore)
  • Transaction
    • UnitOfWork
    • Distributed Transaction
      • Outbox(Based on DotNetCore.CAP)
  • IdGeneration
    • Snowflake
      • Snowflake with Etcd
      • Snowflake with Redis
      • Snowflake with Consul
  • Primitives
    • Exception Handling
    • Clock
  • Service Discovery
    • Microsoft Service Discovery (Aspire)
    • Service Discovery Kubernetes
  • Multi Tenant
  • Multi Environment
    • Gray Environment
  • Sharding
    • Database
    • Table
    • Tenant

代码分析可视化

框架提供了强大的代码流分析和可视化功能,帮助开发者直观地理解DDD架构中的组件关系和数据流向。

🎯 核心特性

  • 自动代码分析:通过源生成器自动分析代码结构,识别控制器、命令、聚合根、事件等组件
  • 多种图表类型:支持架构流程图、命令链路图、事件流程图、类图等多种可视化图表
  • 交互式HTML可视化:生成完整的交互式HTML页面,内置导航和图表预览功能
  • 一键在线编辑:集成"View in Mermaid Live"按钮,支持一键跳转到在线编辑器

📊 可视化效果

多链路综合图多链路综合图示例

独立链路图集合独立链路图集合示例

🚀 快速开始

ASP.NET Core 集成

  1. 安装包:在需要分析的项目中添加以下包引用:

    <PackageReference Include="NetCorePal.Extensions.CodeAnalysis" />
  2. 注册端点:在 Program.cs 中添加可视化端点:

using NetCorePal.Extensions.CodeAnalysis;

var builder = WebApplication.CreateBuilder(args);

// ...其他服务注册...

var app = builder.Build();

// 仅在开发环境中注册代码分析可视化端点
if (app.Environment.IsDevelopment())
{
    app.MapGet("/diagnostics/code-analysis", () =>
    {
        // 从当前应用程序域聚合分析结果
        var analysisResult = AnalysisResultAggregator.Aggregate(AppDomain.CurrentDomain.GetAssemblies());
        
        // 生成完整的HTML可视化页面
        var htmlContent = MermaidVisualizer.GenerateVisualizationHtml(
            analysisResult, 
            "应用程序架构可视化");
        
        return Results.Content(htmlContent, "text/html");
    });
}

app.Run();
  1. 访问可视化:启动应用程序后访问:
    https://localhost:5001/diagnostics/code-analysis
    

命令行工具

也可以安装命令行工具来生成独立的HTML文件:

# 安装全局工具
dotnet tool install -g NetCorePal.Extensions.CodeAnalysis.Tools

# 进入项目目录并生成可视化文件
cd MyApp
netcorepal-codeanalysis generate --output architecture.html

✨ 主要功能

  • 交互式HTML页面

    • 左侧树形导航,支持不同图表类型切换
    • 内置Mermaid.js实时渲染
    • 响应式设计,适配不同设备
    • 专业的现代化界面
  • 一键在线编辑

    • 每个图表右上角的"View in Mermaid Live"按钮
    • 智能压缩算法优化URL长度
    • 自动跳转到Mermaid Live Editor
    • 支持在线编辑、导出图片、生成分享链接

📖 详细文档

完整的使用说明和示例请参考:

引用项目

关于协作

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

开发调试

  1. 安装.NET 9.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

关注重点

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

一些原则

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

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

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

About

一个基于ASP.NET Core实现的整洁领域驱动设计落地战术框架。 A tactical framework for Clean Domain-Driven Design based on ASP.NET Core.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 11