Обновить
80.86

.NET *

Хаб со знаниями про .NET

Сначала показывать
Порог рейтинга
Уровень сложности

Паттерн Outbox для надежного обмена сообщениями в микросервисах

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2K

Работа с микросервисами достаточно сложная, как и с любой распределенной системой. Уменьшение количества возможных точек отказа должно быть одной из целей инженера, который проектирует распределенную систему. В этой статье мы постараемся достичь именно этого, используя паттерн Outbox.

Читать далее

Новости

Kaspirin: история о том, как ограничения помогли ускорить разработку

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров707

Бывало, открываешь код-ревью — и чувствуешь себя археологом. Каждый кусок кода — как артефакт из разных времен: тут блестит бронзовая монетка, там торчит бивень мамонта, а чуть дальше — отпечатки времен .NET 4, пережившие три рефакторинга. Все это чудом взаимодействует, но порой страшно тронуть — вдруг вся конструкция рассыплется.

Эта история знакома многим командам. Мы привыкли думать, что хороший фреймворк — это гибкий фреймворк. Что чем больше у него возможностей, тем лучше. И действительно: гибкость помогает выйти на рынок, быстрее выпустить первую версию, подстроиться под новые требования. Но в какой-то момент эта гибкость начинает мешать.

Мы в команде разработки пользовательского интерфейса поняли это, когда наш общий код перестал быть общим: его было слишком много, он жил своей жизнью, и никто уже не знал, что в нем есть и как оно работает. С этого начался Kaspirin — наш внутренний фреймворк, который мы создали не для расширения возможностей, а чтобы навести порядок и убрать лишнюю вариативность. Название придумалось само собой: смесь Kaspersky и aspirin — лекарство от головной боли, вызванной избыточной гибкостью.

Читать далее

Rustore. Делаем пуши для MAUI

Уровень сложностиСложный
Время на прочтение15 мин
Количество просмотров628

Зарегистрировавшись в РуСторе быстренько перешёл в раздел для разработчиков и глянул на список доступных SDK. Но где же тут поддержка MAUI?

Давайте это исправим

Большое исследование C#-разработчиков

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров13K

Привет, Хабр. Я Катя Куваева, DevRel C#-разработчиков и инфраструктурных команд в Контуре, а это моя первая статья. 

Недавно ходила исследовать российское сообщество шарпистов, чтобы понять, чем оно живёт: как инженеры обмениваются знаниями, какие инструменты выбирают для развития, и какое место во всём этом занимают специализированные сообщества.

Сначала я провела 10 глубинных интервью, потом на их основе сформулировала несколько гипотез, которые нужно было проверить в количественном опросе на нескольких сотнях шарпистов. Самое интересное я собрала здесь, предлагаю посмотреть, что получилось 👇

Посмотрите, сколько разных эмоций я испытала за время общения с C#-разработчиками — и мы начинаем!

Читать далее

StructPadding

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров2.2K

Представляю свою библиотеку для обнуления байт выравнивания (padding) в unmanaged структурах.

Обнуление байт паддинга (padding) обеспечивает детерминированное состояние памяти, что критически важно для двоичного сравнения или вычисления хэша. И не менее важно при бинарной сериализации.

Читать далее

.NET 10 и C# 14: что поменяется в вашем коде

Уровень сложностиСредний
Время на прочтение9 мин
Количество просмотров7.4K

11 ноября 2025 вышел .NET 10 - очередной LTS-релиз, который будет жить до ноября 2028 года.
За это время многие проекты успеют мигрировать с .NET 6/8/9, а значит, нас ждут не только новые плюшки, но и немного боли от breaking changes.

В этой статье постарался собрать всё самое важное на русском языке чтобы за раз всё поднять.

Читать далее

Высоконагруженный reverse-proxy на YARP

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров2.4K

Привет, Хабр!

Сегодня поговорим о том, как на практике построить высоконагруженный обратный прокси-сервер на основе YARP, отличной библиотеки от Microsoft для .NET.

К статье

Расчет веса перевозимого груза самосвала

Уровень сложностиСложный
Время на прочтение21 мин
Количество просмотров703

Определение веса самосвала в движении нетривиальная задача, в которой технические ограничения, тип подвески, принцип действия датчиков и качество телематической цепочки играют ключевую роль. Датчики нагрузки фиксируют показатели с высоким уровнем шума: дорожные неровности, динамика подвески и особенности конструкции кузова приводят к тому, что каждое измерение — лишь приближение к реальному весу. Для корректного расчёта требуется система, которая не только усредняет данные, но и адаптируется к качеству входных сигналов. Перед использованием алгоритмов обработки данных необходимо понимать конструкцию техники, доступные методы взвешивания и природу шума, возникающего в процессе измерений.

