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

使用 .NET 9 和 Azure 构建云原生应用程序:有什么新功能?

    随着 .NET 9 推出一系列以云为中心的增强功能,开发人员拥有比以往更多的工具来在 Azure 上创建可扩展、高性能的云原生应用程序。让我们深入了解 .NET 9 中的一些出色功能,这些功能使构建、部署和优化云应用程序变得更加容易,并附有示例以帮助您入门。

1、原生 AOT 编译,加快启动时间

    .NET 9 引入了 Native AOT(预先编译),可将代码编译为本机二进制文件,从而减少应用程序的大小和启动时间 - 这是云服务的一个重大改变。Native AOT 非常适合速度至关重要的 Azure Functions 或微服务。

    示例:假设您正在构建一个微服务来处理 Azure 上的高频 API 调用。通过启用 Native AOT,您可以显著减少启动时间,从而缩短最终用户的响应时间。在您的 .csproj 文件中,添加:

<PublishAot>true</PublishAot>

    当您发布时,.NET 9 会将其直接编译为本机二进制文件,以便更快地执行。

2. ASP.NET Core 中的 HybridCache

    对于处理大量数据的应用程序,.NET 9 的新 HybridCache 是一个受欢迎的补充。此功能允许在本地和分布式环境中缓存数据,从而减少延迟并提高性能。

    示例:假设您正在构建一个电子商务应用,用户经常访问产品详细信息。您可以使用 HybridCache 在本地缓存产品信息以便快速访问,并在需要时回退到分布式缓存。这可以减少往返数据库的时间并保持较低的加载时间。

var cacheOptions = new HybridCacheOptions { Expiration = TimeSpan.FromMinutes(10) };
services.AddHybridCache(cacheOptions);

3.改进的 Azure Functions 集成

    .NET 9 通过更好的工具来部署和管理无服务器应用程序,增强了对 Azure Functions 的支持。用 .NET 9 编写的函数可以利用新的 Native AOT 编译,使其成为高性能无服务器解决方案的理想选择。

    示例:假设您正在 Azure Functions 中设置用于图像处理的 API 端点。使用 .NET 9,您可以编写一个无服务器函数来快速处理请求,这要归功于 Native AOT 和 .NET 9 较低的内存占用。要开始使用,请使用 Visual Studio 中的 Azure Functions 模板,选择 .NET 9,然后启用 AOT。

4. 优化 System.Text.Json 处理

    .NET 9 对 System.Text.Json 进行了进一步的改进,现在支持更高级的 JSON 处理场景,包括更好的序列化和反序列化性能和灵活性。

    示例:对于与多个微服务交换数据的云原生应用,您可能需要优化 JSON 处理以有效处理高数据吞吐量。System.Text.Json 中的改进使这一过程更快,从而降低了您的云资源成本。
    
var options = new JsonSerializerOptions { DefaultBufferSize = 16 * 1024 };
string jsonData = JsonSerializer.Serialize(data, options);

5.增强 Azure SDK 集成

    .NET 9 增强了 Azure SDK 兼容性,使直接在代码中管理资源(例如 Azure Blob Storage、Cosmos DB 等)变得更加容易。新的 SDK 集成针对云原生应用的性能进行了高度优化。    示例:若要在 Azure Blob 存储中存储和检索文件,请使用已针对 .NET 9 进行优化的 Azure.Storage.Blobs 库
    
BlobServiceClient blobServiceClient = new BlobServiceClient(connectionString);
BlobContainerClient containerClient = blobServiceClient.GetBlobContainerClient("mycontainer");
await containerClient.UploadBlobAsync("myfile", stream);

6.总结

    .NET 9 的新功能为在 Azure 上构建强大的云原生应用程序开辟了难以置信的可能性。借助 Native AOT、HybridCache 和改进的 JSON 处理等优化,您可以设计快速、高效且经济实惠的解决方案。

    对于那些希望在云中扩展 .NET 应用的人来说,这些更新是探索优化应用程序的新方法的绝佳机会。在下一个 Azure 项目中尝试这些功能,并亲身体验 .NET 9 如何简化云开发。

如果您喜欢此文章,请收藏、点赞、评论,谢谢,祝您快乐每一天。 

相关文章:

使用 .NET 9 和 Azure 构建云原生应用程序:有什么新功能?

