home.social

#net_core — Public Fediverse posts

Live and recent posts from across the Fediverse tagged #net_core, aggregated by home.social.

  1. 3 архитектурные ошибки в C#, из-за которых проект становится неуправляемым

    Когда проект молодой, писать «всё в одном классе» кажется быстрее. Создать отдельный интерфейс, вынести слой — это же лишняя минута! Но эта минута потом стоит часов: код невозможно покрыть тестами, замена ORM превращается в переписывание бизнес-логики, а новый человек в команде тратит день только на то, чтобы понять, где в методе заканчивается выборка из базы и начинается бизнес-правило. Эти антипаттерны не привязаны к версии фреймворка — они встречаются и в legacy на .NET Framework, и в современных проектах на .NET 8. Покажу три конкретных примера из реальных проектов — и как их исправить.

    habr.com/ru/articles/1012004/

    #c# #net_core #clean_architecture #антипаттерны #рефакторинг

  2. 3 архитектурные ошибки в C#, из-за которых проект становится неуправляемым

    Когда проект молодой, писать «всё в одном классе» кажется быстрее. Создать отдельный интерфейс, вынести слой — это же лишняя минута! Но эта минута потом стоит часов: код невозможно покрыть тестами, замена ORM превращается в переписывание бизнес-логики, а новый человек в команде тратит день только на то, чтобы понять, где в методе заканчивается выборка из базы и начинается бизнес-правило. Эти антипаттерны не привязаны к версии фреймворка — они встречаются и в legacy на .NET Framework, и в современных проектах на .NET 8. Покажу три конкретных примера из реальных проектов — и как их исправить.

    habr.com/ru/articles/1012004/

    #c# #net_core #clean_architecture #антипаттерны #рефакторинг

  3. 3 архитектурные ошибки в C#, из-за которых проект становится неуправляемым

    Когда проект молодой, писать «всё в одном классе» кажется быстрее. Создать отдельный интерфейс, вынести слой — это же лишняя минута! Но эта минута потом стоит часов: код невозможно покрыть тестами, замена ORM превращается в переписывание бизнес-логики, а новый человек в команде тратит день только на то, чтобы понять, где в методе заканчивается выборка из базы и начинается бизнес-правило. Эти антипаттерны не привязаны к версии фреймворка — они встречаются и в legacy на .NET Framework, и в современных проектах на .NET 8. Покажу три конкретных примера из реальных проектов — и как их исправить.

    habr.com/ru/articles/1012004/

    #c# #net_core #clean_architecture #антипаттерны #рефакторинг

  4. 3 архитектурные ошибки в C#, из-за которых проект становится неуправляемым

    Когда проект молодой, писать «всё в одном классе» кажется быстрее. Создать отдельный интерфейс, вынести слой — это же лишняя минута! Но эта минута потом стоит часов: код невозможно покрыть тестами, замена ORM превращается в переписывание бизнес-логики, а новый человек в команде тратит день только на то, чтобы понять, где в методе заканчивается выборка из базы и начинается бизнес-правило. Эти антипаттерны не привязаны к версии фреймворка — они встречаются и в legacy на .NET Framework, и в современных проектах на .NET 8. Покажу три конкретных примера из реальных проектов — и как их исправить.

    habr.com/ru/articles/1012004/

    #c# #net_core #clean_architecture #антипаттерны #рефакторинг

  5. Российские вузы продолжают выпускать толпы C# разработчиков для того чтобы что?

    Так вышло, что я одновременно учусь в государственном вузе, где обучение ведётся исключительно на C#, и работаю в крупной российской компании, где из-за санкционных рисков крайне не рекомендовано для старых и новых продуктов использовать технологии Microsoft, в том числе C#. В своей статье я провожу мини исследование вакансий C# и высказываю свои опасения по поводу сложившихся тенденций. Копнуть глубже

    habr.com/ru/articles/996024/

    #c# #net #net_core #найм #образование

  6. NuGet пакеты, которые ты не ожидал

    Меня зовут Степан, я C# профессионал уже более 7 лет на рынке и рассказываю об этом в Telegram каналe StepOne . В этой статье я покажу вам личную подборку 9ти underground NuGet пакетов. Вы наверняка не встречали их на работе, потому что они либо решают конкретную специальную задачу, либо решают известные задачи нестандартным подходом, либо ещё недостаточно известны на рынке РФ. Мне же удалось затащить их на прод и пощупать в бою! dotnet nuget add package "StepOne"

    habr.com/ru/articles/987268/

    #csharp #dotnet #nuget #nugetorg #nuget_package #library #github #open_source #microsoft #net_core

  7. NuGet пакеты, которые ты не ожидал

    Меня зовут Степан, я C# профессионал уже более 7 лет на рынке и рассказываю об этом в Telegram каналe StepOne . В этой статье я покажу вам личную подборку 9ти underground NuGet пакетов. Вы наверняка не встречали их на работе, потому что они либо решают конкретную специальную задачу, либо решают известные задачи нестандартным подходом, либо ещё недостаточно известны на рынке РФ. Мне же удалось затащить их на прод и пощупать в бою! dotnet nuget add package "StepOne"

    habr.com/ru/articles/987268/

    #csharp #dotnet #nuget #nugetorg #nuget_package #library #github #open_source #microsoft #net_core

  8. NuGet пакеты, которые ты не ожидал

    Меня зовут Степан, я C# профессионал уже более 7 лет на рынке и рассказываю об этом в Telegram каналe StepOne . В этой статье я покажу вам личную подборку 9ти underground NuGet пакетов. Вы наверняка не встречали их на работе, потому что они либо решают конкретную специальную задачу, либо решают известные задачи нестандартным подходом, либо ещё недостаточно известны на рынке РФ. Мне же удалось затащить их на прод и пощупать в бою! dotnet nuget add package "StepOne"

    habr.com/ru/articles/987268/

    #csharp #dotnet #nuget #nugetorg #nuget_package #library #github #open_source #microsoft #net_core

  9. NuGet пакеты, которые ты не ожидал

    Меня зовут Степан, я C# профессионал уже более 7 лет на рынке и рассказываю об этом в Telegram каналe StepOne . В этой статье я покажу вам личную подборку 9ти underground NuGet пакетов. Вы наверняка не встречали их на работе, потому что они либо решают конкретную специальную задачу, либо решают известные задачи нестандартным подходом, либо ещё недостаточно известны на рынке РФ. Мне же удалось затащить их на прод и пощупать в бою! dotnet nuget add package "StepOne"

    habr.com/ru/articles/987268/

    #csharp #dotnet #nuget #nugetorg #nuget_package #library #github #open_source #microsoft #net_core

  10. Запуск WPF-приложений в Docker: Экспериментальный подход с Wine

    Запуск WPF на Linux долгое время казался невозможным. Но благодаря связке Docker и Wine теперь это реальность. Рассказываю о своем практическом опыте, как заставить эксклюзивную технологию Microsoft работать вне Windows.

    habr.com/ru/articles/975138/

    #wpf #docker #c# #net #net_core #net_frameowrk #wine

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

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

    habr.com/ru/articles/969512/

    #net #net_core #csharp #csharpnet #c# #patterns #pattern #outbox #outboxпаттерн

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

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

    habr.com/ru/articles/969512/

    #net #net_core #csharp #csharpnet #c# #patterns #pattern #outbox #outboxпаттерн

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

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

    habr.com/ru/articles/969512/

    #net #net_core #csharp #csharpnet #c# #patterns #pattern #outbox #outboxпаттерн

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

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

    habr.com/ru/articles/969512/

    #net #net_core #csharp #csharpnet #c# #patterns #pattern #outbox #outboxпаттерн

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

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

    habr.com/ru/articles/966038/

    #elk #elasticsearch #logstash #kibana #filebeat #логирование #логи #net #net_core #c#

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

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

    habr.com/ru/articles/966038/

    #elk #elasticsearch #logstash #kibana #filebeat #логирование #логи #net #net_core #c#

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

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

    habr.com/ru/articles/966038/

    #elk #elasticsearch #logstash #kibana #filebeat #логирование #логи #net #net_core #c#

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

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

    habr.com/ru/articles/966038/

    #elk #elasticsearch #logstash #kibana #filebeat #логирование #логи #net #net_core #c#

  19. AssemblyLoadContext как архитектурный приём

    Привет, Хабр! Сегодня рассмотрим, как в .NET можно горячо подгружать, обновлять и выгружать сборки на лету. Речь пойдёт о AssemblyLoadContext , специальном механизме, благодаря которому мы можем создавать плагинные системы, изолировать зависимости и освобождать память, выгружая неиспользуемые сборки. Осваиваем ALC

    habr.com/ru/companies/otus/art

    #C# #AssemblyLoadContext #Динамическая_загрузка_сборок #net_core #плагинная_архитектура

  20. Struct IEnumerator

    Как-то было свободных полчаса перед встречей. Ни туда, ни сюда. Дай, думаю, сниму трейс с приложения. Вдруг что-то интересное найдётся. А в качестве бонуса: использование var может привести к багам? Узнаем в самом конце ;)

    habr.com/ru/companies/skbkontu

    #c# #net #optimization #enumerators #net_core #c#net #allocation #benchmark #tracing #trace

  21. ЭТП ГПБ и VESNA: цифровая трансформация закупок и ИТ-решений

    ЭТП ГПБ и VESNA — это синергия опыта и инноваций, создающая цифровую экосистему для бизнеса и государства. От автоматизации закупок до комплексных ИТ-решений — компании продолжают задавать тренды в цифровой трансформации, обеспечивая клиентов передовыми технологиями и надежными сервисами.

    habr.com/ru/companies/etpgpb_v

    #карьера_итспециалиста #работа_в_it #php #python #c# #net_core #vuejs #typescript #ruby_on_rails #golang

  22. Function splitting и чистый код

    Сложная и тяжелая статья с непропорционально простым выводом. Вспомним фон Неймана, затронем процессорный кеш, поговорим про регистры и компиляторы. Тем, кому не хочется погружаться в детали, достаточно прочитать только Введение и Выводы.

    habr.com/ru/companies/skbkontu

    #optimization #optimisation #assembler #c# #c#net #net #net_core #benchmark #method #low_level

  23. Создание контрола Avalonia/WPF для двухцветных векторных Bootstrap Icons

    В мире разработки приложений, будь то веб или десктоп, использование айконок является неотъемлемой частью пользовательского интерфейса. Векторные айконки предпочтительнее растровых, так как они масштабируются без потери качества. Одной из популярных коллекций векторных айконок является Bootstrap Icons , содержащая более 2000 готовых айконок. Хотя коллекция Bootstrap Icons доступна как npm-пакет bootstrap-icons и ориентирована на веб-разработку, её можно эффективно использовать в десктопных приложениях. Создадим с нуля контрол BootstrapIcon для удобного использования двухцветных векторных айконок в приложениях на Avalonia/WPF. Сами изображения, в основном берем из SVG-файлов библиотеки bootstrap-icons , отсюда и название нашего контрола. Туториал ориентирован на разработчиков, знакомых с Avalonia на базовом уровне. Основной упор в реализации контрола делается на Avalonia. Вариант для WPF, надеюсь, будет полезен для тех, кто переходит с WPF на Avalonia. 🔗 Полученные контролы BootstrapIcon для Avalonia и WPF с примерами использования размещены на GitHub . 👉 Продолжение следует... Планируется публикация ещё пары туториалов, в которых будет пошаговое руководство для создания главного меню приложения и аналога ToolBar с использованием BootstrapIcon .

    habr.com/ru/articles/904886/

    #bootstrap #bootstrapicons #net_core #pathicons #avalonia #wpf #nodejs #icons

  24. T-SQL в .NET Core EF Core: Гибридный подход к производительности и гибкости (Переосмысление с учетом обсуждения)

    Секретное оружие в .NET Core: Почему вы игнорируете мощь T-SQL? Ваши LINQ-запросы становятся громоздкими? Производительность упирается в потолок? Возможно, вы упускаете нечто важное. Эта статья — приглашение взглянуть на привычные инструменты под новым углом. Мы исследуем гибридный подход, который позволяет использовать весь потенциал Microsoft SQL Server, выходя за рамки стандартного взаимодействия через EF Core. Узнайте, как T-SQL может упростить сложные задачи, повысить производительность и сделать вашу архитектуру более гибкой. Это не просто технический трюк, а переосмысление роли СУБД в современном приложении. Готовы узнать, как использовать "скрытые" возможности MSSQL и почему это может быть именно то, что нужно вашему проекту? Читать об этом

    habr.com/ru/articles/914378/

    #net #net_core #ef #entityframework #linq #tsql #sql #mssql #mssqlserver #database_development

  25. Scalar вместо Swagger UI. Надо ли оно нам?

    С выходом .NET 9 пакет Swashbuckle.AspNetCore выпилили из шаблона Web API. Это означает, что при создании нового приложения ASP.NET Core Web API у нас больше нет привычного зеленого пользовательского интерфейса Swagger для тестирования endpoint-ов. В статье — краткий разбор, почему это произошло, и обзор альтернативы Scalar. Хочу разобраться

    habr.com/ru/articles/892508/

    #c# #net #net_9 #net_core #aspnet_core #aspnet_webapi #webapi_testing #swagger #scalar #openapi

  26. T-SQL в .NET Core EF Core: Гибридный подход к производительности и гибкости

    В мире .NET разработки, работа с базами данных – неотъемлемая часть. Entity Framework Core (EF Core) предоставляет удобный способ взаимодействия с данными, но при работе с SQL Server, особенно в сложных сценариях, LINQ запросы могут уступать в производительности и гибкости T-SQL. Статья рассматривает эту дилемму, предлагая гибридный подход. Мы погрузимся в проблему: как эффективно использовать мощь T-SQL, не отказываясь от преимуществ EF Core? Обсудим интеграцию T-SQL через Raw SQL, Views, UDF и Stored Procedures. Раскроем лучшие практики: разделение ответственности, оптимизацию запросов, безопасность и тестирование. Поймем, как сочетать удобство ORM с производительностью SQL Server, применяя Data-Driven Design и, при необходимости, Domain-Driven Design. Статья – руководство для .NET разработчиков, стремящихся к оптимальному балансу между производительностью, гибкостью и удобством разработки при работе с SQL Server и EF Core. Читать об этом

    habr.com/ru/articles/906522/

    #net #net_core #ef #entityframework #linq #tsql #sql #mssql #mssqlserver #database_development

  27. Отбитый дотнет

    Поскольку прошлая статья про «особенную» Java вызвала интерес, мы решили продолжить праздник. Настало время познакомить разработчиков С# с темной стороной любимой технологии — сегодня шатаем .NET!

    habr.com/ru/articles/895588/

    #c# #net #net_core #dotnet_core #дичь

  28. Отбитый дотнет

    Поскольку прошлая статья про «особенную» Java вызвала интерес, мы решили продолжить праздник. Настало время познакомить разработчиков С# с темной стороной любимой технологии — сегодня шатаем .NET!

    habr.com/ru/articles/895588/

    #c# #net #net_core #dotnet_core #дичь

  29. Отбитый дотнет

    Поскольку прошлая статья про «особенную» Java вызвала интерес, мы решили продолжить праздник. Настало время познакомить разработчиков С# с темной стороной любимой технологии — сегодня шатаем .NET!

    habr.com/ru/articles/895588/

    #c# #net #net_core #dotnet_core #дичь

  30. Отбитый дотнет

    Поскольку прошлая статья про «особенную» Java вызвала интерес, мы решили продолжить праздник. Настало время познакомить разработчиков С# с темной стороной любимой технологии — сегодня шатаем .NET!

    habr.com/ru/articles/895588/

    #c# #net #net_core #dotnet_core #дичь

  31. Порядок инициализации полей, статики и всего остального в C#

    Всем привет! Многие сталкиваются с трудностями на собеседовании на вопросе по типу "Расскажите о порядке иницализации в C#". Либо банально когда видят квиз, стараются вспомнить, а что там должно инициализироваться? Сегодня многие вспомнят, а кто-то узнает о порядке инициализации. Затронем не только классы, а также структуры, а точнее - ключевое слово default для них. Сделаем следующие классы и посмотрим, что будет при создании объекта B:

    habr.com/ru/articles/886692/

    #c# #net #net_core #struct #инициализация #поля

  32. Используем API Key и JWT Bearer аутентификацию вместе в ASP.NET Core Web API

    Я расскажу, как реализовать аутентификацию с использованием как JWT, так и API-ключа на одном и том же endpoint в ASP.NET Core Web API. Совмещение этих схем аутентификации полезно, если вы хотите использовать токен JWT Bearer для аутентификации пользователей и API-ключ для аутентификации между сервисами.

    habr.com/ru/articles/879424/

    #net #net_core #net_8 #net_9 #aspnet_core #authentication #authorization #jwt #api_key

  33. API Key Authentication в ASP.NET Core Web Api

    Недавно я столкнулся с задачей реализации аутентификации с использованием API Key в ASP.NET Core Web API. Хотя многие авторы рекомендуют использовать IAuthorizationFilter для этой цели, я обнаружил, что это не самый подходящий вариант. У меня есть более удачный подход, которым я хотел бы поделиться, включая примеры. Реализация была протестирована как в .NET 8, так и в .NET 9.

    habr.com/ru/articles/877302/

    #net #net_core #net_8 #net_9 #authentication #auth #authorization #api #api_key #aspnet

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

    Привет, Хабр! Меня зовут Кирилл Салихов, и я занимаюсь разработкой бизнес-приложений на платформе .NET в компании КРОК. При оптимизации процессов развертывания приложений возник вопрос о том, как эффективно хранить SQL-код, предназначенный для применения к базе данных, чтобы избежать необходимости в ручном труде и перемещении файлов. В короткой статье дам пошаговую инструкцию автоматического применения миграций к базе данных и управлению представлениями и процедурами, без всяких сиай/сиди… So what if I swagger?

    habr.com/ru/companies/croc/art

    #net_core #ef_core #entity_framework #sql_server #microsoft #entity_framework_core #migrations #database

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

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

    habr.com/ru/articles/871182/

    #C# #net_core #asp_net_core #vps #nginx #Ubuntu #web #разработка #деплой

  36. Служба Windows на C# в .Net 9 (Telegram.Bot)

    После перехода Microsoft с .NET Framework на .NET Core программирование на C# стало более увлекательным, хотя некоторые аспекты изменились. В частности, шаблон проекта Служба Windows (.NET Framework) создаёт класс, наследник от ServiceBase в пространстве имен System.ServiceProcess . Прогеру предлагается реализовать виртуальные методы базового класса OnStart и OnStop , которые задают действия, подлежащие выполнению при запуске (остановке) службы, что собственно и есть суть и назначение Службы Виндовз. Регистрация Службы в этом случае производится с помощью утилиты installUtil.exe , в .Net Core это делается утилитой SC.exe . Реализовать службу на .NET Core (в моем случае .NET 9) не сложнее, но по другому, шаблон проекта теперь называется Worker Service (Microsoft) , а рабочий класс наследуется от BackgroundService. В этой статье я подробно опишу процесс создания, публикации и регистрации Службы в .Net 9 на примере службы для Telegram-бота (сокращенно — Телебот). Почему бот? Во-первых, писать Телебота на C# — это действительно приятно. Во-вторых, чтобы обеспечить его круглосуточную доступность на сервере под управлением Windows, логично использовать именно Службу Windows , которая будет поддерживать его работу в фоновом режиме и запускаться может сама при перезагрузке сервера. В заключении рассмотрим как добавить логирование в стандартный виндовый EventLog и немного обсудим функционал самого Телебота.

    habr.com/ru/articles/863770/

    #служба_windows #телеграмбот #eventlog #net_core #net_9

  37. [Перевод] Практический подход к EF Core с использованием скалярных функций

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

    habr.com/ru/articles/854106/

    #net_core #c# #tsql #entityframeworkcore #functions

  38. Компиляция математического выражение из строки динамически во время выполнения в C# (.NET)

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

    habr.com/ru/articles/842046/

    #математика #net #net_core #c# #c#net #algorithms #eval #math #mathematics #компиляция