微軟在今天在Redmond 線下舉辦媒體一場活動,釋出了新版的微軟必應,在桌面上推出了測試版,移動版也即将推出。微軟首席執行官納德拉稱Al-powered搜尋為公司自雲15年以來最大的事情。
2023年1月初,微軟已經在讨論将OpenAI的技術納入Word、PowerPoint、Outlook和其他應用程式,這樣使用者就可以用簡單的提示自動生成文本,2023年1月下旬,微軟宣布即将會把ChatGPT加入Azure雲服務。新版微軟必應+Chatgpt的測試版會推出,在面對谷歌剛剛宣布釋出Bard聊天機器人的時刻,這場釋出會就更容易引人注目。
微軟的大量雲服務,包括必應搜尋,他們的技術棧都是.NET , 都是用2014宣布開源的跨平台的 .NET ,必應早在2018年就從.NET Framework更新到.NET Core 2.1, 具體參見 https://devblogs.microsoft.com/dotnet/bing-com-runs-on-net-core-2-1/。.NET Core為Bing 帶來了的顯著性能改進。
下面将彙總一下微軟的開發部落格——這些部落格均涉及微軟将産品和服務遷移到.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 是由多種因素驅動的:
- 成本降低:Azure 計算成本平均節省 29%。
- 性能提升:性能提升30-50%,包括P99 CPU使用率和P99服務時延。
- 服務和網絡現代化:通路架構中的最新功能,例如輕量級應用程式記憶體占用,支援Linux上的容器,更好的異常處理,進而在惡劣的條件下獲得更好的可靠性以及最新的安全修複。
- 提高工程滿意度和生産力
《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 中。
- 從 .NET 架構到 .NET Core 3.1,我們觀察到在相同的流量下 CPU 減少了 30%。
- 從 .NET Core 3.1 到 .NET 5,我們沒有觀察到要報告的有意義的差異。
- 從 .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/ , 有興趣的讀者可以加入收藏夾持續關注。