随着 .NET 9 推出一系列以云为中心的增强功能&#xff0c;开发人员拥有比以往更多的工具来在 Azure 上创建可扩展、高性能的云原生应用程序。让我们深入了解 .NET 9 中的一些出色功能&#xff0c;这些功能使构建、部署和优化云应用程序变得更加容易&#xff0c;并附有示例以帮助…...

前端页面鼠标移动监控(鼠标运动、鼠标监控)鼠标防抖处理、mousemove、debounce()、事件停止触发、超时触发

文章目录 代码使用lodashjs库debounce函数做防抖处理&#xff08;只有鼠标移动停止并超过一定时间&#xff0c;才会触发&#xff09;手写防抖函数写法1写法2&#xff08;注意addEventListener监听函数的第二个参数接收的是一个函数&#xff0c;需要构造一个匿名返回函数&#x…...

开源守护,智护童年——幼儿园未成年行为与安全智能监控系统

在孩子成长的每一步&#xff0c;安全始终是第一位的。幼儿园作为孩子们探索世界的起点&#xff0c;其安全管理的重要性不言而喻。然而&#xff0c;哭闹、打闹、意外跌倒&#xff0c;甚至外部隐患如陌生人逗留、内部管理疏漏等问题&#xff0c;常常让传统人工监控捉襟见肘。家长…...

WinForm真入门(5)——控件的基类Control

控件的基类–Control 用于 Windows 窗体应用程序的控件都派生自 Control类并继承了许多通用成员,这些成员都是平时使用控件的过程最常用到的。无论要学习哪个控件的使用&#xff0c;都离不开这些基本成员&#xff0c;尤其是一些公共属性。由于 Conlrol 类规范了控件的基本特征…...

《Linux内存管理:实验驱动的深度探索》【附录】【实验环境搭建 4】【Qemu 如何模拟numa架构】

我们在学习 linux 内核时&#xff0c;会涉及到很多 numa 的知识&#xff0c;那我们该如何在 qemu 中模拟这种情况&#xff0c;来配合我们的学习呢&#xff1f; 我们该如何模拟 如下的 numa 架构 Qemu 模拟 NUMA 架构 -M virt,gic-version3,virtualizationon,typevirt \ -cp…...

【YOLO系列(V5-V12)通用数据集-工程用车检测数据集】

YOLO格式的工程车检测数据集&#xff0c;适用于YOLOv5-v11所有版本&#xff0c;可以用于本科毕设、发paper、做课设等等&#xff0c;有需要的在这里获取&#xff1a; 【YOLO系列&#xff08;V5-V12&#xff09;通用数据集-工程用车检测数据集】 【工程车类型检测数据集】共2655…...

卫星智能化健康管理#卫星工程系列

伴随我国航天业飞速发展&#xff0c;积累了大量的卫星试验数据&#xff0c;如何从海量、多源、多模态的卫星试验数据中挖掘分析出内部规律和潜在价值&#xff0c;构建卫星装备系统的全生命周期试验数据知识体系显得尤为迫切。卫星故障传统的诊断方法局限在门限层面&#xff0c;…...

【面试篇】Mysql

1. 请介绍一下 MySQL 常见的存储引擎&#xff08;如 InnoDB、MyISAM&#xff09;&#xff0c;它们的特点分别是什么&#xff1f;在什么场景下适合使用 InnoDB&#xff0c;什么场景下适合使用 MyISAM&#xff1f; InnoDB&#xff1a; 特点&#xff1a;支持事务&#xff0c;具有…...

Neo4j操作数据库(Cypher语法)

Neo4j数据库操作语法 使用的数据库版本 (终端查询) >neo4j --version 2025.03.0批量上传数据 UNWIND [{name: Alice, age: 30},{name: Bob, age: 25} ] AS person CREATE (p:Person) SET p.name = person.name, p.age = person.age RETURN p;查询结点总数 MATCH (n) RETU…...

当AI开始“思考“:大语言模型的文字认知三部曲

引言&#xff1a;从《黑客帝国》说起 1999年上映的科幻经典《黑客帝国》描绘了一个令人震撼的未来图景——人类生活在一个由人工智能构造的数字矩阵中。当我们观察现代大型语言模型的工作原理时&#xff0c;竟发现与这个虚构世界有着惊人的相似&#xff1a;人们正在用矩阵以及矩…...

