Нет, вы не проводите "интеграционное" тестирование с использованием базы данных в памяти. 🧠
Я видел много примеров, использующих in-memory провайдер EF Core.
Это не интеграционный тест, потому что базы данных нет.
Более того, это не позволит обнаружить ошибки в LINQ или SQL.
Вот лучший подход:
🟣 Используйте реальную базу данных или контейнер Docker
🟣 Подключитесь к этой базе данных из ваших тестов
🟣 Пишите полноценные интеграционные тесты, которые имеют ценность
Если вы хотите использовать Docker, я настоятельно рекомендую Testcontainers.
Он позволяет вам определять временные контейнеры в ваших тестах.
🔜 Читать подробнее: клик
👉 @KodBlog | #ресурсы
Я видел много примеров, использующих in-memory провайдер EF Core.
Это не интеграционный тест, потому что базы данных нет.
Более того, это не позволит обнаружить ошибки в LINQ или SQL.
Вот лучший подход:
Если вы хотите использовать Docker, я настоятельно рекомендую Testcontainers.
Он позволяет вам определять временные контейнеры в ваших тестах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥2
Media is too big
VIEW IN TELEGRAM
Процесс создания приложения на платформе .NET MAUI для Windows, способного сканировать штрихкоды с помощью камеры. 🔥
📝 Автор демонстрирует, как использовать Windows Media API для захвата видеопотока с USB-камеры и интеграции с Dynamsoft Barcode Reader для распознавания штрихкодов. Проект включает две страницы: одну для загрузки изображений и другую для работы с живым видеопотоком с камеры, отображая результаты сканирования над изображением или видео.
⏩ Читать:
https://dev.to/yushulx/developing-a-camera-based-barcode-scanner-in-net-maui-for-windows-desktop-1aei
👉 @KodBlog | #cтатья
https://dev.to/yushulx/developing-a-camera-based-barcode-scanner-in-net-maui-for-windows-desktop-1aei
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤6
Нашёл список активных проектов, находящихся под эгидой .NET Foundation 🔥
.NET Foundation — независимая некоммерческая организация, поддерживающая развитие и сотрудничество в области open-source проектов на платформе .NET.
Среди этих проектов можно найти различные инструменты, библиотеки и фреймворки, способствующие развитию экосистемы .NET.
⏩ Ознакомиться: клик
👉 @KodBlog | #ресурсы
.NET Foundation — независимая некоммерческая организация, поддерживающая развитие и сотрудничество в области open-source проектов на платформе .NET.
Среди этих проектов можно найти различные инструменты, библиотеки и фреймворки, способствующие развитию экосистемы .NET.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥1
Бесплатная, с открытым исходным кодом CRM для разработчиков .NET и солопредпринимателей! ❤️
Этот проект построен с использованием технологий, таких как
⏩ Ознакомиться: клик
👉 @KodBlog | #ресурсы
Этот проект построен с использованием технологий, таких как
ASP.NET Core 9, Clean Architecture, CQRS и MediatR. Он предоставляет возможности для управления клиентами, кампаниями и командами без дополнительных сборов, а также включает полный RESTful API.Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤3🔥1
В версии 9 библиотеки
Этот атрибут расширяет возможности работы с перечислениями (enum) при преобразовании их в JSON и обратно.
👉 @KodBlog
System.Text.Json, которая является стандартным инструментом для сериализации и десериализации JSON в .NET, был добавлен новый атрибут под названием JsonStringEnumMemberName. Этот атрибут расширяет возможности работы с перечислениями (enum) при преобразовании их в JSON и обратно.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10👍4❤2
Базовые рекомендации по организации модульного тестирования в C#.
Автор отвечает на вопросы, касающиеся размещения тестов, их компиляции и способов запуска.
Тесты должны находиться в отдельном проекте с суффиксом "Tests" и иметь ту же структуру папок, что и основной код. Они не включаются в релизную сборку и запускаются через IDE, командную строку (dotnet test) или CI/CD-инструменты (GitHub Actions, Jenkins).❤️
⏩ Читать:
https://dev.to/canro91/essential-first-steps-for-unit-testing-in-c-2m73
👉 @KodBlog | #cтатья
Автор отвечает на вопросы, касающиеся размещения тестов, их компиляции и способов запуска.
Тесты должны находиться в отдельном проекте с суффиксом "Tests" и иметь ту же структуру папок, что и основной код. Они не включаются в релизную сборку и запускаются через IDE, командную строку (dotnet test) или CI/CD-инструменты (GitHub Actions, Jenkins).
https://dev.to/canro91/essential-first-steps-for-unit-testing-in-c-2m73
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🙏2
Что такое OpenTelemetry? 🤔
И почему это нужно для каждого проекта?👇
OpenTelemetry — это фреймворк с открытым исходным кодом для наблюдаемости, предоставляющий инструменты, API и SDK для генерации, сбора и экспорта телеметрических данных, таких как трассировки, метрики и логи.
В контексте .NET это кроссплатформенное и независимое от поставщиков решение, интегрируемое в приложения .NET для мониторинга и диагностики их производительности и состояния.
OpenTelemetry в .NET включает:
🟣 Tracing (трассировка) — отслеживает поток запросов между сервисами и компонентами (например, распределённая трассировка).
🟣 Metrics (метрики) — собирает статистику о производительности и работе системы (например, количество запросов, загрузка CPU, задержки).
🟣 Logging (логирование) — предоставляет структурированные логи для отладки и аудита (стандартизируется как часть фреймворка).
Представьте OpenTelemetry как «Google Maps» для внутренних процессов вашего приложения.
Оно помогает понять структуру вашего ПО — как запросы проходят между различными частями системы, сколько времени это занимает и где происходят сбои.
При разработке приложения, особенно состоящего из множества компонентов (например, микросервисов или облачных систем), бывает сложно определить:
• Где происходят замедления.
• Что вызывает ошибки.
• Как взаимодействуют различные части вашего приложения.
⏩ Реализуйте его с помощью Aspire: https://thecodeman.net/posts/getting-started-with-opentelemetry?utm_source=x
👉 @KodBlog | #ресурсы
И почему это нужно для каждого проекта?
OpenTelemetry — это фреймворк с открытым исходным кодом для наблюдаемости, предоставляющий инструменты, API и SDK для генерации, сбора и экспорта телеметрических данных, таких как трассировки, метрики и логи.
В контексте .NET это кроссплатформенное и независимое от поставщиков решение, интегрируемое в приложения .NET для мониторинга и диагностики их производительности и состояния.
OpenTelemetry в .NET включает:
Представьте OpenTelemetry как «Google Maps» для внутренних процессов вашего приложения.
Оно помогает понять структуру вашего ПО — как запросы проходят между различными частями системы, сколько времени это занимает и где происходят сбои.
При разработке приложения, особенно состоящего из множества компонентов (например, микросервисов или облачных систем), бывает сложно определить:
• Где происходят замедления.
• Что вызывает ошибки.
• Как взаимодействуют различные части вашего приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍5❤🔥2
Не реализуйте собственную аутентификацию, если вы разработчик на .NET.
ASPNET Core Identity может быть всем, что вам нужно.
Identity предоставляет вам:
🟡 Аутентификацию
🟡 Управление пользователями
🟡 Вход, выход, обновление токенов
🟡 Роли и утверждения для авторизации
🟡 Внешние провайдеры аутентификации (Google, Meta)
Это легко настроить в .NET приложении.
Вы полностью контролируете все данные в своей базе данных.
Identity имеет всё, что нужно для простых приложений.
Один недостаток — его сложно использовать в микросервисах.😭
Но это можно решить с помощью собственной реализации JWT.
Система аутентификации в .NET достаточно гибкая.
🔜 Вот как можно реализовать RBAC: клик
👉 @KodBlog | #ресурсы
ASPNET Core Identity может быть всем, что вам нужно.
Identity предоставляет вам:
Это легко настроить в .NET приложении.
Вы полностью контролируете все данные в своей базе данных.
Identity имеет всё, что нужно для простых приложений.
Один недостаток — его сложно использовать в микросервисах.
Но это можно решить с помощью собственной реализации JWT.
Система аутентификации в .NET достаточно гибкая.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🤨5❤3🍓2
Пошаговое руководство по разработке бэкенда на C#
🟡 Освоение основ
🟡 Углубление в объектно-ориентированное программирование (ООП)
🟡 Изучение экосистемы .NET
🟡 Погружение в
🟡 Работа с базами данных
🟡 Тестирование и лучшие практики
🟡 Практический опыт через проекты
🟡 Изучение продвинутых тем и постоянное обучение
Следуя этому плану, разработчики смогут последовательно развивать свои навыки в C# и серверной разработке.
⏩ Читать:
https://dev.to/2ndmurphy/mastering-c-for-backend-development-a-step-by-step-guide-32gc
👉 @KodBlog | #cтатья
ASP.NET Core для веб-разработкиСледуя этому плану, разработчики смогут последовательно развивать свои навыки в C# и серверной разработке.
https://dev.to/2ndmurphy/mastering-c-for-backend-development-a-step-by-step-guide-32gc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11❤2👨💻2
Версия 2.3.0 шаблонов Auth0 для .NET уже вышла! ❤️
🟡 Добавлена поддержка .NET 9.0
🟡 Minimal API теперь используется по умолчанию для Web API
🟡 Добавлена поддержка параметра 'controllers' в Web API
🟡 Исправлена ошибка выхода из системы в шаблонах Blazor
Теперь можно использовать актуальные шаблоны с последними возможностями .NET!
⏩ Ознакомиться: https://github.com/auth0/auth0-dotnet-templates
👉 @KodBlog | #ресурсы
Теперь можно использовать актуальные шаблоны с последними возможностями .NET!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥2
Устали организовывать свой проект через слои? 😵
Архитектура Vertical Slice (VSA) приходит на помощь.
Вместо горизонтальных слоев, VSA организует код по функциям (use case).
Почему это важно?👇
Это упрощает разработку ваших приложений.
VSA дает вам:
🟡 Улучшенную когезию
🟡 Более простое обслуживание
🟡 Сниженную сложность
🟡 Фокус на бизнес-логике
Вот как вы можете начать: читать
👉 @KodBlog | #ресурсы
Архитектура Vertical Slice (VSA) приходит на помощь.
Вместо горизонтальных слоев, VSA организует код по функциям (use case).
Почему это важно?
Это упрощает разработку ваших приложений.
VSA дает вам:
Вот как вы можете начать: читать
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2
Media is too big
VIEW IN TELEGRAM
Как запустить проект? ASP.NET Core + React + NGINX + Docker Compose
Видео объясняет процесс создания и развертывания веб-приложения с использованием API на FastAPI, клиентской части на React и проксирования через Nginx, с контейнеризацией всех компонентов в Docker.
📲 Cмотреть источник: тут
👉 @KodBlog | #видео
Видео объясняет процесс создания и развертывания веб-приложения с использованием API на FastAPI, клиентской части на React и проксирования через Nginx, с контейнеризацией всех компонентов в Docker.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤4🔥1
Мой простой подход к созданию отчетов: конвертация HTML → PDF
Это просто и хорошо работает во многих случаях.
Моя любимая библиотека для этого – IronPDF.
Она платная, поэтому, если вам нужен бесплатный вариант, обратите внимание на Puppeteer Sharp.
Но в чем идея использования HTML-шаблона?🤔
Вы получаете больше контроля над форматированием документа. Можно использовать CSS для стилизации HTML-разметки, и эти стили будут применены при экспорте в PDF.
Я использовал этот подход с MVC views в нескольких проектах и получил отличные результаты.
Вот как легко создавать PDF в .NET: тык
👉 @KodBlog | #ресурсы
Это просто и хорошо работает во многих случаях.
Моя любимая библиотека для этого – IronPDF.
Она платная, поэтому, если вам нужен бесплатный вариант, обратите внимание на Puppeteer Sharp.
Но в чем идея использования HTML-шаблона?
Вы получаете больше контроля над форматированием документа. Можно использовать CSS для стилизации HTML-разметки, и эти стили будут применены при экспорте в PDF.
Я использовал этот подход с MVC views в нескольких проектах и получил отличные результаты.
Вот как легко создавать PDF в .NET: тык
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4
Это случилось
.NET 9 вводит CreateUnboundedPrioritized в System.Threading.Channels!😇
В отличие от каналов FIFO, он сначала извлекает элемент с наивысшим приоритетом, используя
Вы используете каналы? Для каких случаев?
👉 @KodBlog
.NET 9 вводит CreateUnboundedPrioritized в System.Threading.Channels!
В отличие от каналов FIFO, он сначала извлекает элемент с наивысшим приоритетом, используя
Comparer<T>.Default или пользовательский IComparer<T>.Вы используете каналы? Для каких случаев?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤5🔥3
Изучите SignalR в .NET Core для общения в чате в реальном времени.
Держи статью в которой рассматриваются основы SignalR, создание хаба для чата, работа с группами для сообщений, а также использование строго типизированных хабов.👋
Также затрагиваются вопросы масштабирования и использования IHubContext для отправки событий. Приводятся примеры кода для каждой стадии.
⏩ Читать:
https://dev.to/saurabhkhade/signalr-real-time-communication-in-net-core-26hb
👉 @KodBlog | #cтатья
Держи статью в которой рассматриваются основы SignalR, создание хаба для чата, работа с группами для сообщений, а также использование строго типизированных хабов.
Также затрагиваются вопросы масштабирования и использования IHubContext для отправки событий. Приводятся примеры кода для каждой стадии.
https://dev.to/saurabhkhade/signalr-real-time-communication-in-net-core-26hb
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6🔥1
Ключевые слова, которые стоит запомнить в C#:
👉 @KodBlog | #ресурсы
🟡 sealed: Предотвращает наследование класса.🟡 abstract: Определяет класс, который не может быть инстанцирован и должен быть унаследован, или метод, который должен быть реализован в производных классах.🟡 override: Предоставляет новую реализацию для унаследованного метода в производном классе.🟡 virtual: Позволяет переопределить метод или свойство в производном классе.🟡 static: Объявляет член, который принадлежит самому типу, а не конкретному объекту, или класс, который не может быть инстанцирован.🟡 const: Определяет константу времени компиляции.🟡 readonly: Объявляет поле, которое может быть присвоено только во время инициализации или в конструкторе.🟡 async: Помечает метод как асинхронный и позволяет использовать ключевое слово await внутри него.🟡 var: Определяет тип переменной на основе выражения с правой стороны.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤6🔥4
Media is too big
VIEW IN TELEGRAM
MediatR + CQRS - использование паттернов для разделения запросов и модификаций
В видео объясняются паттерны проектирования "Медиатор" и "CQRS" (разделение операций чтения и записи), а также их использование в разработке веб-приложения для заметок с помощью библиотеки MediatR.
📲 Cмотреть источник: тут
👉 @KodBlog | #видео
В видео объясняются паттерны проектирования "Медиатор" и "CQRS" (разделение операций чтения и записи), а также их использование в разработке веб-приложения для заметок с помощью библиотеки MediatR.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥3