原文 | Damian Edwards

翻译 | 郑子铭

组件更新

组件包现在有单独的图标

大多数 Aspire 组件的 NuGet 包现在都具有代表性图标,以便在 NuGet 包管理器对话框中更轻松地识别它们,并给体验带来一些视觉差异:

MySqlConnector 的组件和托管支持

感谢社区成员 Bradley Grainger(流行的 MySQL MySqlConnector 客户端库的作者),现在有一个适用于 MySQL 的 Aspire 组件,支持配置、DI、跟踪、日志记录和运行状况检查,支持从以下位置对 MySQL 数据库进行可观察且弹性的访问:您的服务应用程序。

var builder = WebApplication.CreateBuilder(args);

// Add service defaults & Aspire components.
builder.AddServiceDefaults();
builder.AddMySqlDataSource("catalog"); ar app = builder.Build(); app.MapGet("/catalog", async (MySqlConnection db) =>
{
const string sql = """
SELECT Id, Name, Description, Price
FROM catalog
"""; return await db.QueryAsync<CatalogItem>(sql);
}); app.MapDefaultEndpoints(); app.Run();

此外,还添加了对 MySQL 资源的 Aspire.Hosting 支持,使得启动 MySQL 容器进行本地开发或连接到现有 MySQL 实例变得比以往更加容易。

var builder = DistributedApplication.CreateBuilder(args);

var catalogDb = builder.AddMySqlContainer("mysql")
// Mount the SQL scripts directory into the container so that the init scripts run.
.WithVolumeMount("../DatabaseContainers.ApiService/data/mysql", "/docker-entrypoint-initdb.d", VolumeMountType.Bind)
.AddDatabase("catalog");

MongoDB 的组件和托管支持

另一项社区贡献是由 Ailton Pinto 做出的,通过新的 Aspire.MongoDB.Driver 包为 Aspire 带来了对 MongoDB 的支持。该组件使用 MongoDB.Driver 客户端库,与 MySQL 组件一样,支持配置、DI、跟踪、日志记录和运行状况检查。

var builder = WebApplication.CreateBuilder(args);

// Add service defaults & Aspire components.
builder.AddServiceDefaults();
builder.AddMongoDBClient("mydatabase"); ar app = builder.Build(); app.MapGet("/", async (IMongoClient client) =>
{
// Use the client here
...
}); app.MapDefaultEndpoints(); app.Run();

在托管方面,您可以使用 AddMongoDBContainer 配置 MongoDB 容器,或使用 AddMongoDBConnection 指向现有实例。

var builder = DistributedApplication.CreateBuilder(args);

var mongodb = builder.AddMongoDBContainer("mongodb")
.AddDatabase("mydatabase"); var myService = builder.AddProject<Projects.MyService>()
.WithReference(mongodb);

Azure SDK 组件现在默认启用分布式跟踪

Azure SDK 的 Aspire 组件现在默认启用分布式跟踪(Azure 服务总线组件除外)。使用这些组件连接到当前支持的 Azure 服务将自动为应用程序的分布式跟踪输出做出贡献,有助于使其更易于观察。

部署更新

.NET Aspire 的一大功能是部署工具能够添加对您在 Aspire AppHost 项目中描述和组合的分布式应用程序的支持。这个领域还处于早期阶段,但我们已经看到了一些令人兴奋的工作。

Aspir8:社区开发的工具,用于将 .NET Aspire 应用程序部署到 Kubernetes

我们看到了很多对支持将 Aspire 应用程序部署到 Kubernetes 感兴趣的人的反馈。在社区驱动开发的另一个精彩展示中,Aspirate (Aspir8) 是由 GitHub 用户 prom3theu5 创建的。此 .NET 全局工具利用 Aspire 清单自动将 Aspire 应用程序部署到 Kubernetes 集群。请务必查看项目自述文件以了解更多详细信息,并按照 Aspire 存储库中的 GitHub 问题进行操作。

Azure 开发人员 CLI (azd) Aspire 改进

Azure 开发人员 CLI (azd) 是一种开源工具,可以让您的应用程序更轻松地在 Azure 云中运行。我们正在努力确保 azd 能够以最快、最简单的方式在几分钟内将 Aspire 应用程序配置并部署到 Azure。在此版本中,我们仍然主要针对 Azure 容器应用程序。

