C# Portal | Программирование
13.9K subscribers
1.15K photos
126 videos
29 files
926 links
Присоединяйтесь к нашему каналу и погрузитесь в мир для C#-разработчика

Сотрудничество, реклама: @devmangx

Менеджер: @Spiral_Yuri

РКН: https://clck.ru/3FocB6
Download Telegram
SSO — это процесс аутентификации, который позволяет пользователям получать доступ к нескольким приложениям с помощью одного основного ключа.

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

Вот какие шаги происходят, если вы хотите войти в веб-приложение Trello, используя аккаунт Google:

1. Открываете страницу входа Trello и выбираете Google как способ авторизации
2. Trello перенаправляет пользователя на страницу входа Google
3. Пользователю отображается страница входа Google
4. Пользователь вводит свои учётные данные Google
5. Google отправляет информацию аутентификации на сервер авторизации SSO
6. Если учётные данные валидны, сервер авторизации возвращает токен аутентификации (SAML)
7. Google отправляет токен аутентификации в Trello
8. На последнем шаге Trello отправляет токен на сервер аутентификации Google для его валидации
9. Если токен валиден, Trello предоставляет пользователю доступ и сохраняет сессию для последующих взаимодействий

Преимущества SSO:

- Улучшенный пользовательский опыт. Пользователю не нужно запоминать несколько логинов и паролей.
- Повышенная безопасность. Пользователи реже переиспользуют пароли в разных приложениях.

Недостатки:

- Единая точка отказа. Один из ключевых минусов — SSO создаёт single point of failure. Если система SSO скомпрометирована, злоумышленник может получить доступ ко всем подключённым приложениям и сервисам.
- Риски безопасности. Если учётные данные скомпрометированы, под угрозой оказываются все связанные приложения.

Некоторые распространённые типы SSO:

- SAML-based SSO. Самый распространённый тип SSO. Использует протокол SAML для обмена данными аутентификации между SSO-сервером и приложениями.
- OpenID Connect. Более новый тип SSO, основанный на OAuth 2.0. Проще по сравнению с SAML и легче интегрируется с веб-приложениями.

И популярные решения SSO:

- Azure Active Directory
- Okta
- Ping Identity
- OneLogin
- Google Cloud Identity Platform

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
7👏2🥴1
This media is not supported in your browser
VIEW IN TELEGRAM
Кто-то сделал веб-симулятор System Design.

Называется Paperdraw. Он позволяет перетаскивать компоненты (drag & drop) и в реальном времени смотреть, как они ведут себя при реальных условиях: нагрузке, сбоях, задержках и масштабировании.

100% бесплатно можно попробовать.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
11🔥4👍3👏1
10 скрытых фич EF Core, которые используют сеньоры

1️⃣Shadow Properties
EF Core позволяет добавлять свойства, которых нет в классе, но которые присутствуют в базе данных.
Идеально подходят, например, для хранения данных аудита, не засоряя сущности лишними полями.

2️⃣Query Tags
Можно легко добавлять комментарии к SQL-запросам, которые генерирует EF Core.
Удобно при профилировании - в логах SQL сразу видно, откуда пришёл тот или иной медленный запрос.

3️⃣Compiled Queries
Часто используемые запросы можно скомпилировать заранее, чтобы не тратить ресурсы на парсинг каждый раз.
Повышает производительность при большом числе однотипных запросов.

4️⃣DbContext Pooling
Вместо того чтобы каждый раз создавать новый DbContext, можно переиспользовать уже созданные.
Существенно снижает потребление памяти и повышает производительность.

5️⃣Value Converters
Позволяют автоматически преобразовывать значения между .NET и базой данных.
Полезно для хранения кастомных типов, enum'ов и Value Object'ов.

6️⃣Temporal Tables
Позволяют отслеживать историю изменений данных прямо в базе.
Удобно для аудита, отката изменений и анализа исторических данных.

7️⃣Database Seeding
EF Core 9 добавил новые методы UseSeeding, UseAsyncSeeding для удобного наполнения базы начальными данными.

8️⃣Split Queries for Includes
Позволяет разбивать сложные запросы с Include на несколько простых.
Избегает проблем с громоздкими JOIN’ами и повышает производительность.

9️⃣Raw SQL Queries
Можно выполнять чистый SQL прямо из EF Core.
Полезно, когда нужно выжать максимум производительности или использовать специфичный функционал конкретной СУБД.

