“.NET性能不行!”

“.NET有什么像样的产品吗!?”

“升级到.NET 6有什么好处!?”

……

听人扯淡还不如看看微软自己是怎么做的。

本文将汇总一下微软的开发博客——这些博客均涉及微软将产品和服务迁移到.NET 6的成果。

博客按时间由近及远排序。

《Microsoft Teams’ Infrastructure and Azure Communication Services’ Journey to .NET 6》: https://devblogs.microsoft.com/dotnet/microsoft-teams-infrastructure-and-azure-communication-services-journey-to-dotnet-6/

迁移到 .NET Core 是由多种因素驱动的:

  1. 成本降低:Azure 计算成本平均节省 29%。

  2. 性能提升:性能提升30-50%,包括P99 CPU利用率和P99服务时延。

  3. 服务和网络现代化:访问框架中的最新功能,例如轻量级应用程序内存占用,支持Linux上的容器,更好的异常处理,从而在恶劣的条件下获得更好的可靠性以及最新的安全修复。

  4. 提高工程满意度和生产力

《Microsoft Commerce’s .NET 6 Migration Journey》:https://devblogs.microsoft.com/dotnet/microsoft-commerce-dotnet-6-migration-journey/

一个特别重要的例子是,一个服务从 .NET Framework 迁移到 .NET Core 3.1,同时尽可能多地保留其他相同内容(尽管此更改也包括对 .NET Core 的依赖项更新,以及在迁移其代码时所做的小改进)。下图显示了服务延迟提高了约 78%,并且在最初部署后(使用相同的负载、环境和硬件运行)显著提高了稳定性!

随着我们更复杂的服务迁移到 Kubernetes 中,我们的迁移需要的不仅仅是 .NET:

  • 从Windows 到Linux

  • .NET 框架到 .NET Core(3.1,在某些情况下为 5.0,现在是 6.0)

  • 平台转向容器和Kubernetes(远离虚拟机)

  • 更换构建和发布系统,以利用最新的安全性和合规性改进并支持容器化应用程序。

  • 随着我们在迁移时利用平台和 .NET 中的增强和改进,以及我们的合作伙伴对依赖项执行了相同的操作,还有更多功能。虽然这些好处并不完全归功于我们的 .NET Core 迁移,但它们是通过迁移实现的,我们非常感谢 .NET 团队在迁移过程中提供的所有帮助和支持!

《Microsoft Teams Assignments Service’s Journey to .NET 6》:https://devblogs.microsoft.com/dotnet/microsoft-teams-assignments-service-dotnet-6-journey/

