C# (C Sharp) programming
18.1K subscribers
978 photos
52 videos
8 files
781 links
По всем вопросам- @notxxx1

Реестр РКН: https://clck.ru/3Fk3kb

#VRHSZ
Download Telegram
⚡️ Обзор лучшиех новых функций в Microsoft .NET 8 от

https://infoworld.com/article/3711422/the-best-new-features-in-microsoft-net-8.html #aspnetcore

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥Первая предварительная версия dotnet 9 уже здесь, наряду с обновлениями для #aspnetcore, #dotnetmaui, #efcore и других!

Почитать
больше о предварительной версии 1 и присоединяйтесь к обсуждению на GitHub Discussions: https://github.com/dotnet/core/discussions/9167

#dotnet #csharp

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🎊 Сегодня были выпущены новые версии .NET 9.0.1 и 8.0.12

https://github.com/dotnet/announcements/issues/341

#dotnet #aspnetcore #efcore #csharp

@csharp_ci
​Photino.Blazor.net9-template — это шаблон проекта, разработанный для создания десктопных приложений с использованием Photino.Blazor на платформе .NET 9. ​

Основные характеристики проекта:

Интеграция с MudBlazor: Шаблон включает руководство по добавлению поддержки MudBlazor, популярного UI-фреймворка для Blazor, что позволяет создавать современные и адаптивные пользовательские интерфейсы. ​
GitHub

Пошаговая настройка: Репозиторий предоставляет детальные инструкции по созданию и настройке проекта, включая установку необходимых пакетов, конфигурацию файлов и интеграцию с MudBlazor. ​


Совместимость с .NET 9: Шаблон разработан специально для работы с последней версией платформы .NET, обеспечивая доступ к новейшим функциям и улучшениям. ​


Цель проекта: Облегчить разработчикам процесс создания кроссплатформенных десктопных приложений, используя Blazor и Photino, с возможностью интеграции современных UI-компонентов через MudBlazor.

🔗 Github

#aspnetcore #blazor
🏗️ Value Objects и DDD в ASP.NET Core — подробный гайд от Telerik

В новом блоге Telerik разбирается ключевой принцип Domain-Driven Design (DDD)Value Objects — и как грамотно реализовать их в ASP.NET Core.

📌 Что такое Value Object:
• Объект без идентичности
• Сравнивается по значению, а не по ссылке
• Иммутабельный по своей сути
• Является частью бизнес-логики (например, Money, Email, `Address`)

🛠 В статье:
• Почему использовать Value Objects вместо простых типов
• Как реализовать их в .NET (структура, инварианты, валидация)
• Примеры кода, включая record, struct и кастомные value equality
• Как внедрять их в Entity Framework Core без боли

💡 Отличный материал для тех, кто хочет строить чистую доменную модель и развивать архитектурное мышление.

🔗 Читай статью:
https://www.telerik.com/blogs/domain-driven-design-principles-value-objects-aspnet-core

#DDD #ASPNetCore #ValueObjects #SoftwareArchitecture #Telerik
⚙️ Background Jobs в ASP.NET Core — просто и эффективно

Хочешь запускать периодические задачи в фоне? В ASP.NET Core это можно реализовать с помощью BackgroundService и PeriodicTimer. Ни Hangfire, ни Quartz не нужны, если всё просто.

🧱 Основные шаги:

1. Включаем конкурентный запуск/остановку сервисов:

builder.Services.Configure<HostOptions>(o =>
{
o.ServicesStartConcurrently = true;
o.ServicesStopConcurrently = true;
});


2. 🌀 Реализуем фоновую задачу:

public class PeriodicBackgroundTask : BackgroundService
{
private readonly TimeSpan _period = TimeSpan.FromSeconds(5);
private readonly ILogger<PeriodicBackgroundTask> _logger;

public PeriodicBackgroundTask(ILogger<PeriodicBackgroundTask> logger)
{
_logger = logger;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
using PeriodicTimer timer = new PeriodicTimer(_period);
while (!stoppingToken.IsCancellationRequested &&
await timer.WaitForNextTickAsync(stoppingToken))
{
_logger.LogInformation("Executing PeriodicBackgroundTask");
}
}
}


📌 Особенности:
- BackgroundService — стандартный способ запускать фоновые задачи в ASP.NET Core
- PeriodicTimer — простой способ повторять с задержкой
- Встроенный контроль остановки через CancellationToken

💡 Подходит для:
• Регулярных проверок
• Очистки кэша
• Периодических sync-задач

#aspnetcore #dotnet #backgroundjobs #csharp #dev
🔥 Одна из дучших фишек в ASP.NET Core 10 — Server-Sent Events (SSE)

Теперь можно реализовать real-time обновления без SignalR и WebSockets. SSE — это лёгкий способ стримить данные с сервера на клиент *в одну сторону*, идеально для простых задач.

📡 Зачем это нужно?

В .NET-приложениях часто нужно передавать обновления с backend на frontend. Есть несколько способов:

