Артём Ровенский
Статей: 23

.NET Digest #2

Добро пожаловать на второй выпуск нашего дайджеста, посвящённого новостям и событиям в мире .NET! Первый выпуск вам понравился, так что C# команда PVS-Studio снова собрала для вас самые интересные и полезные материалы. Поехали!

Мы стараемся совершенствоваться, так что будем рады вашим комментариям и предложениям :)

Не стесняйтесь присылать нам интересные материалы с помощью формы обратной связи!

Сегодня в дайджесте: .NET 9 Preview 6, статьи про новые возможности языка, окончание поддержки .NET 6 и многое другое.

Главные новости

.NET 9 Preview 6. Microsoft выпустили последнюю preview версию. Следующим этапом должен стать Release Candidate 1. Кратко перечислим основные изменения:

  • Улучшения в System.Numerics и System.Text.Json;
  • Атрибут [GeneratedRegex] теперь можно применять к свойствам;
  • Новые типы OrderedDictionary<TKey, TValue> и ReadOnlySet<T>;
  • allows ref struct для ограничения обобщённого параметра, чтобы сообщить компилятору и рантайму, что в качестве обобщённого параметра может использоваться ref struct;
  • NuGetAudit теперь выдаёт предупреждения об уязвимостях в транзитивных зависимостях;
  • Новый инструмент dotnet nuget why для выяснения того, зачем в проекте используется транзитивная зависимость;
  • MSBuild BuildChecks для обнаружения проблем на этапе сборки.

.NET 6 will reach End of Support on November 12, 2024. Microsoft перестанет поддерживать .NET 6. Новые обновления безопасности больше не будут выходить. Прекратится осуществление технической поддержки .NET 6. Также, при сборке вы будете получать предупреждение о неподдерживаемой версии. Рекомендуется перейти на .NET 8.

Видео

A Complete .NET Developer's Guide to Span with Stephen Toub. Большое видеоруководство про Span в .NET от Стивена Тоуба.

Статьи

.NET and .NET Framework July 2024 servicing releases updates. Теперь новости об обновлении .NET и .NET Framework объединены в одну. В июльском обновлении были исправлены различные уязвимости.

C# 13: Explore the latest preview features. В этой статье Microsoft рассказывает о нововведениях C# 13, доступных в последнем preview. Это отличная возможность подробнее узнать про улучшения params и index операторa, новый lock объект, partial свойства, allows ref struct и другое.

Также разработчики сообщили, что типы расширений, которые должны были появиться в C# 13 появятся только в C# 14 (.NET 10). Это печально, но, лучше так, чем получать сырую функцию.

What's new in .NET Aspire 8.1 for cloud native developers! Новая версия .NET Aspire 8.1 привносит поддержку создания образов контейнеров через AddDockerfile(...), оркестрирование Python кодом с помощью AddPythonProject(...) и прочие улучшения для тестирования телеметрии. Также были добавлены новые компоненты, такие как: Keycloak, Elasticsearch, Garnet, Valkey, Kafka UI и другие.

Кстати, о Garnet. Мы недавно выпускали статью о проверке исходного кода Microsoft Garnet статическим анализатором PVS-Studio.

Dive into native Windows development with new WinUI workload and template improvements. Microsoft рекомендует использовать WinUI для разработки приложений на Windows. Теперь же появились новые рабочие нагрузки и шаблоны для создания проектов.

Behind the scenes of collection expressions. Эндрю Лок завершает серию статей, посвящённых выражениям коллекций. Новые статьи:

Disambiguating types with the same name with extern alias. Эндрю Лок рассматривает проблему использования двух библиотек, имеющих одинаковые имена типов и пространства имён. Кейс очень редкий, но знать, как избежать ошибок компиляции и справиться с этой ситуацией будет полезно.

Cloned Dictionary vs. Immutable Dictionary vs. Frozen Dictionary in high traffic systems. Автор сравнивает эффективность различных реализаций словарей в условиях высокой нагрузки на систему. Он рассказывает о том, какой тип словаря может быть неэффективным из-за больших затрат на выделение памяти и какой работает медленно из-за необходимости выделения памяти для каждой операции.

CREATING HASHES IN .NET. В этой статье рассматриваются различные методы создания хэшей в .NET. Хэши полезны для одностороннего шифрования, которое используется для безопасного хранения паролей и других конфиденциальных данных. Они также используются для проверки JWT и во многих других сценариях.

C# Design Patterns - Iterator - Language Features. Автор описывает встроенную в C# поддержку паттерна итераторов: IEnumerator, IEnumerable и IAsyncEnumerable.

Why and How to Execute GraphQL Queries in .NET. В этом посте рассматривается, как выполнять запросы к GraphQL API в .NET с использованием библиотеки Strawberry Shake в консольном приложении.

Adding Serilog to ASP.NET Core: a practical guide. Serilog — это библиотека для логирования. Вы можете использовать её самостоятельно, но она также совместима с Microsoft.Extensions.Logging, что делает её хорошим выбором для ASP.NET Core приложений. Из этой статьи вы узнаете, почему стоит выбрать Serilog и как интегрировать его в свой проект на ASP.NET Core.

ReadOnlySet<T> in .NET 9. В .NET 9 preview 6 был представлен ReadOnlySet<T>. Здесь вы узнаете, как он работает и зачем был добавлен.

.NET: итерируемую в foreach коллекцию изменять нельзя. Или... Статья посвящена неочевидной особенности, которая возникает при изменении некоторых коллекций в .NET. Оказывается, для некоторых методов поведение .NET Framework и .NET отличается.

Troubleshooting 6 Known Issues in .NET MAUI. Статья посвящена решению шести распространённых проблем в .NET MAUI.

MemoryCache in C#: A Practical Guide. MemoryCache — это стандартный механизм кэширования в памяти для приложений, написанных на C#. Он помогает повысить производительность и масштабируемость системы за счёт увеличения объёма используемой памяти. В этом гайде рассматривается, когда и как лучше всего использовать MemoryCache.

Новости

Extend System.Guid with a new creation API for v7. Дискуссия, посвящённая поддержке UUIDv7 в .NET 9. Это привнесёт ряд преимуществ: улучшенная сортировка по времени, совместимость с другими системами и стандартами, высокая уникальность благодаря случайным и инкрементным данным, а также улучшенная производительность при генерации и использовании UUID.

Спасибо за прочтение, и ждём вас снова! Не стесняйтесь присылать нам свои новости!