在迁移后,我们确实看到了一些 CPU 和延迟的改进,但最一致的改进是内存消耗(进程\专用字节)的减少。随着我们继续调整我们的代码库,我们对此迁移解锁的更有针对性的优化感到非常兴奋!例如,我们可以利用它来减少更多代码路径中的分配,因为大多数 BCL API 现在都支持它作为 的替代方法。此外,我们现在可以访问 .NET 6 (https://docs.microsoft.com/en-us/dotnet/core/runtime-config/) 中的大量新配置选项,并期待调整和调整运行时以更好地适应我们的所有工作负载。

《OneService Journey to .NET 6》:https://devblogs.microsoft.com/dotnet/one-service-journey-to-dotnet-6/

在两年多的时间里,我们将大量 .NET Framework 4.7.2 应用、库和测试项目转换为 .NET 6,验证了功能和性能等效性(或更好),现在几乎完全在生产中的 .NET 6 上运行。该项目取得了重大成功,有助于降低运营成本并改善开发人员体验。

突出:

  • 基础设施成本降低 29%。

  • 迁移服务的 CPU 平均提高 30%。

  • 主 API 的 P95 延迟提高了 8-27%。

  • 减少了技术债务,现在可以轻松地升级到年度 .NET 版本。

  • 更快乐、更高效的团队。

《Exchange Online Journey to .NET Core》:https://devblogs.microsoft.com/dotnet/exchange-online-journey-to-net-core/

出于三个原因,我们之所以有动力迁移到 .NET Core。首先,我们非常需要提高性能和成本效益。任何基于云的供应商都知道,每一次低效率都会花费真金白银。第二,知道 .NET Framework 不再积极开发,我们希望迁移到一个为未来开辟道路的现代框架。第三,可能更重要的是它很酷,有光泽和新鲜。

《The Azure Cosmos DB Journey to .NET 6》:https://devblogs.microsoft.com/dotnet/the-azure-cosmos-db-journey-to-net-6/

Azure Cosmos DB's API 网关是一种低延迟的 Azure 服务。它以多种方式利用 .NET 来实现其性能和延迟要求。多年来,每次 .NET 升级都产生了许多好处,既包括新的 API,这些 API 提供了更好的方法来管理性能,并改进了框架中的现有 API 和运行时行为。我们正在积极与 .NET 团队合作,采用 .NET 7,并期待在即将发布的 .NET 版本中推出更多影响深远的性能功能。

《Microsoft Graph’s Journey to .NET 6》:https://devblogs.microsoft.com/dotnet/microsoft-graph-dotnet-6-journey/

四年前,该服务在 IIS 上运行,在 .NET Framework 4.6.2 上 ASP.NET。目前,该服务在 HTTP 上运行.sys.NET 6 上 ASP.NET 核心,在 .NET Core 3.1 和 .NET 5 上暂时停止。每次升级时,我们都观察到 CPU 利用率有所提高,尤其是在 .NET Core 3.1 和最近的 .NET 6 中。

  1. 从 .NET 框架到 .NET Core 3.1,我们观察到在相同的流量下 CPU 减少了 30%。

  2. 从 .NET Core 3.1 到 .NET 5,我们没有观察到要报告的有意义的差异。

  3. 从 .NET 5 到 .NET 6,我们观察到在相同的流量下,CPU 又减少了 10%。

CPU 利用率的大幅降低转化为更好的延迟、吞吐量和有意义的计算容量成本节约,从而有效地帮助我们实现目标。

《Azure Active Directory’s gateway is on .NET 6.0!》:https://devblogs.microsoft.com/dotnet/azure-active-directorys-gateway-is-on-net-6-0/

Azure 活动目录的网关服务是一个反向代理,用于处理构成 Azure 活动目录 (Azure AD) 的数百个服务。如果使用了 office.com、outlook.com、portal.azure.com 或 xbox.live.com 等服务,则表示你已使用 Azure AD 的网关。网关提供 TLS 终止、自动故障转移/重试、异地邻近路由、限制和向 Azure AD 中的服务分段等功能。该网关存在于全球 54 个 Azure 数据中心,每天为大约 1850 亿个请求提供服务。直到最近,Azure AD 的网关还在 .NET 5.0 上运行。截至 2021 年 9 月,它已在 .NET 6.0 上运行。

这些博客都在强烈凸显着.NET的进步:

  • 更低的CPU消耗

  • 更低的内存占用

  • 更低的响应延迟

  • 更高的吞吐量

  • 更完善的脚手架

  • 更强大的测试和监控工具

  • ……

之后类似的博客还会发布在:Developer Stories - .NET Blog (microsoft.com) :https://devblogs.microsoft.com/dotnet/category/developer-stories/,有兴趣的读者可以加入收藏夹持续关注。

微软产品 .NET 6 迁移之旅相关推荐

  1. 巴西政府考虑用微软产品替换开源软件

    据报道,巴西政府正在考虑从开源软件大规模过渡到微软产品,这其中包括Windows 10和Office生产套件.根据ZDNet报道,巴西正在要求联邦政府机构在11月11日星期五之前表态是否购买微软软件的 ...

  2. 微软 SQL Server 2016 迁移技术培训实验营

     SQL 微软数据平台的专家们,您们还在为不了解 Oracle 产品技术而苦恼吗?您还在为无法提供 Oracle 客户迁移服务而困惑吗?快来参加此次微软 SQL Server 2016 迁移技术动 ...

  3. 【TiDB@丰巢】支付平台的迁移之旅

    来源:丰巢技术团队 丰巢第一次在生产环境实际使用TiDB,是在2018年,其场景是每天产生一亿条以上数据的推送平台,当时我们还发了一篇文章,被PingCAP官方收录:TiDB at 丰巢:尝鲜分布式数 ...

  4. 2020 年,那些“寿命终止”的微软产品

    作者丨万佳 对微软用户来说,今年格外值得注意. 因为在 2020 年,微软的几个重要产品都将终止服务支持,其中最重要的有 Office 2010.Visual Studio 2010.Windows ...

  5. Emit动态代理.NetCore迁移之旅

    前言] 前面我们介绍了Aop 从静态代理到动态代理:https://www.cnblogs.com/7tiny/p/9657451.html 我们在.NetFramework平台下使用微软提供的Emi ...

  6. MR混合现实头显来啦!宏碁微软产品率先上市

    原文标题:MR混合现实头显来啦!宏碁微软产品率先上市 微软此前表示,PC世界中的一系列著名OEM合作伙伴将会生产Windows 10混合现实头显.据小编了解,宏碁将会首先在本月开始向开发者发货,分阶段 ...

  7. 盖茨接班人:微软产品为何总是挨批

    被称为"微软三号人物"的比尔•盖茨接班人之一.微软首席研究及战略官克瑞格•蒙迪(Craig Mundie)5日下午在北京接受了专访.克瑞格•蒙迪在专访中剖析了微软产品总是挨批的原因 ...

  8. 微软产品经理:你不能不知道的 6 个 Web 开发者工具

    使用开发者工具是开发人员的日常,但多数人往往只使用其中的一小部分,很多功能其实都无人问津.在微软 Edge 项目部担任开发者工具首席产品经理的 Christian Heilmann 认为,开发者工具正 ...

  9. 承接企业IT兼职顾问,微软产品定制课程培训!

    微软最有价值专家,微软解决方案专家,资深顾问,资深讲师.多家大型企业IT顾问,多家IT媒体特约作者. 精通Active Directory,虚拟化,Exchange,TMG,System Center ...

