День 2560. #ЧтоНовенького
Microsoft Выпустили превью 3 OData .NET (ODL) 9.0.0
Microsoft выпустили OData .NET (ODL) 9.0.0 превью 3, последнюю предварительную версию клиентских и основных библиотек OData .NET, продолжая работу по модернизации библиотеки. Эта превью версия фокусируется на более безопасном поведении по умолчанию и более тесном соответствии спецификации OData.
Для контекста, текущий стабильный релиз основных библиотек OData .NET (например, Microsoft.OData.Core) остаётся на уровне 8.4.x в NuGet, при этом версия 8.4.3 является последней стабильной из этой серии. Она реализует поддержку OData v4/v4.01 и по-прежнему широко используется в производственной среде, в то время как релизы 9.x всё ещё находятся в предварительной версии.
В превью 3 поведение улучшено на основе отзывов разработчиков и в соответствии со спецификациями OData.
1. Выполнение запросов Action теперь использует семантику SingleOrDefault() для ссылок, допускающих значение null, что уменьшает количество неожиданных исключений для распространенных ответов с null, сохраняя при этом строгие проверки на недопустимые значения.
2. Удалены устаревшие конструкторы сериализации, привязанные к ISerializable, что устраняет предупреждения сборки в современных SDK.
3. Решено отказаться от старой концепции CsdlTarget и объявить устаревшими методы доступа к типам возвращаемых значений в пользу новых интерфейсов EDM.
4. Устаревшие API, связанные со свойством типа возвращаемого значения (ReturnType) в IEdmOperation, также полностью заменены новой абстракцией IEdmOperationReturn.
В совокупности эти изменения отражают стремление к совместимости с .NET 8/9/10 во время выполнения, использование более простых алгоритмов выделения памяти (например, добавление перегрузок для поиска с помощью ReadOnlySpan<char>) и опору на встроенные API платформы.
Ключевое изменение в поведении версии превью 3 — принудительная десериализация в типы-структуры для нетипизированных значений (больше нет переключателей ReadUntypedAsString), что приводит поведение во время выполнения в большее соответствие с официальным форматом OData JSON. Кроме того, для нетипизированных числовых значений теперь по умолчанию определяются определённые числовые типы CLR с флагом совместимости для устаревших результатов (числа десериализуются в тип decimal).
Переход со стабильной версии 8.x на предварительную версию 9.x пакетов NuGet следует рассматривать как ломающее изменение: разработчикам необходимо пересмотреть обработку обнуляемых возвращаемых значений, ожидаемые нетипизированные формы JSON и любые зависимости от удалённых устаревших API. Поскольку релизы 9.x всё ещё находятся в предварительной версии, их не рекомендуется использовать в производственной среде без тщательного тестирования.
Экосистема OData продолжает развиваться. Например, пакеты ASP.NET Core OData независимо перешли в собственную серию 9.x+ (включая стабильные релизы, такие как Microsoft.AspNetCore.OData 9.4.x), что свидетельствует о параллельном развитии стеков OData на стороне сервиса и клиента.
Разработчики, заинтересованные в предоставлении отзывов или отслеживании планов развития, могут следить за репозиторием OData/odata.net на GitHub и официальным блогом OData, где публикуются анонсы предварительной версии, рекомендации по миграции и информация о планах по выпуску стабильной версии 9.0.
Источник: https://www.infoq.com/news/2026/01/odata-net-preview-9/
Post #3078
2.33K