当前位置: 首页 > news >正文

NetCorePal.Aspire 项目介绍

NetCorePal.Aspire 项目介绍

netcorepal-aspire

NetCorePal.Aspire 是面向 .NET Aspire 的托管扩展包集合,致力于为企业级分布式应用提供统一、规范的基础设施集成能力。

项目聚焦国产化数据库场景,围绕 netcorepal-cloud-framework 的工程实践需求,提供与 .NET Aspire 生态一致的资源托管、依赖编排和本地开发支持能力,帮助开发团队在国产化基础设施环境下获得更完整、更高效的开发与交付体验。

NetCorePal.Aspire 已集成至 netcorepal-cloud-template,可随模板工程直接使用,具备开箱即用的应用基础。


当前能力

目前,NetCorePal.Aspire 已提供以下托管扩展能力:

OpenGauss 托管扩展

提供 NetCorePal.Aspire.Hosting.OpenGauss 包,用于在 Aspire 应用中声明和管理 OpenGauss 资源,主要支持:

  • OpenGauss 服务与数据库资源添加
  • 自动连接字符串管理
  • 内置健康检查
  • 数据卷与绑定挂载
  • 初始化脚本挂载
  • 自定义端口与凭据配置
  • 数据库兼容模式支持

其中,数据库创建支持以下兼容模式:

  • PG:PostgreSQL 兼容
  • A:Oracle 兼容
  • B:MySQL 兼容

DMDB 托管扩展

提供 NetCorePal.Aspire.Hosting.DMDB 包,用于支持达梦数据库资源的托管与编排,主要支持:

  • 基于容器的 DMDB 部署
  • 用户密码与 DBA 密码配置
  • 主机端口映射
  • 数据持久化支持
  • 数据库创建能力
  • 服务器级与数据库级健康检查
  • WaitFor 机制协同启动依赖服务

MongoDB 扩展能力

项目同时提供 NetCorePal.Aspire.Hosting.MongoDB 扩展,用于支持 MongoDB 副本集能力接入 Aspire 应用,满足分布式应用场景下的基础设施扩展需求。


代码示例

NetCorePal.Aspire 采用与 .NET Aspire 一致的资源声明方式,可在应用启动阶段统一定义数据库资源、依赖关系和连接引用。以下示例展示了常见使用方式。

OpenGauss 基本用法

以下示例展示了如何在 Aspire 应用中添加 OpenGauss 服务和数据库资源,并将数据库连接能力提供给业务服务使用。

var builder = DistributedApplication.CreateBuilder(args);var openGauss = builder.AddOpenGauss("opengauss");
var appDb = openGauss.AddDatabase("appdb");builder.AddProject<Projects.Api>("api")
.WithReference(appDb)
.WaitFor(appDb);builder.Build().Run();

该方式适用于本地开发、联调测试和示例项目场景。业务服务通过 WithReference(appDb) 即可获得对应的连接信息,数据库资源就绪后服务再启动。


OpenGauss 兼容模式配置

OpenGauss 支持在创建数据库时指定兼容模式,以适配不同数据库方言场景。

var builder = DistributedApplication.CreateBuilder(args);var openGauss = builder.AddOpenGauss("opengauss");var pgDb = openGauss.AddDatabase("pgdb", dbcompatibility: "PG");
var oracleDb = openGauss.AddDatabase("oracledb", dbcompatibility: "A");
var mysqlDb = openGauss.AddDatabase("mysqldb", dbcompatibility: "B");builder.AddProject<Projects.Api>("api")
.WithReference(pgDb)
.WaitFor(pgDb);builder.Build().Run();

当前支持的兼容模式包括:

  • PG:PostgreSQL 兼容
  • A:Oracle 兼容
  • B:MySQL 兼容

该能力适合在数据库迁移、兼容性验证和多方言适配场景中使用。


OpenGauss 自定义凭据与数据持久化

以下示例展示了如何通过 Aspire 参数配置数据库密码,并启用数据持久化能力。

var builder = DistributedApplication.CreateBuilder(args);var password = builder.AddParameter("opengauss-password", secret: true);var openGauss = builder.AddOpenGauss("opengauss", password: password, port: 5432)
.WithDataVolume();var appDb = openGauss.AddDatabase("appdb");builder.AddProject<Projects.Api>("api")
.WithReference(appDb)
.WaitFor(appDb);builder.Build().Run();

在该场景下:

  • 数据库密码通过参数统一管理
  • 端口可按本地环境需要进行配置
  • WithDataVolume() 可用于保留数据库数据,便于本地开发阶段重复使用环境

如需将初始化脚本挂载到容器,也可以进一步进行扩展配置。

var builder = DistributedApplication.CreateBuilder(args);var openGauss = builder.AddOpenGauss("opengauss")
.WithDataVolume()
.WithInitBindMount("./init-scripts");var appDb = openGauss.AddDatabase("appdb");builder.Build().Run();

DMDB 基本用法

以下示例展示了如何在 Aspire 应用中添加达梦数据库资源,并将其作为服务依赖进行统一编排。

var builder = DistributedApplication.CreateBuilder(args);var dmdb = builder.AddDmdb("dmdb");
var database = dmdb.AddDatabase("appdb");builder.AddProject<Projects.Api>("api")
.WithReference(database)
.WaitFor(database);builder.Build().Run();

该方式可用于基于达梦数据库的本地开发和集成调试场景,数据库资源启动后,依赖服务将按顺序启动。


DMDB 自定义配置

以下示例展示了如何配置达梦数据库的用户信息、DBA 密码、主机端口和数据持久化。