1️⃣0️⃣Миграции для нескольких баз данных
Можно легко управлять миграциями и схемами сразу для разных провайдеров.
Подходит для приложений, которые должны работать с несколькими СУБД (например, SQL Server, PostgreSQL, MySQL).

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾43🥴1
EF Core 9 наконец упрощает сидинг данных.

С UseSeeding и UseAsyncSeeding теперь можно загружать начальные данные прямо из DbContext.

Меньше ручного кода и гораздо более чистая настройка.

Вот код с изображения:

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder
.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=SeedingEfCore")
.UseAsyncSeeding(async (context, _, cancellationToken) =>
{
if (!await context.Set<Category>().AnyAsync(cancellationToken))
{
await context.Set<Category>().AddRangeAsync(
new Category { Name = "Backend" },
cancellationToken
);

await context.SaveChangesAsync(cancellationToken);
}
});
}


👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾1
C# 15 добавляет union-типы: закрытые наборы вариантов (case types), исчерпывающее pattern matching, неявные преобразования и даже поддержку кастомных union-типов без boxing.

Это серьёзное улучшение удобства для API, которые возвращают «один из нескольких вариантов».

Полный пост: https://devblogs.microsoft.com/dotnet/csharp-15-union-types/

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🍾52🔥1
Выпущен JavaScript-движок Okojo для .NET.

В бенчмарках он более чем в 3 раза быстрее, чем Jint, при этом с низкими аллокациями!

В комплекте расширения: встраивание Wasm, reflection, генерация биндингов с d.ts, runtime, совместимый с Node, отладчик VSCode и многое другое.

За исключением некоторых частей (прямой eval / with и т.д.), базовая реализация проходит test262 почти на 100%!

На данный момент поддерживается только .NET 10.

https://github.com/akeit0/okojo

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🍾21
В .NET 10 формат .slnx стал дефолтным не просто так. Старый формат .sln был разработан в начале 2000-х, когда Visual Studio была единственным инструментом. Он никогда не предназначался для работы с Git.

35 строк с GUID’ами для 3 проектов? Конфликты при мердже каждый раз, когда кто-то добавляет проект? Проприетарный формат, который нельзя валидировать стандартными инструментами?

Формат .slnx решает всё это. 7 строк чистого XML. Без GUID’ов. Git автоматически мерджит добавления проектов. Поддерживается всеми IDE.

«Но у меня уже есть проекты…»

Одна команда: dotnet sln migrate

И всё. Старый .sln остаётся нетронутым, пока ты не проверишь результат. Риск буквально нулевой.

Реальный риск — продолжать использовать старый формат и идти против экосистемы, которая движется вперёд.

Согласен или нет?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥36👍5💯21🍾1
Aspire 13.2 тихо завёз суперсилу: теперь твой терминал может читать документацию за тебя.

aspire docs list        → всё
aspire docs search redis → результаты с ранжированием по релевантности
aspire docs get <slug> → полная страница, без браузера


https://buff.ly/RFUftBI

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🍾1
Мы Создали Слой Кэша. PostgreSQL Показал, что Зря.

Пользователь открывает страницу свего тарифного плана, а видит старый. Он обновляет страницу, и всё исправляется. Наш показатель попадания в кэш 98%, а мы всё равно выглядели некомпетентными. В тот момент мы перестали рассматривать кэширование как функцию повышения производительности и стали рассматривать его как проблему истинности. Потому что система перестала быть медленной, зато она стала ненадёжной.

Что было дальше 🤙

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁4👍2🍾2👎1
DataAnnotations против FluentValidation

1️⃣DataAnnotations тоже позволяют валидировать данные с проверкой в базе через кастомный атрибут + IUserRepository.

2️⃣Но когда правило разрастается, FluentValidation обычно оказывается чище, слабее связан с остальным кодом и проще покрывается тестами.

#dotnet #csharp

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🍾1
Хватит жонглировать разрозненными инструментами для JSON. 🧱

JSON-everything — это высокопроизводительный, соответствующий стандартам набор инструментов для Schema, Patch, Path и других задач — всё в рамках одной экосистемы .NET. Открытый исходный код, ориентирован на современные сценарии разработки.

https://hubs.li/Q04bsKZy0

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
4🍾1
Забирай мой подход для упрощения управления потоками:

(начиная с .NET 9)

Вместо классического System.Threading.Monitor в .NET 9 появился новый тип — System.Threading.Lock.

Вместе с ним появился метод Lock.EnterScope(), который создаёт эксклюзивную область и автоматически освобождает блокировку после выхода из блока кода.