[GN] Python3基本数据类型 -- 与C的差异

文章目录 前言Python3的基本数据类型6个标准的数据类型NumbersStringListtupleSetsDictionaries Python运算符逻辑 运算符成员运算符身份运算符 Python3 数字Python3 序列序列切片序列相加序列相乘序列相关内置函数 Python3 列表访问列表的值更新列表删除列表元素拼接列表嵌套列…...

公司论坛数据构建情感标注数据集思考

公司论坛有一个评论区&#xff0c;会有小伙伴在上面进行评论&#xff0c;聊天&#xff0c;大部份都是积极向上的&#xff0c;但是也有小小的一部分消极的言论&#xff0c;“就像白纸上的一个黑点”&#xff0c;和产品对接的大佬如是说。所以想思考做一个情感标注数据集&#xf…...

MSF上线到CS工具中 实战方案(可执行方案)

目录 实际案例背景 步骤详解 1. 获取低权限 Meterpreter 会话 1.1 使用 Metasploit 获取会话 2. 提权到 SYSTEM 权限 2.1 使用 getsystem 自动提权 2.2 如果 getsystem 失败&#xff1a;使用令牌冒充 (incognito 模块) 3. 上线到 Cobalt Strike 3.1 生成 Cobalt Strik…...

ffmpeg中格式转换需要注意点总结

某些封装格式(例如MP4/FLV/MKV等)的H.264码流的SPS和PPS信息存储在AVCodeccontext结构体的extradata中。分离某些封装格式(例如MP4/FLV/MKV等)中的H.264的时候&#xff0c;需要首先写入SPS和PPS&#xff0c;否则会导致分离出来的数据没有SPS、PPS而无法播。需要使用ffmpeg中名称…...

IntelliJ IDEA 2020~2024 创建SpringBoot项目编辑报错: 程序包org.springframework.boot不存在

目录 前奏解决结尾 前奏 哈&#xff01;今天在处理我的SpringBoot项目时&#xff0c;突然遇到了一些让人摸不着头脑的错误提示&#xff1a; java: 程序包org.junit不存在 java: 程序包org.junit.runner不存在 java: 程序包org.springframework.boot.test.context不存在 java:…...

基于DeepSeek、ChatGPT支持下的地质灾害风险评估、易发性分析、信息化建库及灾后重建

前言&#xff1a; 地质灾害是指全球地壳自然地质演化过程中&#xff0c;由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。在降水、地震等自然诱因的作用下&#xff0c;地质灾害在全球范围内频繁发生。我国不仅常见滑坡灾害&#xff0c;还…...

Websoft9分享:在数字化转型中选择开源软件可能遇到的难题

引言&#xff1a;中小企业数字化转型的必由之路 全球94.57%的企业已采用开源软件&#xff08;数据来源&#xff1a;OpenLogic 2024报告)&#xff0c;开源生态估值达8.8万亿美元。中小企业通过开源软件构建EPR系统、企业官网、数据分析平台等&#xff0c;可节省80%软件采购成本。…...

《在 Ubuntu 22.04 上安装 CUDA 11.8 和 Anaconda,并配置环境变量》

安装 CUDA 11.8 和 Anaconda 并配置环境变量 在本教程中&#xff0c;我们将介绍如何在 Ubuntu 22.04 上安装 CUDA 11.8 和 Anaconda&#xff0c;并配置相应的环境变量。我们还将配置使用 阿里云镜像源 来加速软件包更新。以下是具体步骤。 步骤 1&#xff1a;更新软件源 首先…...

【蓝桥杯】算法笔记3

1. 最长上升子序列(LIS) 1.1. 题目 想象你有一排数字,比如:3, 1, 2, 1, 8, 5, 6 你要从中挑出一些数字,这些数字要满足两个条件: 你挑的数字的顺序要和原来序列中的顺序一致(不能打乱顺序) 你挑的数字要一个比一个大(严格递增) 问:最多能挑出多少个这样的数字? …...

Windows修改hosts文件让向日癸软件联网