var builder = DistributedApplication.CreateBuilder(args);var password = builder.AddParameter("dmdb-password", secret: true);
var dbaPassword = builder.AddParameter("dmdb-dba-password", secret: true);
var userName = builder.AddParameter("dmdb-user");var dmdb = builder.AddDmdb(
"dmdb",
userName: userName,
password: password,
dbaPassword: dbaPassword)
.WithHostPort(5236)
.WithDataVolume();var database = dmdb.AddDatabase("appdb");builder.AddProject<Projects.Api>("api")
.WithReference(database)
.WaitFor(database);builder.Build().Run();

该示例适用于需要保留本地测试数据、使用固定端口连接数据库或统一管理访问凭据的场景。


MongoDB 副本集示例

除关系型数据库外,NetCorePal.Aspire 也支持 MongoDB 副本集能力,以满足分布式应用中对高可用 MongoDB 开发环境的需求。

var builder = DistributedApplication.CreateBuilder(args);var username = builder.AddParameter("mongo-user", "admin");
var password = builder.AddParameter("mongo-password", "admin");var mongo = builder
.AddMongoDB("mongo", 27017, username, password)
.WithReplicaSet();var mongoDb = mongo.AddDatabase("appdb");var replicaSet = builder.AddMongoReplicaSet("mongo-rs", mongoDb.Resource);builder.AddProject<Projects.Api>("api")
.WithReference(mongoDb)
.WithReference(replicaSet)
.WaitFor(mongoDb)
.WaitFor(replicaSet);await builder.Build().RunAsync();

该方式适合需要在本地环境验证 MongoDB 副本集行为的开发和测试场景。


模板工程中的使用方式

NetCorePal.Aspire 已集成到 netcorepal-cloud-template。基于模板创建工程后,可直接在 AppHost 中声明基础设施资源,无需额外完成接入封装。

以下示例展示了模板工程中多个服务共享数据库资源的典型写法:

var builder = DistributedApplication.CreateBuilder(args);var openGauss = builder.AddOpenGauss("opengauss");
var appDb = openGauss.AddDatabase("appdb");builder.AddProject<Projects.IdentityService>("identity-service")
.WithReference(appDb)
.WaitFor(appDb);builder.AddProject<Projects.OrderService>("order-service")
.WithReference(appDb)
.WaitFor(appDb);builder.Build().Run();

通过这种方式,项目可以在统一的应用模型下完成数据库资源声明、依赖注入和服务编排,实现开箱即用的开发体验。


总结

NetCorePal.Aspirenetcorepal-cloud-framework 面向国产化基础设施和现代化开发体验的重要组成部分。

项目以 .NET Aspire 为基础,围绕国产数据库集成和工程交付需求,提供统一、规范、可复用的基础设施托管能力,并通过 netcorepal-cloud-template 实现模板级集成与开箱即用。

项目源码地址

https://github.com/netcorepal/netcorepal-aspire

更多内容,欢迎关注同名公众号: 老肖想当外语大佬
IMG_4589

http://www.jsqmd.com/news/564204/

相关文章:

  • 终极免费工具:DLSS Swapper一键优化游戏性能,提升帧率体验
  • FORK客户端与GitHub高效协作指南
  • DeepSeek-V3.2量化新标杆:w8a8精度突破86%!
  • Phi-4-mini-reasoning实战案例:编程面试算法题自动解析与答案生成系统
  • 清音听真应用场景盘点:从会议纪要到视频字幕的全能助手
  • Phi-4-mini-reasoning实战案例:与LangChain集成实现多工具协同数学求解
  • 3分钟快速上手AdGuard浏览器扩展:开源广告拦截工具全平台安装指南
  • 目前专业的LCD液晶段码屏公司推荐几家
  • 东华OJ-基础题-48-数列1(C++)
  • QT6.5串口编程第一步:用CMakeLists.txt引入SerialPort模块的避坑指南
  • 【开题答辩全过程】以 基于Python的招聘信息爬虫系统为例,包含答辩的问题和答案
  • 襄阳热门的PLC培训培训班
  • 用Brduino玩转脑机接口:手把手教你搭建MI、SSVEP、P300三大范式的实验环境
  • SeqGPT-560M智能邮件分类系统实战
  • 看懂十五五,招投标直接照抄就稳了
  • 3DS宝可梦游戏编辑器pk3DS:如何为经典游戏注入全新生命力
  • 告别混乱文件管理:用NERDTree打造VIM项目导航系统
  • 16-bit像素RPG科研体验:Pixel Epic让研报写作变成冒险任务
  • 北京亦庄启动园林水务智能机器人展暨项目路演月
  • bert-base-chinese中文NLP核心基座:开箱即用的智能文本处理工具
  • 一键部署Nanbeige 4.1-3B:打造手机短信风格AI对话界面
  • Blender 3MF插件:连接数字设计与3D制造的无缝桥梁
  • Java AI推理服务上线即崩?JVM GC日志暴露真相:Metaspace暴涨470%、Direct Memory泄漏12.6GB——5行代码精准修复方案(含Arthas实时监控脚本)
  • 余姚加工中心编程培训哪家实力强
  • Ostrakon-VL-8B效果验证:1000张真实门店图测试集全面评测
  • 一个开源项目突然爆火,MiroFish 真的能“预测未来”吗?
  • 崖山数据库-谓词没提前过滤优化器BUG
  • Z-Image Atelier 生成3D纹理与材质贴图效果展示
  • 【Mojo混合编程黄金三角模型】:类型桥接层×异步调度器×零拷贝内存池——工业级落地必备架构图解
  • Zotero Citation插件开发指南:从环境适配到定制优化的全流程实践