Этот тип даёт более удобную синхронизацию потоков через свой API.

Оператор lock в C# умеет распознавать, когда целью блокировки выступает объект Lock.

В таком случае он использует новый API, а не классический механизм.

Смотри код ниже.

Что думаешь про это нововведение?

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍4🤣32👎1
This media is not supported in your browser
VIEW IN TELEGRAM
Cleanpilot — современная альтернатива CCleaner, написанная на C# / WinUI 3, полностью работающая на основе winapp2.ini

Публичная превью-версия уже доступна : https://github.com/builtbybel/Cleanpilot/

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
5👍3🍾2
Большинство .NET-разработчиков в 2026 всё ещё копируют строки подключения между файлами appsettings.json.

В прошлом месяце у меня было 4 сервиса в одном решении. У каждого — своя строка подключения к PostgreSQL. Логирование настроено по-разному. Проверки состояния были только в двух.

Потом строка подключения изменилась. Я обновил 3 проекта. Про четвёртый забыл. Потратил 45 минут на отладку, пытаясь понять, почему один сервис падает с ошибками подключения, а остальные работают нормально.

В этот момент я перенёс всё на .NET Aspire.

➡️Строки подключения? Определяются один раз в AppHost. Подставляются во все сервисы автоматически.
➡️Логирование? Настраивается один раз в ServiceDefaults. Применяется ко всем сервисам.
➡️Проверки состояния? Встроены. WaitFor() управляет порядком запуска.
➡️Наблюдаемость? Трейсы, метрики и структурированные логи через OpenTelemetry. Без дополнительной стоимости.

«Но Aspire только для Azure». Нет. Я деплою в AWS. Aspire управляет локальной разработкой. Облачная платформа отвечает за продакшн. Это разные зоны ответственности.

«Но это добавляет сложность». Сложнее, чем поддерживать 5 разных конфигураций логирования для 5 сервисов? Сложнее, чем ловить рассинхронизацию строк подключения ночью?

Настоящая сложность — это связующий код, который вы пишете сейчас. Aspire его убирает.

Моё правило: 2+ сервиса с общей инфраструктурой — использовать Aspire. Меньше — можно обойтись без него.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
6👏3
Agent Framework 1.0 вышел — стабильные интерфейсы, мультиагентные воркфлоу, MCP, хостинг через Foundry, декларативные агенты на YAML и графовый движок для полноценной оркестрации.

Если вы делаете агентов на .NET или Python, этот релиз стоит сохранить в закладки.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👏4
Наш слон: собрал полноценный движок инференса LLM на C#/.NET 10. С нуля. 🐘

Не обёртка — нативная загрузка GGUF, токенизатор BPE, механизм внимания, KV-кэш, SIMD-векторизованные CPU-ядра, CUDA-бэкенд для GPU, API, совместимый с OpenAI.

Один разработчик, ~2 месяца, с использованием ИИ (без вайбкодинга). Первый превью-релиз уже доступен.

Подробнее: https://kokosa.dev/blog/2026/dotllm/ и https://dotllm.dev/

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥135👏3👍1
C#-приложения с файловой моделью и поддержкой нескольких файлов — кому-то нужно? Появится в .NET 10.0.300 и будущих превью .NET 11

@dotnet

https://github.com/DamianEdwards/runfile/compare/main...include-directive

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
😁3
.NET 11 Preview 3 приносит обновления для dotnet run и развитие поддержки объединённых типов

— Улучшения поддержки объединённых типов в средах разработки (полифилы всё ещё требуются)

—`dotnet run -e` (встроенные переменные окружения)

— Файловые приложения → поддержка нескольких файлов (#:include)

— Улучшения dotnet watch с интеграцией Aspire

и другое...

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🍾1
.NET 11 Preview 3 приносит важное обновление в EF Core:

Теперь можно выполнять запросы к JSON в SQL Server напрямую из LINQ

Раньше: ручной SQL + JSON_VALUE
Теперь: JsonContains

Меньше кода, чище и проще сопровождать.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103😁3🍾3🤔1
.NET 10 включает dnx — по сути аналог npx для .NET.

dnx NuGet.Mcp.Server --yes


Скачивает и запускает локальный MCP-сервер. Установка не требуется.

Работает с MCP-серверами для NuGet, Azure, Bicep, Power Platform. Добавляешь в mcp.json — и готово.

Тихое, но важное изменение для AI-инструментария.

👉 @KodBlog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3🍾2