Наступна версія платформи .NET не за горами. Новий річний ритм випуску робить .NET 6 першим випуском уніфікованої .NET з довгостроковою підтримкою. Це робить його більш важливою подією, ніж більшість, оскільки це перша подія, якій компанії можуть довіряти як основу своєї стратегії розвитку.
Нещодавно Microsoft оголосила про свого першого кандидата на випуск, одного з двох, які мають ліцензію запуску, яка забезпечує підтримку Microsoft для виробничих програм. Це завжди великий крок. На даний момент те, що було використано для прототипування та інших випробувань, широко використовується для виявлення будь -яких помилок. З цієї причини Microsoft надає підтримку, щоб команда .NET могла виявити крайові випадки, яких їй не вдалося досягти у власних тестах.
Чи слід почати перехід на .NET 6? Якщо ви вже використовуєте .NET 5, міграція, безумовно, має бути відносно легкою, оскільки нова версія пропонує багато нових функцій. Перенесення з .NET Framework залишається складнішим, хоча .NET 6 додає більше функцій сумісності. Однак різниця між двома платформами настільки велика, що міграційний код стане значним проектом. Навіть незважаючи на це, напевно, вдалий час для початку міграції з підтримкою, доступною для довгострокового випуску.
Ви можете завантажити останню версію виконання та інсталятор від Microsoft зараз із підтримкою засобів розробки в останніх попередніх версіях Visual Studio 2022 (які будуть запущені разом із .NET 6 на .NETconf у листопаді). Версія Visual Studio 2022 для macOS з підтримкою .NET 6 наразі перебуває в приватному перегляді.
Зніміть обкладинки нового компілятора .NET
Для більшості з нас мови, які ми використовуємо, є нашою основною точкою взаємодії з .NET, і, як і попередні версії, .NET 6 містить нові версії своїх основних інструментів. Однак найважливіші частини нової версії знаходяться під кришкою інструментів, які беруть наш код і запускають його на цільовому обладнанні, від кишенькових пристроїв ARM до масивних багатоядерних хмарних систем x64.
Значна частина роботи в .NET 6-це вдосконалення компіляторів, зміна коду та використання оптимізації на основі профілю в межах проекту для створення оптимізованих бібліотек під час виконання. Мабуть, це найкраще вважати тизером для .NET 7. Ви можете скористатися перевагами оптимізації керування статичним профілем (PGO) у своєму коді, але поки що не можете використовувати її самостійно. Водночас у компілятор .NET JIT інтегровано динамічний інструмент PGO для функції підписки. Це чудовий спосіб покращити продуктивність виконуваного коду, але будь -яка оптимізація буде втрачена між виконанням.
Dynamic PGO використовує підтримку .NET 6 для багаторівневої компіляції. Для цього використовується попередній компіляційний прохід рівня 0 для швидкого створення неоптимізованого коду. Після того, як ви це зробите, ви зможете побачити, які методи використовуються найбільше, а потім їх можна налаштувати в проходці компілятора Tier 1, яка спирається на дані з попередніх проходів. Отриманий код займає більше пам’яті, але також значно швидше. Документація Microsoft містить приклади, які більш ніж удвічі швидші за код, який не використовує динамічну PGO.
Усі ці функції є частиною нового компілятора Crossgen2. Це значний автономний інструмент, який працює з .NET JIT для забезпечення коду, який можна виконати в будь-якому місці, де підтримується набір .NET. Таким чином, ваш код можна записати для одного середовища, а потім передати іншому. Crossgen2 виробляє готовий до використання код і компілює всю збірку перед її виконанням. Хоча це неефективно, це початок для майбутніх версій компілятора. В даний час він підтримує старі набори інструкцій, які все ще працюють на більш новому обладнанні, хоча їх замінили на нові інструкції, які використовують переваги сучасного обладнання в хмарному масштабі. Можливо, краще вважати Crossgen2 першою ітерацією нового способу написання та розгортання коду, який поєднує JIT та готову до роботи компіляцію, але той, у якому ми не побачимо всієї переваги до .NET 7 кораблі будуть у 2022 році.
Як вивчити мову програмування JavaScript
Змінити мережеві стеки
Однією з найважливіших змін у мережі .NET є підтримка HTTP / 3 та протоколу QUIC. Це покращує підтримку безпечних HTTP -з’єднань із вбудованою безпекою транспортного рівня (TLS) та протоколом дейтаграм користувача (UDP), щоб уникнути блокування з’єднання. Це полегшує роумінг між дротовими, бездротовими та стільниковими з’єднаннями, оскільки QUIC (Quick UDP Internet Connection) не залежить від адреси базового з’єднання. Це значно полегшує роумінг, оскільки тривалі транзакції, такі як завантаження, можуть продовжуватися, навіть якщо основне з’єднання між пристроєм та Інтернетом змінюється.
Підтримка базового протоколу QUIC важлива з інших причин. Перехід від .NET Framework до .NET Core, який розпочався з .NET 5, залишив позаду деякі ключові компоненти .NET, включаючи WCF, Windows Communication Foundation. API WCF використовувалися для створення сервісно-орієнтованих програм у. Корпорація Майкрософт рекомендує перейти на gRPC для реалізації кінцевих точок служби та працює над реалізацією, яка базується на протоколі HTTP / 3. Цей підхід дуже корисний для мобільних та крайових додатків, де з’єднання можуть перемикатися між Wi-Fi та стільниковою мережею залежно від розташування та умов.
Перехід від протоколу HTTP / 2 до протоколу HTTP / 3 для gRPC – це не великий крок, але мають бути значні покращення продуктивності, особливо для мобільних пристроїв та Інтернету речей та інших крайових реалізацій. Тепер ви можете експериментувати з увімкненням підтримки HTTP / 3 у вашому коді, а потім реалізувати інтерфейс gRPC. Код клієнта повинен автоматично узгоджувати з’єднання HTTP / 3, якщо це підтримується операційною системою хоста.
Оскільки Windows та Linux отримують підтримку HTTP / 3 від .NET 6, вона не буде доступна в macOS, оскільки Apple не надає QUIC API. Однак, оскільки популярність QUIC продовжує зростати, швидше за все, він швидко знайде підтримку. Тим часом будь -який код, що використовує протокол gRPC HTTP / 3, слід писати для відповіді на стандартні виклики gRPC по протоколу HTTP / 2.
Відкритий .NET
Ще одна цікава розробка в .NET 6 – це можливість створювати середовище виконання, яке, як доведено, є відкритим. Більшість дистрибутивів Linux вимагає створення інструментів із використанням інструментів з відкритим кодом, що для .NET вимагає двоетапного процесу. Щоб зробити це можливим, Microsoft тепер може розгортати вихідний код .NET у вихідній таблиці, як і будь -який інший великий компонент Linux. Хоча раніше це був ручний процес, який часто затримував розповсюдження, тепер він є автоматизованою частиною процесу збірки.
Підтримка вихідних архівних файлів є важливою ознакою прихильності Microsoft та .NET Foundation до відкритого .NET. Над останньою версією багато роботи надходить поза межами Microsoft, хоча Редмонд як і раніше є найбільшим автором. Але Microsoft використовує свої блоги, щоб називати авторів своїх бібліотек та рекламувати партнерські відносини з такими компаніями, як Red Hat. Має сенс те, що Microsoft збирається Open у .NET: вона має працювати з великою кількістю платформ у міру зростання обчислювального середовища та появи на ринок нових архітектур, таких як нові набори інструкцій ARM.
