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

.NET *

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

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

Мой путь к быстрой и понятной архитектуре, или зачем я выбросил агрегаты из DDD?

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

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

В начале хочется сказать, что предложенная концепция не пытается претендовать на роль какой-то панацеи и уж тем более на роль единственно верной, она так же имеет рад своих преимуществ и недостатков. Это скорее попытка переосмыслить опыт, который накопился у меня за несколько лет проектировании корпоративных систем. Материал изложен в виде вопросов и попыток на них ответить.

Читать далее

Новости

Как разработчик попытался в геймдев

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

У меня за плечами несколько лет работы в IT, но в сферах, связанных с геймдевом, я никогда не работал. Но это не помешало мне поучаствовать в Tech Jam от Facepunch для ещё не вышедшей s&box. О том, как это было (и обо всех провалах в процессе), я и решил написать.

Читать далее

Простое решение для автоматизации контроля за состоянием базы данных с использованием EF Core

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

Привет, Хабр! Меня зовут Кирилл Салихов, и я занимаюсь разработкой бизнес-приложений на платформе .NET в компании КРОК. При оптимизации процессов развертывания приложений возник вопрос о том, как эффективно хранить SQL-код, предназначенный для применения к базе данных, чтобы избежать необходимости в ручном труде и перемещении файлов.

В короткой статье дам пошаговую инструкцию автоматического применения миграций к базе данных и управлению представлениями и процедурами, без всяких сиай/сиди…

So what if I swagger?

Новые возможности .NET 9: новые типы и семантика блокировок в C# 13

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

В ноябре 2024 года с выходом .NET 9 и обновлением C# до версии 13 мы получили интересные нововведения, которые касаются типов данных и семантики блокировок. Каждый крупный релиз .NET сопровождается новыми инструментами, которые улучшают производительность, безопасность и удобство разработки. В C# 13 такой новинкой стал System.Threading.Lock. Это попытка сделать многопоточность чуть менее токсичной и чуть более предсказуемой.

Читать далее

Ловушка бесконечно ленивого бассейна

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

Нечасто встречаются истории, когда причины и следствия сплетаются в один клубок, связывающий проблемы и с памятью, и с CPU, и с тредпулом. А инструментально затрагивающие и пулы объектов, и Lazy, и работу с асинхронностью, и длительные вычисления. А ещё реже встречаются те, где всё это распутывается и исправляется буквально несколькими строчками кода.

Читать далее

Простая локализация .NET приложений с помощью Slang.Net

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

В статье я хочу поделиться знаниями о том, как быстро и легко локализовать .NET-приложение с помощью собственного решения для локализации — Slang.Net.

Читать далее

WYSIWYG UI дизайнер для VS Code

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

Наш WYSIWYG UI XAML-редактор теперь доступен и в Visual Studio Code для OpenSilver-приложений. Карточка бургера на скриншоте полностью сделана через редактор.

Расширение можно установить из Visual Studio Marketplace абсолютно бесплатно.

Читать далее

.NET Digest #5

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

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

Читать далее

Реальная эффективность Qwen 2.5 Coder против ChatGPT (или можно ли сэкономить 20$?)

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

Можно ли сэкономить 20$ и заменить ChatGPT локальным Qwen 2.5 Coder? Попробуем проверить логику моделей!

Читать далее

Test Doubles в интеграционных тестах на ASP.NET Core

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

Интеграционные тесты (англ. Integration tests) занимают промежуточное положение между модульными и сквозными. Они отлично подходят на роль приёмочных тестов backend-сервиса.

Но что делать, если тестируемый сервис активно использует внешние API? Заменять их тестовыми дублёрами.

В статье мы разберём конкретный пример на .NET 8 и ASP NET Core и напишем для него приёмочные тесты.

Читать далее

Гибридное кэширование в ASP.NET Core

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

В .NET 9 появилась новая библиотека для кэширования — HybridCache. В статье расскажу, что это такое, какие задачи решает, разберу примеры использования и особенности внутреннего устройства.

Хочу разобраться

Увеличение растровых изображений – какой максимальной схожести с оригиналом мы можем добиться и как? А можно побыстрее?

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

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

Апскейл на пределе: вперёд!

Многопользовательская архитектура в ASP.NET: Опыт разработки

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

Несколько месяцев назад я начал разрабатывать бэкэнд проекта на ASP.NET API. Проект представлял собой сервис для бронирования отелей (Airbnb послужил основным референсом). Опыта работы с ASP.NET у меня было немного: многому пришлось обучаться в процессе, а решение некоторых проблем занимало часы, а то и дни.

В этой статье я поделюсь полезными наработками и постараюсь ответить на вопросы, которые мне самому было сложно найти в Интернете

Читать далее

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

27 марта
Deckhouse Conf 2025
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Типология Test Doubles

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