在此版本中,我们添加了一些新功能以更好地支持 Aspire 部署:

  • 部署使用 AsDockerFileInManifest 配置的 Dockerfile 项目。
  • 部署Dapr相关组件。这将在下面的下一节中更详细地解释。
  • 初步支持管道配置,以便为 Aspire 应用程序配置 CI/CD 部署变量。

还有其他一些值得注意的改进:

  • 默认情况下为预配的 Azure 容器注册表启用管理员用户身份验证。对于未完全迁移到 RBAC 的订阅中的经典管理员用户,这可以避免与授权相关的失败。
  • 仅当使用 dotnetpublish 构建和发布 .NET 项目时,不再需要安装 docker 工具。

通过安装或更新 Azure 开发人员 CLI 获取最新的 azd 版本 (1.5.1)。

Dapr 支持更新

对于那些想要将 Aspire 与 Dapr 一起使用的用户,预览版 2 中进行了许多改进。

不再需要指定 Dapr 应用程序 ID

Dapr 应用程序 ID 现在将默认为其各自项目指定的资源名称。此外,Dapr sidecar 的资源名称现在源自其各自项目的名称,而在预览版 1 中,资源名称是应用程序 ID 本身。这使得项目资源名称和应用程序 ID 具有相同的值。如果需要,您仍然可以将应用程序 ID 显式设置为显式值。

var builder = DistributedApplication.CreateBuilder(args);

// The Dapr application ID will default to "servicea".
builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar(); // The Dapr application ID is explicitly set to "serviceb-dapr".
builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar("serviceb-dapr");

Dapr 组件是一流的 Aspire 资源

.NET Aspire Preview 2 引入了 Dapr 组件作为一流的资源,这使得 Aspire 在运行 Dapr 应用程序时能够做出更明智的决策,并启用其他工具(例如用于部署的工具)。

在预览版 1 中,您可以使用 DaprSidecarOptions 为 sidecar 一起配置 Dapr 资源,其中 sidecar 将加载资源目录中找到的所有组件。

var builder = DistributedApplication.CreateBuilder(args);

// Configure service A's sidecar to load components from the resources path.
builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar(
new DaprSidecarOptions
{
AppId = "service-a",
ResourcesPaths = ImmutableHashSet<string>.Create("<path to resources directory>")
}); // Configure service B's sidecar to load components from the resources path.
builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar(
new DaprSidecarOptions
{
AppId = "service-b",
ResourcesPaths = ImmutableHashSet<string>.Create("<path to resources directory>")
});

在预览版 2 中,您可以创建单独的 Dapr 组件资源,并从实际使用它们的项目中引用它们(通过 WithReference())。 Aspire 将确保 sidecar 配置为加载其引用的组件。

var builder = DistributedApplication.CreateBuilder(args);

var stateStore = builder.AddDaprComponent(
"statestore",
"state.redis",
new DaprComponentOptions { LocalPath = "<path to state store YAML file>" }); var pubSub = builder.AddDaprComponent(
"pubsub",
"pubsub.redis",
new DaprComponentOptions { LocalPath = "<path to pub-sub YAML file>" }); builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar()
.WithReference(stateStore)
.WithReference(pubSub); builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar()
.WithReference(pubSub);

对于基本组件,例如状态存储和发布-订阅,您无需创建或指定本地组件 YAML 路径。相反,AddDaprStateStore() 和 AddDaprPubSub() 方法创建“通用”类型的 Dapr 组件资源,这表明 Aspire 应在应用程序运行时代表 Dapr sidecar 配置适当的组件。

var builder = DistributedApplication.CreateBuilder(args);

var stateStore = builder.AddDaprStateStore("statestore");
var pubSub = builder.AddDaprPubSub("pubsub"); builder.AddProject<Projects.DaprServiceA>("servicea")
.WithDaprSidecar()
.WithReference(stateStore)
.WithReference(pubSub); builder.AddProject<Projects.DaprServiceB>("serviceb")
.WithDaprSidecar()
.WithReference(pubSub);

