构建你的.NET Aspire解决方案
.NET Aspire 是一组功能强大的工具、模板和包,用于构建可观察的生产就绪应用程序。.NET Aspire 通过处理特定云原生问题的 NuGet 包集合提供。云原生应用程序通常由小型互连部分或微服务组成,而不是单个整体式代码库。云原生应用程序通常会消耗大量的服务,例如数据库、消息收发和缓存。
.NET Aspire 旨在改善构建 .NET 云原生应用程序的体验。它提供了一组一致的、有主见的工具和模式,可帮助您构建和运行分布式应用程序。NET Aspire 旨在帮助您:
- 编排:.NET Aspire 为本地开发环境提供了运行和连接多项目应用程序及其依赖项的功能。
- 集成:.NET Aspire 集成是适用于常用服务(如 Redis 或 Postgres)的 NuGet 包,具有标准化接口,可确保它们与您的应用程序一致且无缝地连接。
- 工具:.NET Aspire 附带适用于 Visual Studio、Visual Studio Code 和 .NET CLI 的项目模板和工具体验,可帮助你创建 .NET Aspire 项目并与之交互。
前提条件
- .NET 8.0 或 .NET 9.0
- 符合 OCI 标准的容器运行时,例如:
- 集成开发人员环境 (IDE) 或代码编辑器,例如:
- Visual Studio 2022 版本 17.9 或更高版本(可选)
- Visual Studio Code(可选)
- C# 开发工具包:扩展(可选)
- 带有 .NET Aspire 插件的 JetBrains Rider((可选)
安装.NET Aspire 模板
如果尚未安装 .NET Aspire 模板,请运行以下命令:
dotnet new install Aspire.ProjectTemplates
完成安装后,执行一下命令可看到aspire项目模板:
dotnet new list aspire
模板名 短名称 语言 标记
---------------------------- ---------------------- ---- -------------------------------------------------------
.NET Aspire 入门应用 aspire-starter [C#] Common/.NET Aspire/Blazor/Web/Web API/API/Service/Cloud
.NET Aspire 应用主机 aspire-apphost [C#] Common/.NET Aspire/Cloud
.NET Aspire 服务默认值 aspire-servicedefaults [C#] Common/.NET Aspire/Cloud/Web/Web API/API/Service
.NET Aspire 测试项目(MSTest) aspire-mstest [C#] Common/.NET Aspire/Cloud/Web/Web API/API/Service/Test
.NET Aspire 测试项目(NUnit) aspire-nunit [C#] Common/.NET Aspire/Cloud/Web/Web API/API/Service/Test
.NET Aspire 测试项目(xUnit) aspire-xunit [C#] Common/.NET Aspire/Cloud/Web/Web API/API/Service/Test
.NET Aspire 空应用 aspire [C#] Common/.NET Aspire/Cloud/Web/Web API/API/Service
从模板创建 .NET Aspire 空应用,请运行以下命令:
dotnet new aspire -o Stargazer
创建的应用是一个最小的 .NET Aspire 项目,包括以下内容:
- Stargazer.AppHost:一个业务流程协调程序项目,旨在连接和配置应用程序的不同项目和服务。
- Stargazer.ServiceDefaults:一个 .NET Aspire 共享项目,用于管理在解决方案中与弹性、服务发现和遥测相关的项目中重复使用的配置。
集成服务
加入适用于常用服务(如 Redis 或 Postgres)的 NuGet 包Aspire.Hosting.PostgreSQL、Aspire.Hosting.Redis、Aspire.Hosting.MongoDB,然后在代码中创建docker容器:
using System.Runtime.InteropServices;
var builder = DistributedApplication.CreateBuilder(args);
string redisImage = "hub.atomgit.com/amd64/redis";
string postgresqlImage = "hub.atomgit.com/amd64/postgres";
string mongodbImage = "hub.atomgit.com/amd64/mongo";
Architecture architecture = RuntimeInformation.ProcessArchitecture;
if(architecture == Architecture.Arm
|| architecture == Architecture.Arm64)
{
redisImage = "hub.atomgit.com/arm64v8/redis";
postgresqlImage = "hub.atomgit.com/arm64v8/postgres";
mongodbImage = "hub.atomgit.com/arm64v8/mongo";
}
var redis = builder.AddRedis("redis", 6379)
.WithContainerName("redis")
.WithImage(redisImage, "7-alpine")
.WithDataVolume("redis")
.WithRedisCommander(null, "redis-commander");
var username = builder.AddParameter("postgres-uid", "postgres");
var password = builder.AddParameter("postgres-pwd", "123456");
var postgres = builder.AddPostgres("postgres", username, password, 5432)
.WithContainerName("postgres")
.WithImage(postgresqlImage, "15-alpine")
.WithDataVolume("postgres");
var postgresql = postgres.AddDatabase("postgresql");
var mongoUser = builder.AddParameter("mongo-user", "root");
var mongoPwd = builder.AddParameter("mongo-pwd", "123456");
var mongo = builder.AddMongoDB("mongo", 27017, mongoUser, mongoPwd)
.WithContainerName("mongo")
.WithImage(mongodbImage, "7-jammy")
.WithDataVolume("mongo");
var mongodb = mongo.AddDatabase("mongodb");
IResourceBuilder<ProjectResource> apiService = builder.AddProject<Projects.Stargazer_Abp_Template_Host>("api-service");
builder.AddProject<Projects.Stargazer_Abp_Template_Web>("frontend")
.WithExternalHttpEndpoints()
.WithReference(redis)
.WithReference(postgresql)
.WithReference(mongodb)
.WaitFor(redis)
.WaitFor(postgres)
.WaitFor(mongodb)
.WithReference(apiService);
builder.Build().Run();
启动应用程序
运行以下命令启动应用程序:
dotnet run --project Stargazer.AppHost

访问https://localhost:17125/login?t=337c3ec0bfdadd302fcdb467d76453ad,就可以使用.NET Aspire 仪表板。

访问仪表板上的链接http://localhost:5136/,就可以访问应用程序。

首发网站:https://stargazer.tech/2024/12/05/build-your-dotnet-aspire-solution/
相关链接
- .NET Aspire 官方文档 https://learn.microsoft.com/zh-cn/dotnet/aspire/
- 本文代码 https://github.com/huangmingji/Stargazer.Abp.Template/tree/main/modules/Aspire
构建你的.NET Aspire解决方案的更多相关文章
- Rancher 快速构建k8s容器管理平台解决方案(图片见原文链接)
转载自Rancher 快速构建k8s容器管理平台解决方案_IT干货的博客-CSDN博客_k8s容器管理平台 一.Rancher 概述 Rancher 是企业级多集群Kubernetes管理平台,一个为 ...
- gradle 2.1构建android出现错误的解决方案
转自:http://www.tuicool.com/articles/YJNJbuA 使用不同版本Gradle构建Andorid 出现Gradle version xxxx is required 坑 ...
- Java构建网站多级菜单功能解决方案
在网站开发的时候我们会对网站的栏目进行分类,一个栏目可以有多个子分类,一个子分类又可以有分裂,例如:新闻栏目下有每日早报和每日晚报两个栏目,其中每日早报下面又分为上海早报,北京早报,杭州早报,下面是京 ...
- 教程:使用 MongoDB、WCF、OData 和 PowerBI 构建 Azure 上的商业智能解决方案
发布于 2014-05-20 作者 陈 忠岳 目录 概述 前提条件 创建 Windows Server 2012 Datacenter 虚拟机 通过 WCF(Windows Communicat ...
- Hadoop专业解决方案-第12章 为Hadoop应用构建企业级的安全解决方案
一.前言: 非常感谢Hadoop专业解决方案群:313702010,兄弟们的大力支持,在此说一声辛苦了,春节期间,项目进度有所延迟,不过元宵节以后大家已经步入正轨, 目前第12章 为Hadoop应用构 ...
- 《Hadoop高级编程》之为Hadoop实现构建企业级安全解决方案
本章内容提要 ● 理解企业级应用的安全顾虑 ● 理解Hadoop尚未为企业级应用提供的安全机制 ● 考察用于构建企业级安全解决方案的方法 第10章讨论了Hadoop安全性以及Hado ...
- Jenkins构建时报错:No Space left on device
Jenkins在自动化构建服务的同时也在消耗服务器的磁盘空间,如果构建的项目个数很多,而Jenkins 服务器磁盘空间又不是非常大的话,每隔一段时间磁盘空间就会爆满导致,就会出现磁盘空间不足无法构建的 ...
- Atitit.attilax重要案例 项目与解决方案与成果 v6 qa15
Atitit.attilax重要案例 项目与解决方案与成果 v6 qa15 1. attilax重要案例的分类(atiuse,auBackTech,bizImp)3 1.1. 两个book3 1.2. ...
- visual C++ 项目和解决方案的区别
项目: 项目是构成某个程序的全部组件的容器,该程序可能是控制台程序.基于窗口的程序或某种别的程序.程序通常由一个或多个包含用户代码的源文件,可能还要加上包含其它辅助数据的文件组成.某个 ...
- 推荐图书-《SQL Server 2008商业智能完美解决方案》
内容简介 <SQL Server 2008商业智能完美解决方案>介绍如何使用Microsoft SQL Server 2008开发商业智能(BI)解决方案.<SQL Server 2 ...
随机推荐
- RabbitMQ——死信队列介绍和应用
死信和死信队列的概念 什么是死信?简单来说就是无法被消费和处理的消息.一般生产者将消息投递到broker或者queue,消费者直接从中取出消息进行消费.但有时因为某些原因导致消息不能被消费,导致消息积 ...
- Vscode 远程切换Python虚拟环境
在VSCode中远程切换Python虚拟环境是一个涉及多个步骤的过程,包括安装必要的扩展.连接到远程服务器.创建或激活虚拟环境,并在VSCode中选择相应的Python解释器.以下是一个详细的步骤指南 ...
- Android Qcom USB Driver学习(四)
VID/PID识别USB设备 CDC-ACM驱动介绍 CDC-ACM(Communication Device Class--Abstract Control Model)驱动实现以USB设备驱动和t ...
- CPU缓存伪共享
CPU缓存什么东西?当然这个问题很多人有可能觉得比较傻,CPU缓存什么,肯定是缓存数据(代码)啊,要不然还能缓存啥,这个确实没问题,但是CPU到底缓存什么样的数据呢?因为对CPU来说,无论是指令,还是 ...
- 十三载求索续风华,数智化扬帆启新航 | 万字长文回顾DTC 2024
4月13日下午,为期两天的第十三届数据技术嘉年华(DTC 2024)在北京新云南皇冠假日酒店圆满落下帷幕.本次大会由中国数据库联盟与墨天轮社区联合主办,以"智能·云原生·一体化--DB与AI ...
- Android复习(六)核心组件—>Activity 任何和返回栈、进程和应用生命周期、Parcelable和Bundle
了解任务和返回堆栈 任务是用户在执行某项工作时与之互动的一系列 Activity 的集合.这些 Activity 按照每个 Activity 打开的顺序排列在一个返回堆栈中.例如,电子邮件应用可能有一 ...
- python中的时间处理
python程序编写中的时间处理涉及三种: 1.时间的显示: 2.时间的转换: 3.时间的运算. 时间处理模块:time模块 时间的三种表示方式: ①时间戳,从1970年1月1日开始,每过1s增加1, ...
- ASP.NET实现网站发布及跨域访问
1.软件下载及安装 visual studio 2012 or 2013 启用电脑IIS配置 2.网页编写及排版 在visual studio中创建web项目添加aspx页面(个人网页:和html差不 ...
- .NET使用Graphql的演示
Graphql是什么?先来一段AI给的回答: GraphQL是一种为API设计的查询语言,与REST相比,它提供了更高效.强大和灵活的方法来与数据交互.GraphQL由Facebook于2012年开发 ...
- KubeSphere 接入外部 Elasticsearch 最佳实践
作者:张坚,科大讯飞开发工程师,云原生爱好者. 大家好,我是张坚.今天来聊聊如何在 KubeSphere 中集成外置的 ES 组件. KubeSphere 在安装完成时候可以启用日志组件,这样会安装 ...