Тестовые дублёры (англ. Test Doubles) — это объекты или модули, используемые в автоматизированных тестах в качестве замены некоторых частей тестируемой системы (англ. SUT, System Under Test).

В этой статье мы обсудим пять типов тестовых дублёров: Dummy, Stub, Spy, Mock, Fake.

Читать далее

MassTransit и очередь в базе данных

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

MassTransit одна из самых популярных библиотек для построения асинхронного взаимодействия между сервисами в среде dotnet. Она активно развивается уже долгие годы, до сих пор остается под открытой лицензией и каждую версию добавляет новые фичи. Я построил уже не одно решение на ней и могу сказать, что по поддержке, качеству кодовой базы и “взрослости”, это один из лучших примеров в нашем dotnet сообществе.

Недавно в новой версии MassTransit вышла относительно свежая фича, SQL Transport, которая позволяет использовать базу данных вместо традиционных брокеров сообщений, при этом оставляя доступными тонну фичей работающих на традиционных брокерах. Ретраи, ределивери, роутинг, все продолжает работать. Такая обратная совместимость в теории позволяет легко заменять несложные конфигурации RabbitMQ на SQL Transport и обратно.

Я попробовал эту фичу, посмотрел на нее с разных сторон и сегодня хочу поделиться своими впечатлениями.

Читать далее

Приложение для структурирования информации

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

Недавно написал для себя приложение для структурирования информации, которое позволяет организовать её в древовидном виде. Иначе говоря, можно создавать множество деревьев. Так, на мой взгляд, можно структурировать в удобном виде что угодно. И не надо распихивать ничего по блокнотам или мучить обсидиан. Я долгое время структурировал данные через него, но реально дать структуру информации он не позволяет. Там есть текст, есть ссылки на другой текст, есть mermaid. Можно подсчитывать ассоциации и очаровываться линиями. И для кого-то этого хватает. Но структурировать данные от простого к подробностям, чтобы удобно объять всю информацию и работать с ней, и главное, чтобы было этот удобно визуализировать – такого там нет, да и нет подобных приложений.

Поскольку я практически не писал приложений под десктоп, но знаю немного Blazor, то решил написать на нем десктоп приложение. Да и redux подобный фреймворк Fluxor, на мой взгляд, гораздо удобнее того, что есть для десктопа. Вместе с UI фреймворком Radzen получилось вполне сносно. По правде говоря, его пришлось форкнуть и доработать ресайз панели.

Шаблон приложения для такого рода интеграции под десктоп это .NET MAUI Blazor Hybrid app...

Читать далее

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере и настройка доступа к ним по доменному имени 3-го уровня

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

Деплоймент нескольких ASP.Net Core-приложений на VPS сервере с Ubuntu и настройка доступа к ним по доменному имени 3-го уровня.

Читать далее

Рыбка-советник для chess.com и lichess.org

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

Очень люблю играть в шахматы. Давно играю десятиминутки на chess.com. Но мой предел — в районе рейтинга 1500. И все потому, что много «зеваю». Вот если ли бы рядом был советчик, уберегающий от глупых зевков... А что, если прикрутить шахматный движок, чтобы он подсказывал в трудной позиции? Это нечестная игра, но с ботами любого рейтинга в качестве обучения — не возбраняется. То есть нужно поставить движок, как-то прочитать шахматную позицию из браузера, передать ее движку, получить ответ за разумное время.

Давайте разбираться

Метод Contains коллекций в Entity Framework для SQL Server

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

Долгое время в метод Contains(), который используется в Entity Framework для фильтрации данных по списку значений, не вносили изменения. До выхода Entity Framework 8 коллекция с этим методом внутри оператора запросов where LINQ транслировалась в значения в виде констант внутри оператора IN для SQL. Если количество элементов равно одному, то преобразование происходило в выражение с оператором ‘=’ на стороне MS SQL Server. Аналогично транслируется и метод расширения Where() LINQ.

Использование в EF8 функции OPENJSON устраняет часть проблем с кэшем планов запросов для SQL Server, но не применимо к старым версиям (compatibility level) баз данных. Да и оптимальность генерируемого ею кода в некоторых случаях вызывает сомнения.

В недавно вышедшем Entity Framework 9 добавили больше настроек для возможности транслирования метода Contains() коллекций как с помощью OPENJSON, так и «по-старому» — в виде констант.

Читать далее

Новое в Pure.DI к концу 2024 года

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

Pure.DI — это не фреймворк или библиотека, а генератор исходного кода C# для создания композиций объектов в парадигме чистого DI. Последняя статья о Pure.DI выходила в апреле 2024 года. С тех пор прошло больше чем пол года, за это время основные усилия были сосредоточены на исправлении ошибок, увеличении производительности генерации кода и на удобстве использования. Давайте пройдемся по новым возможностям.

К новым возможностям
1
23 ...

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

Работа

.NET разработчик
46 вакансий