在前面的示例中,如果 Dapr 在计算机上完全初始化,Aspire 将配置 sidecar 以使用由 Dapr 默认 Redis 容器支持的 Redis 组件。相反,如果 Dapr 被初始化为“slim”,Aspire 将配置 sidecar 以使用内存组件。声明单个 Dapr 组件资源的真正好处是,它使本地开发和部署工具能够就如何配置 Dapr 做出更好的决策。

支持使用 Azure 开发人员 CLI (azd) 将 Dapr 应用程序部署到 Azure 容器应用程序 (ACA)

预览版 2 将特定于 Dapr 的资源写入应用程序清单,这使得 Azure 开发人员 CLI (azd) 等工具能够在部署期间做出特定于 Dapr 的决策。 AZD 现在可用于部署和配置使用 Dapr 到 Azure 容器应用程序 (ACA) 的 .NET Aspire 应用程序。每个具有 Dapr sidecar 的项目都将在其相应的 ACA 应用程序中启用 Dapr,并且其 Dapr 设置将反映以下 DaprSidecarOptions 属性(如果设置):

  • 应用程序编号
  • 应用程序端口
  • 应用程序协议
  • 启用Api日志记录
  • Http最大请求大小
  • HttpReadBufferSize
  • 日志级别

如果您的应用程序声明通用状态存储和发布-订阅 Dapr 组件引用,azd 还将使用 Redis 插件配置 ACA 环境,并生成和部署 Dapr 组件配置,以便从您的应用程序中使用它。这意味着无需任何显式配置或配置后备存储即可部署基本 Dapr 应用程序。

[!重要] 如果您的应用程序声明的 Dapr 组件类型超出了通用状态存储和发布-订阅类型,则仍必须在 ACA 环境中手动配置这些类型。

社区贡献

尽管自我们宣布 .NET Aspire 并发布存储库以来只过去了很短的时间,但我们已经看到了 .NET 社区令人难以置信的参与和贡献。从上述预览版 2 中的新组件和 Aspir8 部署工具,到仍在开发中的众多社区贡献的组件(请留意预览版 3...)、详细问题以及人们在讨论中互相帮助,人们正在参与塑造Aspire 将成为什么。我们谨向所有尝试过 Aspire 并花额外时间做出贡献的人致以诚挚的“感谢”。

下一步是什么?

我们计划每月发布新的 Aspire 预览版,并努力在 2024 年第二季度发布稳定的 8.0 版本。请返回 .NET 博客了解未来版本的详细信息,或参与 GitHub 上的 Aspire 项目。官方示例可在 dotnet/aspire-samples 存储库中找到。

概括

再次感谢您对 .NET Aspire 的回复。我们很高兴努力使使用 .NET 构建分布式应用程序成为一种很棒的体验,并且希望您尝试预览版 2 并让我们知道您的想法。

原文链接

Announcing .NET Aspire Preview 2

本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