Три основных типа карьерных самосвалов в России

В российской добывающей отрасли применяются три доминирующих класса машин, каждый из которых имеет собственные особенности измерения веса:

Классические карьерные самосвалы с жёсткой рамой, такие как БелАЗ 7555–7513 и CAT 777–793, оснащаются гидропневматической подвеской с датчиками давления. Эти датчики служат для оценки веса полезной нагрузки через измерение давления в подвеске. Однако их данные сильно зависят от темпа движения и амплитуды раскачки кузова, что создает шумы и неточности при динамическом движении. В качестве инженерного дополнения к измерению веса для таких моделей важно применять алгоритмы фильтрации и компенсации динамических колебаний, а также дополнять данные от датчиков давления весовыми сенсорами, установленными на шасси, для повышения точности оценки нагрузки и снижения влияния факторов движения. Для БелАЗ и CAT, реализованы высокоточные системы взвешивания с погрешностью в диапазоне до ±0,1–1%. Однако, из-за сильных вибраций и динамических пиков в процессе работы, количество данных с аномальными колебаниями составляет примерно 20–35%. Благодаря строгой конструкции и стабильной гидравлической и электронной схемам, такие системы обеспечивают относительно меньшую дисперсию и более предсказуемую точность, особенно при использовании фильтров и компенсационных алгоритмов.

Читать далее

Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам

Уровень сложностиСредний
Время на прочтение16 мин
Количество просмотров2.5K

Оптимизация обработки больших отчетов в .NET Core: от памяти к потокам

Отчёты росли, память заканчивалась. Пришлось отказаться от словарей в пользу потоковой сериализации JSON. Делюсь, как реализовал запись отчёта «на лету» и заставил.NET работать с гигабайтами данных без OutOfMemory.

Читать далее

Гарантированная доставка данных с помощью библиотеки Polly. Наш опыт взаимодействия с единым реестром интернет-рекламы

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров883

Во многих задачах опоздания или ошибки при передаче данных могут привести к неприятным последствиям, например к штрафам. Чтобы всего этого избежать, нужно использовать повторную отправку запросов (а что делать, если мы не можем переотправлять вечно?), настраивать метрики и логирование, а также действия при ошибках и сбоях. Все это обширные и интересные темы, и я начну с первой. 

Привет, Хабр! Меня зовут Андрей Алексеенко, я техлид оператора рекламных данных (ОРД) «МедиаСкаут». Особенность нашего продукта — взаимодействие с единым реестром интернет-рекламы (ЕРИР), у которого очень жесткие требования. По данным Роскомнадзора, с января по октябрь 2024 года было вынесено 376 постановлений о нарушениях в сфере интернет-рекламы на общую сумму 24,4 млн рублей.

Чтобы обеспечить переотправку запроса, мы используем библиотеку Polly. Она позволяет реализовать стратегию повторной отправки, и в этом материале я расскажу, как ее можно внедрить в свой продукт. 

Читать далее

Нажми и забудь: как автоматизировать рутину с PowerShell и GUI

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров9.3K

Нажми и забудь: как автоматизировать рутину с PowerShell и GUI

Это руководство пригодится всем, кто устал от рутины и хочет сделать свои PowerShell-скрипты доступными для коллег: системным администраторам, инженерам технической поддержки, DevOps-специалистам. Мы не только разберем основы создания кнопок и окон, но и ответим на ключевые вопросы: Как выбрать между WinForms и WPF, как избежать зависания интерфейса при выполнении долгих операций, и как удобно упаковать ваш скрипт в EXE или ярлык, чтобы любой сотрудник мог запустить его одним кликом.

Читать далее

Пошаговая настройка вывода логов из .NET-автотестов в ELK (Filebeat → Logstash → Elasticsearch → Kibana)

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров744

Всем привет, с вами Юрий Ковальчук, backend разработчик в ВебРайз. В этой статье разберем процесс вывода логов из приложения c автотестами на .NET в ELK с последующей визуализаций в Kibana.

ELK представляет из себя достаточно массивный инструмент для сбора, хранения, обработки и анализа логов, организации мониторингов. С наскоку разобраться с ним вряд ли получится, поэтому подготовили небольшую инструкцию с примерами - на базе простого теста прокинуть результаты до Kibana.

Читать далее

Время дорого стоит

Время на прочтение7 мин
Количество просмотров1.3K

