Как стать автором
Обновить

Комментарии 14

Простите, а вот это как вообще?

В силу исторических причин и для обеспечения обратной совместимости у нас не было возможности переключиться на стандартные для NET 6 атрибуты параметров [FromQuery], [FromBody] и т. д.

Что мешало переключиться с дефолтными значениями?

[FromQuery(Name = "q")] string query = ""

Там изначально был написан код, который вытаскивал эти параметры из нескольких источников. То есть условный query мог читаться из строки запроса, но если его там нет, то значение бралось из заголовка с тем же именем. В результате, да, можно было написать [FromQuery] string query="", но потом всё равно пришлось бы делать оставшиеся проверки. А так как параметры в большинстве методов были повторяющимися и читалка уже написана общая, оставили как есть и просто перевели её на новые рельсы. В новых версиях API, понятно, что сразу будем нормально делать.

Век живи, век учись, как говорится. Какое только легаси не встретишь. :) Не-не-не, упаси боже, не ерничаю и не "учу жить"... Просто теперь завис немного и сижу думаю, какой-же сценарий использования того, что если в query не нашли параметр, то ищем в теле... Если там не нашли то ищем в headers... Причем с тем-же именем. Чего только люди не пишут.

О да! Хотя конкретно в этом продукте легаси вполне себе качественное. Смотришь, ругаешься, но когда копать начинаешь, почти всегда потом вменяемое обоснование находишь, почему именно так сделано было, с учётом дрейфа технологий. Не про этот конкретно пример, а в целом.

Ох... Вспомнил как два года выпиливал ashx из Эльбы %) Вроде их было где-то 300. Брал по 20 за раз и переводил на mvc контроллеры. Иногда приходилось что-то придумывать, потому что встречалась кастомная сериализация, ведь нужно было поддержать обратную совместимость...

Спасибо за статью. У вас небольшое дублирование в первом абзаце раздела "Архитектурные решения при переводе". "Исторической спецификой Фокуса ..." и потом еще раз "Исторической спецификой Фокуса ...".

Спасибо большое, пропустил при вычитке. Поправил.

Использовался ли специальный пакет [System.Web adapters](https://learn.microsoft.com/en-us/aspnet/core/migration/inc/adapters?view=aspnetcore-8.0), который абстрагирует разницу классов HttpContext-производных в NetFramework и .Net6? Или обходились дублированием?

Нет, не использовался. Там было не на столько большое число изменений.

Что мешало переключиться с дефолтными значениями?

[FromQuery(Name = "q")] string query = ""

Уже ответил немного выше. Было историческое наследие в виде чтения одного и того же параметра из разных источников.

Подождали бы ещё пару лет и переехали бы сразу на .NET 10))

Тоже вариант. А если ещё десяток лет подождать, то можно было бы сразу искать, как в том американском банке, опытных некромантов специалистов по Коболу ))

Ох, спасибо за статью, мне эта ботва ещё предстоит. А там ещё и хвосты от Entity Framework 4 Database First присутствуют...

Зарегистрируйтесь на Хабре, чтобы оставить комментарий