Windows修改hosts文件让向日癸软件联网 前言一、查看向日葵软件使用的网址及IP1.清除dns记录2.打开向日葵软件并将dns记录导出txt 二、修改Windows服务器的hosts文件1.winx选择Windows PowerShell(管理员)2.在Windows PowerShell中输入如下内容&#xff1a;3.在hosts文件最后添…...

2021 CCF CSP-S2.括号序列

题目 4091. 括号序列 算法标签: 区间 d p dp dp 思路 区间 d p dp dp添加维表示形态 f [ i ] [ j ] [ k ] f[i][j][k] f[i][j][k], 对于每种形态考虑状态如何进行转移, 枚举的时候不能重复, 星号也要定义唯一的解析方式, 算法时间复杂度 O ( n 3 ) O(n ^ 3) O(n3) 代码 #…...

Uni-app 项目 PDF 批注插件库在线版 API 示例教程

本文章介绍 Uni-app 项目中 PDF 批注插件库 ElasticPDF 在线版 API 示例教程&#xff0c;API 包含 ① 导出批注后PDF数据&#xff1b;② 导出纯批注 json 数据&#xff1b;③ 加载旧批注&#xff1b;④ 切换文档&#xff1b;⑤ 切换用户&#xff1b;⑥ 清空批注 等数据处理功能…...

学透Spring Boot — 010. 单元测试和Spring Test

系列文章目录 这是CSDN postnull 博客《学透Spring Boot》系列的一篇&#xff0c;更多文章请移步&#xff1a;Postnull - 学透Spring Boot系列文章 文章目录 系列文章目录前言1. 基本概念UT 单元测试TDD 测试驱动开发UT测试框架Mock框架 3. Spring Test为什么要用Spring Test引…...

TortoiseGit多账号切换配置

前言 之前配置好的都是&#xff0c;TortoiseGit与Gitee之间的提交&#xff0c;突然有需求要在GitHub上提交&#xff0c;于是在参考网上方案和TortoiseGit的帮助手册后&#xff0c;便有了此文。由于GitHub已经配置完成&#xff0c;所以下述以配置Gitee为例。因为之前是单账号使用…...

3D 地图渲染-区域纹理图添加

引入-初始化地图&#xff08;关键代码&#xff09; // 初始化页面引入高德 webapi -- index.html 文件 <script src https://webapi.amap.com/maps?v2.0&key您申请的key值></script>// 添加地图容器 <div idcontainer ></div>// 地图初始化应该…...

【Linux】条件变量封装类及环形队列的实现

&#x1f4e2;博客主页&#xff1a;https://blog.csdn.net/2301_779549673 &#x1f4e2;博客仓库&#xff1a;https://gitee.com/JohnKingW/linux_test/tree/master/lesson &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01; &…...

离线部署kubesphere(已有k8s和私有harbor的基础上)

前言说明&#xff1a;本文是在已有k8s集群和私有仓库harbor上进行离线安装kubesphere&#xff1b;官网的离线教程写都很详细&#xff0c;但是在部署部份把搭建集群和搭建仓库也写一起了&#xff0c;跟着做踩了点坑&#xff0c;这里就记录下来希望可以帮助到需要的xdm。 1.根据官…...

非阻塞IO,fcntl,多路转接,select,poll,epoll,reactor

IO次数会影响程序的效率&#xff0c;在编程中往往会尽量减少IO次数&#xff0c;用以提高程序的效率&#xff0c;例如缓冲区,就是减少IO次数提高效率的一种方式&#xff1b;而IO影响效率的最大原因其实是因为IO等拷贝&#xff0c;在进行IO时往往需要拷贝的数据就绪&#xff0c;或…...

Redis常用的数据结构及其使用场景

字符串(String) string 是 redis 最基本的类型&#xff0c;你可以理解成与 Memcached 一模一样的类型&#xff0c;一个 key 对应一个 value。 string 类型是二进制安全的。意思是 redis 的 string 可以包含任何数据&#xff0c;比如jpg图片或者序列化的对象。 string 类型是 R…...

PhotoShop学习04

1.背景图层 最下面的被锁锁住的图层为背景图层&#xff0c;背景图层充当整个图层的背景&#xff0c;名字标注为背景&#xff0c;无法修改背景图层的排序始终位于图层最底部。 当我想把上方的图层移动到背景图层之后&#xff0c;发现无法移动图层无法移动&#xff0c;把背景图层…...