У Контура более 10 тыс сотрудников и очень-очень много групповых встреч: около 30 тыс ежемесячно, мы считали. 👀 И бывает так, что нужно собрать сразу нескольких ребят в наиболее удобное для всех время. И начинается вот это вот: зайти на страницу человечка > посмотреть, какое время у него свободно > сопоставить со своим > проверить, а могут ли в это время остальные участники > обнаружить, что нет, и идти заново по кругу смотреть другие слоты, забывая, чё там у кого. 🙄 Да блин!

Мы решили остановить эту котовасию ✋🚫 и добавить в наш внутренний портал (в Контуре используется Стафф) рекомендацию свободных слотов для всех участников встречи. Рассказываем и показываем, как реализовали это.

Читать далее

Ближайшие события

Нечёткий поиск при пересечении множеств, или Как выжать все соки из Хэширования по сигнатуре

Уровень сложностиСредний
Время на прочтение23 мин
Количество просмотров1.2K

На просторах интернета легко можно найти материалы по реализации нечёткого поиска, в которых предполагается поиск одной строки в множестве строк M. Но что если возникнет необходимость реализовать нечёткое сравнение множества M₁ с множеством M₂? При классическом подходе нам придется выполнить M₁*M₂ сравнений - при линейном росте этих множеств, сложность задачи будет расти экспоненциально, в плане производительности это решение никуда не годиться!
В этой статье предложен вариант реализации ускоренного алгоритма для решения этой задачи. Теоретической новизны в проекте практически нет. Цели:
1 - Ознакомить с концепцией
2 - Дать конкретный пример интеграции в БД SQL(MSSQL)
3 - Ознакомить с возможностями на базе практической реализации

Читать далее

.NET 10 File-Based App: скрипты на C#?

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров7.1K

Вышедший .NET 10 заинтриговал возможностью запускать одиночные .cs файлы подобно скриптам - без проектов и решений. Я решил разобраться как это использовать, что внутри, и действительно ли C# теперь можно отнести к скриптовым языкам.

Читать далее

Что нового в .NET 10?

Уровень сложностиПростой
Время на прочтение6 мин
Количество просмотров18K

Дождались! .NET 10 вот-вот выйдет, а значит, самое время запускать фейерверки и отмечать юбилей любимой платформы! Ну и, само собой, ознакомимся с улучшениями JIT, расширением стандартной библиотеки, новыми возможностями SDK и с другими нововведениями в этой статье.

Читать далее

ASP.Net MVC vs Blazor: чья возьмет?

Уровень сложностиПростой
Время на прочтение5 мин
Количество просмотров3.9K

Привет! Сегодня разберем два подхода в ASP.NET. Blazor и классическую архитектуру MVC (Model-View-Controller). В отличие от обсуждений вроде «Java vs C++», эта тема менее спорная, но очень полезная для понимания современной веб-разработки на .NET.

Разобраться в нюансах

Книга «Современный C#. Разработка настольных, облачных, мобильных и веб-приложений». Работа со встроенными массивами

Время на прочтение9 мин
Количество просмотров6.9K

Приветствуем, Хабр.

Сегодня расскажем о нашей большой ноябрьской новинке – книге «Современный C#. Разработка настольных, облачных, мобильных и веб-приложений». Иэн Гриффитс продолжает многолетнюю работу над своим справочником по C#, и в новом издании осветил версию C#12. Вот ссылка на гитхаб-репозиторий с примерами к книге.

Более ранние издания этой книги (по версиям C#5 и C#8) уже выходили на русском языке, поэтому данное энциклопедическое пособие наверняка известно опытным .NET-разработчикам. Мы не претендуем на лавры «подхвативших упавшее знамя», но решили выпустить новую версию книги, так как она в подробностях затрагивает облачные и контейнерные аспекты работы.  Вот что появилось нового в этом издании по сравнению с версией «C# 8», опубликованной на русском языке в 2021 году:

Читать далее

Кастомные WPF-контролы, часть 2: ComboBox с фильтрацией содержимого, TimePicker, DateTimePicker

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров674

В этой статье я продолжу разбирать нюансы разработки WPF-контролов. В прошлой части мы рассмотрели, как сделать свой стиль для кнопки и переключателя. Сейчас разберем ComboBox и DateTimePicker.

Читать далее

Как мы заменили Loopback на универсальный .NET API и получили единый контракт для 90% эндпоинтов

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров3.1K

Миграция с устаревшего фреймворка — это не только боль, но и возможность "переизобрести" свой продукт. В результате мы не просто мигрировали, а создали универсальный шаблон, который позволяет добавлять новые эндпоинты для справочников буквально за 5 минут, обеспечивая им из коробки пагинацию, фильтрацию, сортировку и валидацию

Читать далее
1
23 ...

Вклад авторов