• Polling — клиент всё время спрашивает: «что нового?» (нагружает сервер)
• SignalR — bidirectional WebSockets, но избыточно для простых стримов
• SSE — простой и нативный способ отправлять обновления *односторонне*

Теперь SSE доступен прямо в .NET 10 (preview) и легко интегрируется с Minimal APIs.

🧠 Что сегодня показали:
— Как работает SSE и чем отличается от SignalR
— Как реализовать SSE endpoint с Minimal API
— Как тестировать SSE-поток из IDE (HTTP request file)
— Как собрать frontend для отображения стриминга
— И как создать *живой рынок акций* на SSE — от бэкенда до клиента

👨‍💻 Отличная альтернатива, если нужно real-time, но без всей сложности WebSockets.

#dotnet #aspnetcore #SSE #ServerSentEvents #SignalR #realtime #webdev
⚙️ 3 способа определить Middleware в ASP.NET Core

Middleware - это компоненты, которые добавляют дополнительную логику до или после обработки HTTP-запроса.

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

🔧 В ASP.NET Core уже встроено множество middleware (Static Files, Routing, Authentication и др.),
но вы можете создавать и свои собственные.

Вот три основных способа это сделать:
- Request Delegates - определяете логику прямо в app.Use(...)
- Convention-based - создаёте класс с методом Invoke или InvokeAsync
- Factory-based - используете фабрику с внедрением зависимостей (DI)

🧠 Подробный разбор и примеры кода - в статье


#dotnet #aspnetcore #backend #middleware #csharp
🛡️ Новая обработка ошибок в .NET 10 - `IExceptionHandler`

Обрабатывать исключения теперь можно гибко, читаемо и без хаоса.

В .NET 10 появился интерфейс IExceptionHandler, который реализует паттерн try- прямо внутри middleware.

### Как это работает?

Ты сам указываешь, какие типы исключений хочешь перехватывать
Если ты обработал ошибку — возвращаешь true, и цепочка остановится
Можно выстроить несколько обработчиков подряд — они вызовутся по очереди, пока один не справится

📦 Это больше не про громоздкие try-catch или тонны if — теперь всё централизовано и масштабируемо.

🔧 Идеально для:
- Глобальной обработки ошибок
- Разделения логики по типам исключений
- Подключения к логгерам, метрикам, retry-логике

📚 Пример кода и объяснение:


Подходит всем, кто пишет на ASP.NET Core или строит APIЭ

#dotnet #aspnetcore #обработкаошибок #middleware #backend #csharp
Microsoft выпустила августовские servicing-обновления для .NET и .NET Framework

Обновления вышли 11 августа 2026 года и включают как security, так и non-security fixes.

Актуальные версии:

- .NET 10.0.11
- .NET 9.0.19
- .NET 8.0.30

В этом месяце Microsoft закрыла сразу несколько уязвимостей в .NET 8, 9 и 10, включая:

- Remote Code Execution
- Elevation of Privilege
- Information Disclosure
- Denial of Service
- Security Feature Bypass

Среди исправлений есть CVE-2026-70354 и CVE-2026-62897, связанные с удалённым выполнением кода.

Обновлены также:

- ASP.NET Core
- Entity Framework Core
- Runtime
- container images
- Linux packages

Для .NET Framework тоже вышли новые security и non-security updates.

Если приложение работает на .NET 8, 9 или 10, августовский servicing update лучше не откладывать, особенно из-за набора security fixes.

Подробнее:
https://devblogs.microsoft.com/dotnet/dotnet-and-dotnet-framework-august-2026-servicing-updates/

#aspnetcore #dotnet
Как упростить работу с иерархическими данными в Blazor

Обычный DropDownList удобен для плоских списков, а TreeView хорошо показывает структуру, но занимает много места.

Telerik предлагает промежуточный вариант - DropDownTree.

Он позволяет выбирать элементы из дерева прямо внутри компактного dropdown:

* категории товаров
* структура компании
* файловая система
* регионы
* роли и permissions

Компонент поддерживает вложенные данные напрямую, поиск по дереву, раскрытие нужных узлов и отображение выбранного пути.

Пример:


<TelerikDropDownTree Data="@Data"
@bind-Value="@SelectedValue"
ValueField="TreeItemId"
Filterable="true">

<DropDownTreeBindings>
<DropDownTreeBinding TextField="Text"
ItemsField="Items" />
</DropDownTreeBindings>

</TelerikDropDownTree>


Главное преимущество - не нужно превращать сложную иерархию в огромный плоский список.

Если данные уже представлены как рекурсивный DTO, их часто можно передать компоненту практически напрямую.

Полезный вариант для Blazor-приложений, где пользователь должен выбирать что-то из большого дерева данных, но постоянно держать TreeView на экране нет смысла.

https://telerik.com/blogs/simplify-hierarchical-selection-blazor-telerik-dropdowntree

#aspnetcore #blazor