C# (C Sharp) programming (@csharp_ci) — Telegram-канал | Telegram Dialogs
Telegram Dialogs — логотип
Все каналы
C# (C Sharp) programming

C# (C Sharp) programming

@csharp_ci

18.1K подписчиков технологии 💬 Комментарии открыты

По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ

Последние публикации

C# (C Sharp) programming
30.08.2026 11:02 · 👁 1.4K
Как упростить работу с иерархическими данными в 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
C# (C Sharp) programming
29.08.2026 09:31 · 👁 1.6K
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
C# (C Sharp) programming
28.08.2026 07:04 · 👁 1.9K
#ПятничныйКвиз #ДляСамыхМаленьких
C# (C Sharp) programming
26.08.2026 12:01 · 👁 2.3K
🚀 .NET 8: как сделать микросервисы устойчивыми с Resilience Pipelines + DI В распределённых системах ошибки — это не исключение, а реальность: ❌ API временно недоступен ❌ сеть дала сбой ❌ сервис перегружен ❌ внешний провайдер отвечает слишком долго В .NET 8 это стало намного проще благодаря Microsoft.Extensions.Resilience (на базе Polly). Можно собрать свой ResiliencePipeline и добавить в DI один раз: ✅ Retry — повторить запрос ✅ Timeout — ограничить время ожидания ✅ Circuit Breaker — остановить поток ошибок ✅ Fallback — вернуть запасной результат ✅ Rate Limiter — защитить сервис ✅ Hedging — отправить альтернативный запрос Главный плюс — не нужно настраивать защиту в каждом месте кода. Создаёшь pipeline → регистрируешь через DI → используешь где нужно: var user = await pipeline.ExecuteAsync( async token => await httpClient.GetAsync("api/users", token) ); Чистый код, единая стратегия обработки ошибок и меньше боли при росте микросервисов. Если пишете на C# и строите production-системы — Resilience Pipelines стоит добавить в свой toolbox. ⚙️
C# (C Sharp) programming
24.08.2026 16:24 · 👁 2.4K
Как ограничить количество запросов к API по IP в ASP.NET Core Встроенный Rate Limiter позволяет сделать это буквально в несколько строк: builder.Services.AddRateLimiter(options => { options.AddPolicy("fixed-by-ip", httpContext => RateLimitPartition.GetFixedWindowLimiter( partitionKey: httpContext.Connection.RemoteIpAddress?.ToString(), factory: _ => new FixedWindowRateLimiterOptions { PermitLimit = 10, Window = TimeSpan.FromMinutes(1) })); }); В этом примере один IP может сделать максимум 10 запросов за минуту. Но использовать такой подход вслепую не стоит. Причина простая: реальные пользователи могут находиться за NAT, прокси или корпоративным шлюзом и иметь один внешний IP. В итоге лимит одного человека начнёт влиять на остальных. Поэтому для авторизованных пользователей обычно лучше ограничивать запросы по уникальному userId. А rate limit по IP оставлять для анонимных endpoint'ов, защиты от простых ботов или как дополнительный слой защиты.
C# (C Sharp) programming
24.08.2026 14:23 · 👁 1.9K
⚡️Актуальные темы .NET на DotNext 2026 В .NET одновременно происходит много интересного: C# получает новые возможности, .NET 10 меняет расклад между Native AOT и JIT, а в разработке появляются ИИ-агенты, которые берут на себя часть инженерной работы. На DotNext 2026 разберем как вещи, которые происходят на уровне машинного кода, так и вполне прикладные вопросы архитектуры и разработки. 📅 25–26 сентября, Москва + online Выбрали 8 тем из программы, среди которых не только доклады, но и хардкорный воркшоп, чтобы показать этот диапазон: — как заставить Transactional Outbox одновременно быть строгим и параллельным; — зачем ASP.NET Core модульный монолит и как собрать его без микросервисов; — где Native AOT выигрывает у JIT в .NET 10; — что происходит с циклами, inlining и bounds checks в C# и Go; — как меняется SDLC, когда в команде появляются ИИ-агенты; — что принесут discriminated unions в C# 15; — как проектировать асинхронное взаимодействие в распределенных системах (воркшоп). Все подробности — в карточках и на сайте конференции. 🌟По промокоду csharpci — персональные билеты дешевле → Программа DotNext → Купить билет
C# (C Sharp) programming
23.08.2026 12:01 · 👁 2.4K
Появился бесплатный open-source PDF-редактор для Windows, который пытается заменить Adobe Acrobat без подписки. KillerPDF умеет редактировать текст прямо в PDF, добавлять аннотации и изображения, объединять и разделять страницы, заполнять формы, ставить подписи, печатать и делать OCR. Причём распознавание работает локально через Tesseract, без отправки документов в облако. Есть и более редкие штуки: восстановление повреждённых PDF, открытие файлов с паролем, выравнивание кривых сканов, perspective correction, ночной режим, split view для двух документов и полноценная работа из командной строки. Весь редактор упакован примерно в 16 МБ, может работать portable, не требует аккаунта, не собирает телеметрию и не делает phone-home. Проект распространяется под GPLv3. На GitHub уже около 3,4 тыс. звёзд. https://github.com/SteveTheKiller/KillerPDF
C# (C Sharp) programming
23.08.2026 10:01 · 👁 1.9K
🔥 Хочешь быстрее расти в IT? Хватит учиться в одиночку Окружение решает больше, чем кажется. Собрал папки и каналы, где можно быстрее влиться в нужное направление, следить за трендами и не вариться в своём пузыре. AI: t.me/ai_machinelearning_big_data Python: t.me/pythonl Linux: t.me/linuxacademiya Хакинг: t.me/linuxkalii DevOps: t.me/DevOPSitsec Docker: https://t.me/+90Z5TAyfuNU5YmRi Golang: t.me/Golang_google Rust: t.me/rust_code C++: t.me/cpluspluc C#: t.me/csharp_1001_notes Java: t.me/javatg JavaScript: t.me/javascriptv React: t.me/react_tg Frontend: t.me/front PHP: t.me/phpshka Android: t.me/android_its Мобильная разработка: t.me/mobdevelop Базы данных: t.me/sqlhub Data Science: t.me/data_analysis_ml Big Data: t.me/bigdatai Математика: t.me/data_math Физика: https://t.me/+S4hinvO3QI43ZjNi Kubernetes: t.me/kubernetc GameDev: https://t.me/gamedev Haskell: t.me/haskell_tg Собеседования и карьера: DS собеседования: t.me/machinelearning_interview Python собеседования: t.me/python_job_interview Папка с вакансиями: t.me/addlist/_zyy_jQ_QUsyM2Vi Папка Go разработчика: t.me/addlist/MUtJEeJSxeY2YTFi Папка Python разработчика: t.me/addlist/eEPya-HF6mkxMGIy Папка ML: https://t.me/addlist/2Ls-snqEeytkMDgy Папка Frontend: https://t.me/addlist/mzMMG3RPZhY2M2Iy Полезное сверху: ИТ-мемы: t.me/memes_prog Английский для программистов: t.me/english_forprogrammers ИИ и технологии: t.me/vistehno 954 ГБ open-source курсов: https://t.me/+rKBQEMccAA01MTcy ИТ-книги бесплатно: https://t.me/addlist/BkskQciUW_FhNjEy Max Ai: https://max.ru/ai_machinelearning_big_data Max python: https://max.ru/pythonl ТЕХНО: https://max.ru/vistehno Max Go: https://max.ru/Golang_google Max Linux: https://max.ru/linuxkalii Devops: https://max.ru/DevOPSitsec C#: https://max.ru/csharp_ci C++: https://max.ru/cpluspluc SQL: https://max.ru/sqlhub Java: https://max.ru/javatg Подписывайся на нужные направления и собирай себе ленту, которая реально двигает вперёд.
C# (C Sharp) programming
21.08.2026 07:08 · 👁 2.6K
#ПятничныйКвиз
C# (C Sharp) programming
19.08.2026 12:04 · 👁 2.9K
⚙️ Service Discovery в .NET через Consul можно подключить без самописного резолва адресов и ручного перебора инстансов. Рабочая схема выглядит так: Install-Package Steeltoe.Discovery.Consul Регистрируем discovery: builder.Services .AddServiceDiscovery(o => o.UseConsul()); В appsettings.json указываем Consul и параметры сервиса: "Consul": { "Host": "localhost", "Port": 8500, "Discovery": { "ServiceName": "reporting-service", "Hostname": "reporting-api", "Port": 8080 } } А дальше самое полезное: builder.Services .AddHttpClient<ReportingServiceClient>(client => { client.BaseAddress = new Uri("http://reporting-service"); }) .AddServiceDiscovery() .AddRoundRobinLoadBalancer(); То есть HttpClient ходит не на конкретный IP:port, а на логическое имя сервиса. Steeltoe через Consul получает живые инстансы, а RoundRobinLoadBalancer распределяет запросы между ними. Это особенно полезно, когда сервисы часто пересоздаются, IP меняются, а хардкодить адреса уже невозможно. По сути, клиентская часть получает простой pipeline: service name → Consul → healthy instances → load balancing → HTTP request Для микросервисов на .NET это намного чище, чем городить собственный discovery layer.
Чат поддержки
Ответим здесь же, обычно быстро
Здравствуйте! Напишите ваш вопрос — оператор ответит в этом чате.