vs2022 最新版本(预览版本更新些)可以直接创建基于aspire技术的应用。
特色:
1.直接初始化(编排)一个数据库就可以用(支持aspire技术的数据库),例如postgresql .你不用管数据库连接和数据库从哪里来(前提是安装了docker 或docker desktop).基本工作它就帮你做了。
初始组件列表包括了多个关键服务:包括多个数据库连接、Redis、实体框架、密钥管理等。
2.aspire 有各种仪表盘可以反馈你应用的容器是否启动,是否正常。可以有访问数据等多数所需指标的反馈,并集中在可视化图形界面里。
3.支持缓存技术。radis,初始化一下直接用即可。
4.有个dotnet/eshop 经典案例。
5.支持云原生及微服务。无需配置(就是为简化微服务繁琐而生)。
项目创建
1.开发环境:vs2022 17.9 (版本越高越好) 安装 docker desktop (建议在windows下玩,mac尝试失败,VS无支持MAC最新版。
.net8 (安装了vs2022 17.9就有了)
2.创建新的 Aspire 应用程序:
在 Visual Studio(需要版本 17.9 预览版或更高版本)中,选择“文件”>“新建>项目”,然后选择“.NET Aspire 初学者应用程序”。 为项目命名,基架将在 Visual Studio 中生成。(需要在开发环境中安装 .NET 8 SDK 和 Docker Desktop)。
或者,从命令行界面转到要创建项目代码的目录,并使用 .NET CLI:
dotnet new aspire-starter --use-redis-cache --output AspireSample
组件 Component
我们将从组件开始深入研究。.NET Aspire 组件旨在解决我们从客户那里听到的云原生开发开始的痛苦,您必须正确掌握许多技术/配置,并且不清楚从哪条路径开始。我们自信于通过对组件需要提供的内容,要求所有组件至少提供复原默认值、运行状况检查、设置遥测以及与 DI 集成来帮助实现这一目标。为了强调这一点,让我们看看准备用于生产的应用程序可能会执行哪些操作来在其应用程序中配置 Redis:
将 Redis 包与 Redis 客户端库一起添加。
发现并添加运行状况检查库,以便您的应用能够响应 Redis 不可用。这经常被遗漏,但在实践中很有用。
将 Redis 添加到 DI 并配置连接字符串。这很棘手,因为您需要知道 Redis 客户端库类型应该具有的生存期。这是需要进行研究的。
配置 Redis 客户端库以将日志输出发送到遥测系统。
日志和指标是不同的,需要不同的管道。
确定所需的弹性策略和逻辑,并使用可以实施弹性策略的库(如 Poly)配置 Redis 或包装调用。这再次需要对 Redis 的功能进行研究,并了解您应该拥有哪些弹性策略,这通常不是您一开始就知道的,并导致人们在没有它的情况下交付,直到生产中出现某些问题,而这些内容本可以通过具有指数退避的重试策略来避免。
如果我们将其与使用 .NET Aspire 进行对比:
添加 .NET Aspire Redis 包。
在 Builder 上调用 AddRedis() 方法。
(可选)覆盖 appSettings.json 中的默认配置(该配置现已架构化,以便您可以完成以发现可以设置的内容)。
.NET Aspire 组件经过精心设计,可为您提供最佳的生产就绪配置,而无需隐藏基础 SDK。在上述两个示例中,使用 Redis 的代码将始终使用相同的 Redis 客户端库和类型。
组件必须执行以下操作才能被视为可以使用:
提供详细的架构化配置。
设置运行状况检查以跟踪和响应远程服务运行状况。
提供默认的、可配置的复原模式(重试、超时等),以最大限度地提高可用性。
提供集成的日志记录、指标和跟踪,使组件可观察。
Aspire本质是让开发人员通过C#代码来描述分布式程序,然后导出成一个语言无关的描述文件manifest.json。可以通过适配,将mainfest.json提交给不同的云服务商,将应用/服务部署上去。
Aspire就像一个COM,像一个接口。提供一种 运行时/Runtime 的实现标准,而云服务商来实现这种标准,如azure云需要实现一个 deployTo(...) 该方法,该方法接受aspire生成的manifest文件,解析文件并在azure云上创建对应的资源(redis,sqlserver, container service等)。k8s的yaml只能部署在k8s的【集群】(也可以叫做 运行时)上,而aspire希望设计一种标准,将资源部署到所有的运行时
.NET Aspire 附带两个项目模板,用于创建新的生产应用程序,或者只是了解 Aspire 的工作原理:
。NET Aspire 应用程序:这是一个仅包含 AppHost 和 ServiceDefaults 项目的准 Aspire 应用程序(见下文)。如果你不想生成 Blazor 应用,或者已有另一个要与 Aspire 一起使用的 .NET 应用,则此模板是理想的选择。
。NET Aspire 入门应用程序:这添加了一个简单的“Hello world!Blazor 应用到上面的 .NET Aspire 应用程序模板。这非常适合全新开发,假设你希望至少用 Blazor 编写一个 Web 应用。
创建新的 Aspire 应用程序再简单不过了:
在 Visual Studio(需要版本 17.9 预览版或更高版本)中,选择“文件”>“新建>项目”,然后选择“.NET Aspire 初学者应用程序”。 为项目命名,基架将在 Visual Studio 中生成。需要在开发环境中安装 .NET 8 SDK 和 Docker Desktop。
或者,从命令行界面转到要创建项目代码的目录,并使用 .NET CLI:
dotnet new aspire-starter --use-redis-cache --output AspireSample
可选的:Microsoft已经就如何配置构成最终技术堆栈的各种零碎部分做出了一些决定。可选的依偎着不是硬性规定,而是关于应该如何构建事物以便很好地协同工作的衍生观点。
云就绪:您使用 Aspire 构建的内容将准备好部署在公有云中。无需额外步骤即可使应用程序准备好在 Azure 甚至 AWS 中运行。
堆栈:这是一种完整的技术方法,而不是单点解决方案。堆栈意味着前端(客户端)和后端(服务器)代码,以及其他东西。
构建:Aspire 专注于创建新的分布式应用程序,尽管我们将在下面看到,您可以轻松地将 Aspire 添创建新的 Aspire 应用程序再简单不过了:
在 Visual Studio(需要版本 17.9 预览版或更高版本)中,选择“文件”>“新建>项目”,然后选择“.NET Aspire 初学者应用程序”。 为项目命名,基架将在 Visual Studio 中生成。需要在开发环境中安装 .NET 8 SDK 和 Docker Desktop。
或者,从命令行界面转到要创建项目代码的目录,并使用 .NET CLI:
dotnet new aspire-starter --use-redis-cache --output AspireSample加到现有应用程序中。
可观察的:需要监视和管理 Web 应用。可观测性是实时管理应用的所有方面的统称,包括遥测、运行状况、状态、负载均衡、用户行为等。
生产就绪:Aspire 允许您构建应用程序并将其部署到 Docker 容器中,轻松设置成功推送到生产环境,而无需复杂而脆弱的脚本。
分布式:如今的应用程序不再是单体式的,而是分布式的;它们是单个参与者的集合(如果你愿意的话),无论是 API 端点、无服务器函数、Web 应用程序还是数据库。从历史上看,让所有这些不同的部分无缝地协同工作是一项重大挑战——一次故障就可能破坏整个系统。Aspire 旨在防止这种情况发生。