Различия между HTTP/1, HTTP/2 и HTTP/3
HTTP является основой веб-коммуникации с 1989 года, но за это время он значительно эволюционировал. Вот разбор того, как каждая версия развивалась, чтобы удовлетворять растущие потребности:
1. HTTP/1.1 (1997)
Оригинальный протокол, определивший взаимодействие в вебе, использует простые методы, такие как GET и POST. Однако с развитием веба, появлением сложных приложений, потокового HD-видео и других нагрузок HTTP/1.1 столкнулся с рядом ограничений:
⏩ Проблема
⏩ Избыточные HTTP-заголовки.
⏩ Необходимость устанавливать несколько TCP-соединений для параллельной загрузки ресурсов.
2. HTTP/2 (2015)
Значительный шаг вперед, включающий:
⏩ Сжатие заголовков для экономии трафика.
⏩ Мультиплексирование – возможность одновременной передачи нескольких запросов в одном TCP-соединении.
⏩ Приоритезация запросов для ускоренной загрузки важных элементов.
⏩ Бинарное кодирование вместо текстового, что ускоряет обработку.
HTTP/2 позволил сократить число TCP-соединений, ускоряя загрузку страниц и оптимизируя использование ресурсов сети. Однако он все еще страдал от TCP head-of-line blocking и проблем безопасности, таких как Stream Reuse Attack.
3. HTTP/3 (2020)
Основан на протоколе QUIC и использует UDP вместо TCP, что дает:
⏩ Полное устранение head-of-line blocking TCP.
⏩ Улучшенную миграцию соединений (например, при смене Wi-Fi на мобильную сеть).
⏩ Встроенное шифрование (TLS 1.3 по умолчанию).
⏩ Быстрое установление соединений за счет отказа от трехэтапного рукопожатия TCP.
HTTP/3 не полностью заменяет HTTP/2 – он предназначен для определенных сценариев, где его преимущества наиболее заметны, тогда как HTTP/2 остается надежным вариантом.
👉 @KodBlog
HTTP является основой веб-коммуникации с 1989 года, но за это время он значительно эволюционировал. Вот разбор того, как каждая версия развивалась, чтобы удовлетворять растущие потребности:
1. HTTP/1.1 (1997)
Оригинальный протокол, определивший взаимодействие в вебе, использует простые методы, такие как GET и POST. Однако с развитием веба, появлением сложных приложений, потокового HD-видео и других нагрузок HTTP/1.1 столкнулся с рядом ограничений:
head-of-line (HOL) blocking, замедляющая загрузку ресурсов.2. HTTP/2 (2015)
Значительный шаг вперед, включающий:
HTTP/2 позволил сократить число TCP-соединений, ускоряя загрузку страниц и оптимизируя использование ресурсов сети. Однако он все еще страдал от TCP head-of-line blocking и проблем безопасности, таких как Stream Reuse Attack.
3. HTTP/3 (2020)
Основан на протоколе QUIC и использует UDP вместо TCP, что дает:
HTTP/3 не полностью заменяет HTTP/2 – он предназначен для определенных сценариев, где его преимущества наиболее заметны, тогда как HTTP/2 остается надежным вариантом.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12❤1🔥1🥰1
ASP.NET Core 9 позволяет отключать HTTP-метрики и не записывать значения для определённых конечных точек и запросов.Например, автоматизированные системы проверяют конечную точку
Health, поэтому сбор метрик для неё не особенно полезен.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍3❤1⚡1
EF Core — это потрясающе, но давайте будем честными. Перебор записей в цикле для их обновления — не очень.
Обновление тысяч строк по одной — верный способ замедлить работу и перегрузить базу данных.
Есть способ получше — массовые обновления.😎
👉 @KodBlog
Обновление тысяч строк по одной — верный способ замедлить работу и перегрузить базу данных.
Есть способ получше — массовые обновления.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤23🤨7👍6🤯1
Нашел для вас отличный репозиторий — Unity Clean Code
Это сборка лучших практик написания чистого кода в Unity, которые помогут сделать ваш проект структурированным и удобочитаемым.
Следуя рекомендациям, вы улучшаете архитектуру своих игр, упрощаете поддержку кода и учитесь писать более эффективные и понятные решения.
💬 Отличный выбор для всех, кто работает с Unity
👉 @KodBlog
Это сборка лучших практик написания чистого кода в Unity, которые помогут сделать ваш проект структурированным и удобочитаемым.
Следуя рекомендациям, вы улучшаете архитектуру своих игр, упрощаете поддержку кода и учитесь писать более эффективные и понятные решения.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍5❤1💯1
IExceptionHandler, который упрощает глобальную обработку исключений в aspnetcore.Раньше обработчики исключений часто становились сложными и запутанными, так как в одном методе приходилось учитывать множество разных типов ошибок. Теперь же
IExceptionHandler позволяет создавать отдельные обработчики для конкретных исключений, делая код чище и удобнее.Достаточно реализовать метод
TryHandleAsync, подключить его через UseExceptionHandler — и всё готово.Это чисто. Модульно. Поддерживаемо. И, честно говоря, давно пора.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥4🌭2
Как создать HttpClient в .NET?
Рекомендуемый способ — использование
Вы можете использовать
Недостаток в том, что вам придется настраивать HttpClient каждый раз.
Если вам нужен заранее настроенный HttpClient, вы можете использовать именованные или типизированные клиенты.
Вот правильный способ работы с HttpClient в .NET: тык
👉 @KodBlog
Рекомендуемый способ — использование
IHttpClientFactoryВы можете использовать
IHttpClientFactory напрямую.Недостаток в том, что вам придется настраивать HttpClient каждый раз.
Если вам нужен заранее настроенный HttpClient, вы можете использовать именованные или типизированные клиенты.
Вот правильный способ работы с HttpClient в .NET: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4💯3❤2
Есть такой инструмент — SharpRedirect
С ним можно легко перехватывать и перенаправлять сетевой трафик
Он принимает входящие TCP-подключения на локальный порт и пересылает их на указанный удалённый хост и порт.
😍 Поддерживает двустороннюю передачу данных в полном дуплексе, обеспечивая стабильную и асинхронную работу для повышения производительности.
👉 @KodBlog
С ним можно легко перехватывать и перенаправлять сетевой трафик
Он принимает входящие TCP-подключения на локальный порт и пересылает их на указанный удалённый хост и порт.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍4⚡1
3 различных архитектурных подхода к организации компонентов в приложении
1. Классическая трёхслойная архитектура
Включает три уровня:
🟡 MyApp.Web (контроллеры, взаимодействие с пользователем)
🟡 MyApp.Business (бизнес-логика)
🟡 MyApp.Data (доступ к данным)
Классическая, но может приводить к сильной связанности.
2. CQRS-подход
🟡 Использует паттерн Command Query Responsibility Segregation (CQRS)
🟡
🟡
Улучшает разделение команд и запросов, подходит для сложных систем.
3. Компонентный подход
🟡 Компоненты объединены в единый модуль MyApp.Policies.
🟡
Даёт больше гибкости, но требует продуманной структуры
Как вы упаковываете свои компоненты?🤔
👉 @KodBlog
1. Классическая трёхслойная архитектура
Включает три уровня:
PoliciesController использует IPolicyService, который, в свою очередь, использует IPolicyRepository для работы с базой данных.Классическая, но может приводить к сильной связанности.
2. CQRS-подход
PoliciesController вызывает RenewPolicyCommand, который обрабатывается RenewPolicyHandlerRenewPolicyHandler взаимодействует с IPolicyRepository, который работает с PolicyRepositoryУлучшает разделение команд и запросов, подходит для сложных систем.
3. Компонентный подход
PoliciesController использует IPolicyComponent, который включает в себя PolicyComponent, PolicyService и PolicyRepositoryДаёт больше гибкости, но требует продуманной структуры
Как вы упаковываете свои компоненты?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2🌚2
Это правильный способ реализации посева данных в ваших .NET-приложениях
EF Core 9 значительно упростил этот процесс.
Больше не нужно переопределять
EF 9 представил методы
👉 @KodBlog
EF Core 9 значительно упростил этот процесс.
Больше не нужно переопределять
OnModelCreating или вручную управлять скриптами заполнения данных.EF 9 представил методы
UseSeeding и UseAsyncSeeding, которые предоставляют удобный способ заполнения базы данных начальными данными.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14👍6🌚1💯1
Media is too big
VIEW IN TELEGRAM
Claude 3.7 Sonnet получил серьёзного конкурента
Gemini 2.5 Pro — действительно хорошая модель для кода👍
⏩ качество кода действительно высокое
⏩ контекст 1M токенов
⏩ нативная мультимодальность
⏩ генерация длинного кода
⏩ понимание крупных кодовых баз
Чувак на видео использовал его вместе с Windsurf для создания приложения поискового агента с ИИ
👉 @KodBlog
Gemini 2.5 Pro — действительно хорошая модель для кода
Чувак на видео использовал его вместе с Windsurf для создания приложения поискового агента с ИИ
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤6👍2🥴2
Вы устали писать один и тот же шаблон конструктора в каждом сервисе?
Объявить поле → Внедрить зависимость → Присвоить → Повторить🔁
Здесь на помощь приходят первичные конструкторы в C# 12 — и они значительно упрощают код.
Я использовал их в статических сервисах и вот что заметил:
Плюсы:
☑ Меньше шаблонного кода, больше ясности
☑ Нет лишних полей и присваиваний
☑ Отлично подходят для Minimal API и DI
☑ Держат небольшие сервисы лаконичными и читаемыми
Минусы:
❌ Невозможность объявлять private readonly поля
Вы уже пробовали первичные конструкторы в реальных проектах?
👉 @KodBlog
Объявить поле → Внедрить зависимость → Присвоить → Повторить
Здесь на помощь приходят первичные конструкторы в C# 12 — и они значительно упрощают код.
Я использовал их в статических сервисах и вот что заметил:
Плюсы:
Минусы:
Вы уже пробовали первичные конструкторы в реальных проектах?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11👍8🐳3💯1
Ах да, этот бесценный "специалист по методам расширения" — что бы мы без тебя делали) 😄
(их сотни в этом проекте)
👉 @KodBlog
(их сотни в этом проекте)
Please open Telegram to view this post
VIEW IN TELEGRAM
😁17🌚5🔥2🐳1
This media is not supported in your browser
VIEW IN TELEGRAM
Я никогда не знал об этом! Вы можете открыть VS Code прямо в браузере из репозитория на GitHub.
Просто нажмите клавишу "
Это работает даже если вы не владеете репозиторием!😱
👉 @KodBlog
Просто нажмите клавишу "
." (точка)" в репозитории на GitHub. Это откроет репозиторий в веб-версии VS Code. Можно редактировать и коммитить изменения одним кликом.Это работает даже если вы не владеете репозиторием!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🔥4❤1👏1
Тип
.NET 9 представляет его обобщенный аналог
Он создает словарь, в котором сохраняется порядок пар «ключ-значение».
Ты когда-нибудь использовал🤔
👉 @KodBlog
OrderedDictionary существует в .NET с ранних версий.NET 9 представляет его обобщенный аналог
Он создает словарь, в котором сохраняется порядок пар «ключ-значение».
Ты когда-нибудь использовал
OrderedDictionary? Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥1
Как управлять задержкой в методе
Начиная с .NET 8, вы можете передать объект
Вы можете использовать
👉 @KodBlog
Task.Delay в тестах?Начиная с .NET 8, вы можете передать объект
TimeProvider в метод Task.DelayTimeProvider будет интерпретировать задержку.Вы можете использовать
FakeTimeProvider, чтобы управлять задержкой в тестах.Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥1
AutoMapper и MediatR переходят на коммерческую модель 😡
То есть, проекты больше не будут полностью open source. Джимми пишет, что делает это, чтобы обеспечить долгосрочную устойчивость своих OSS-проектов. Ну и сразу уточняет: «нет, это не первоапрельская шутка».
Короче, ещё один популярный open source — в платку. Тренд последних лет продолжается.
Вот источник
👉 @KodBlog
То есть, проекты больше не будут полностью open source. Джимми пишет, что делает это, чтобы обеспечить долгосрочную устойчивость своих OSS-проектов. Ну и сразу уточняет: «нет, это не первоапрельская шутка».
Короче, ещё один популярный open source — в платку. Тренд последних лет продолжается.
Вот источник
Please open Telegram to view this post
VIEW IN TELEGRAM
🤯11👍10🥴2❤1👀1
Этот дашборд для отслеживания цен на акции с использованием Cursor + .NET. 🔥
Использовав вайб-кодинг до того, как это стало модным )
Бэкенд получает начальную цену акции с бесплатного API фондового рынка.
Затем есть фоновая задача, которая случайным образом генерирует обновление цены и передает его клиентам с помощью SignalR.
UI — это чистый HTML + JavaScript + Tailwind CSS для стилизации
Потребовалось около ~15 секунд, чтобы добавить поддержку темного режима.😱
Я с нетерпением жду, как будет развиваться Cursor. Это однозначно самый простой способ быстро создать работающее ПО.
Но поддерживаемость — это то, о чем нужно позаботиться.
В целом, код не плохой. Он работает и читаем. Cursor может даже писать комментарии и рефакторить код.
Я получил лучшие результаты, используя Claude Sonnet 3.5.
А ты уже пробовал Cursor?
👉 @KodBlog
Использовав вайб-кодинг до того, как это стало модным )
Бэкенд получает начальную цену акции с бесплатного API фондового рынка.
Затем есть фоновая задача, которая случайным образом генерирует обновление цены и передает его клиентам с помощью SignalR.
UI — это чистый HTML + JavaScript + Tailwind CSS для стилизации
Потребовалось около ~15 секунд, чтобы добавить поддержку темного режима.
Я с нетерпением жду, как будет развиваться Cursor. Это однозначно самый простой способ быстро создать работающее ПО.
Но поддерживаемость — это то, о чем нужно позаботиться.
В целом, код не плохой. Он работает и читаем. Cursor может даже писать комментарии и рефакторить код.
Я получил лучшие результаты, используя Claude Sonnet 3.5.
А ты уже пробовал Cursor?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2👌1