最新文章

  1. android 不重新加载,android – 返回Activity而不重新创建(不调用onCreate())
  2. 树状数组 | 1057
  3. 注释工具_干货:PS工具介绍“计算工具+注释工具”
  4. 【组合数学】递推方程 ( 递推方程内容概要 | 递推方程定义 | 递推方程示例说明 | 斐波那契数列 )
  5. 每天一道LeetCode-----判断某棵树是否是二叉搜索树
  6. OpenSessionInViewFilter作用及配置
  7. 网络 IO 演变过程
  8. Java常用设计模式————原型模式(二)之深拷贝与浅拷贝
  9. javascript基础与编写习惯
  10. 2019年最值得关注的几个公众号,好评率高达99.99%
  11. 那些聪明人都是怎么提高情商的?
  12. tiny4412 linux-4.2 移植(十一)LCD驱动移植
  13. android可以设计的软件,不懂APP如何设计?送你10条Android设计原则
  14. Music Collector Mac破解版——你身边的音乐收藏专家
  15. centos双网卡不能同时工作解决
  16. 2021全国电子设计大赛 D题 基于互联网的摄像测量系统 源码解析
  17. iOS开发-XIB、Storyboard操作小技巧
  18. 计算机硬件资源可,计算机硬件资源,Computer hardware resource,音标,读音,翻译,英文例句,英语词典...
  19. 【网络原理】知识点汇总2
  20. OSCHINA开源中国

热门文章

  1. 公司分支使用5G链路和总部建立IPS加密隧道配置案例
  2. 集中监控计算机主要功能
  3. 极智AI | 寒武纪 pytorch-mlu 添加逐层算子方法
  4. 1.4 19:简单计算器
  5. 作坊离工厂究竟有多远 (二)
  6. python代码调试模式运行
  7. 第一课:区块链是什么
  8. 每年支付 m 次的年金
  9. 多服务保证订单号唯一
  10. Windows系统:桌面,开始菜单和工具栏都不见了