欢迎转载、使用、重新发布,但务必保留文章署名 郑子铭 (包含链接: http://www.cnblogs.com/MingsonZheng/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

如有任何疑问,请与我联系 (MingsonZheng@outlook.com)

【译】发布 .NET Aspire 预览版 2(二)的更多相关文章

  1. 实时人工智能:微软发布Project Brainwave预览版 现场可编程门阵列(Field Programmable Gate Array,简称FPGA) 硬件设计可以迅速演进

    https://mp.weixin.qq.com/s/bAPiPURZd-YsbV5PbzwpQQ 编者按:随着各大公司对于数据计算的要求越来越高,实时AI成为了研究者们关注的重点.在美国西雅图举行的 ...

  2. SuperSocket 2.0 发布第一个预览版, 另寻找Yang Fan哥哥

    昨天,SuperSocket的作者发布了2.0版本的第一个预览版.SuperSocket 2.0 是一个经过全新设计的,第一个完全基于.NET Core的版本.作者正在积极尝试提供更简单易用的API的 ...

  3. .NET 6 预览版 7 发布——最后一个预览版

    原文:bit.ly/2VJxjxQ 作者:Richard 翻译:精致码农-王亮 说明:文中有大量的超链接,这些链接在公众号文章中被自动剔除,一部分包含超链接列表的小段落被我删减了,如果你对此感兴趣,请 ...

  4. 【译】.NET 7 预览版 1 中的 ASP.NET Core 更新

    原文 | Daniel Roth 翻译 | 郑子铭 .NET 7 预览版 1 现已推出!这是 .NET 下一个主要版本的第一个预览版,其中将包括使用 ASP.NET Core 进行 Web 开发的下一 ...

  5. CPF C#跨平台UI框架发布安卓端预览版

    CPF的安卓端适配采用Xamarin的安卓绑定库,而不是Xamarin.Form.CPF和flutter差不多,完全由skia绘制,基本不依赖原生控件. 当前还只是预览版,不建议用在正式项目中. 可能 ...

  6. sql server 2014预览版发布

    MSDN发布sql server2014预览版,如下图: SQL Server 2014新特性: 微软SQL Server部门主管Eron Kelly介绍,通过将交易处理放到内存中进行,新的SQL S ...

  7. .NET 7 发布的最后一个预览版Preview 7, 下个月发布RC

    微软在2022年8月9日 发布了.NET 7 Preview 7[1],这是它在11月10日 RTM 之前进入发布候选阶段之前的最后预览版. 预览版 7 已在 Visual Studio 17.4 预 ...

  8. .NET 6 预览版 7:新功能已完成 ,将专注于改进

    .NET 团队的项目经理 Richard Lander在宣布 .NET 6 Preview 7 时说:"这是 .NET 预览的又一季的结束.", 中文翻译:.NET 6 预览版 7 ...

  9. 微软发布 Windows Server 2016 预览版第三版,开发者要重点关注Nano Server

    微软已经发布 Windows Server 2016 和 System Center 2016 第三个技术预览版,已经提供下载.Windows Server 2016 技术预览版第三版也是首个包括了容 ...

  10. 【译】Visual Studio 15 预览版更新说明

    序:恰逢Build2016大会召开,微软发布了VS2015的update2更新包和VS2016预览版.本人正在提升英文水平中,于是在这里对VS2016预览版的官方文档进行了部分翻译.因为VS有些功能使 ...

随机推荐

  1. [吉他谱]duvet

  2. Liunx常用操作(九)-进阶命令

    一.查看用户who 1.查看所有用户:who

  3. 使用 nacos 搭建注册中心及配置中心

    本文为博主原创,转载请注明出处: 在分布式微服务框架中,现在都流行使用 nacos 作为分布式框架的注册中心与配置中心.当我们搭建一套spring boot 框架的时候,默认会将配置文件 放在 res ...

  4. C++数据结构(树)

    树是一种递归定义的数据结构,如果树中节点的各子树从左到右是有次序的,不能互换,则称该树为有序树,否则叫无序树. 关于树的节点: 节点拥有的子树的个数叫做节点的度 如果度为0,那么该节点叫做叶节点或终端 ...

  5. 【BAT】递归替换文件后缀

    @echo off set /p src_suffix=please input origin suffix: set /p des_suffix=please input target suffix ...

  6. MoeCTF 2023(西电CTF新生赛)WP

    个人排名 签到 hello CTFer 1.题目描述: [非西电] 同学注意: 欢迎你来到MoeCTF 2023,祝你玩的开心! 请收下我们送给你的第一份礼物: https://cyberchef.o ...

  7. electron打包,使用electron-packager

    构建项目可以使用electron-forge构建,但是这个东西打包比较坑,mac运行报错,win下会有缓存机制,也就是热更新无效 所以选择使用electron-packager打包 sudo npm ...

  8. 百度网盘(百度云)SVIP超级会员共享账号每日更新(2023.12.10)

    一.百度网盘SVIP超级会员共享账号 可能很多人不懂这个共享账号是什么意思,小编在这里给大家做一下解答. 我们多知道百度网盘很大的用处就是类似U盘,不同的人把文件上传到百度网盘,别人可以直接下载,避免 ...

  9. [转帖]前后台切换命令(ctrl+z jobs bg fg &)

    当我在终端里面运行某个命令的时候,结果不是很快就能出来的那种,或者是一大堆字在屏幕上狂翻.这个时候,有时ctrl+c也不起作用,那我会用ctrl+z退出来,这个很有效,但是说实话我不知道为什么这个可以 ...

  10. [转帖]rsar - Extract data from plain-text sar files

    sar -A -t -f /tmp/sa11 >/tmp/sar11 https://github.com/ryran/rsar When dealing with sysstat sar da ...