C# (C Sharp) programming
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ
نمایش بیشتر📈 تحلیل کانال تلگرام C# (C Sharp) programming
کانال C# (C Sharp) programming (@csharp_ci) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 18 065 مشترک است و جایگاه 7 230 را در دسته فناوری و برنامهها و رتبه 36 482 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 18 065 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 26 اکتبر, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -33 و در ۲۴ ساعت گذشته برابر -8 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 18.96% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 8.27% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 3 426 بازدید دریافت میکند. در اولین روز معمولاً 1 494 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 0 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند .net, api, логика, архитектура, string تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 27 اکتبر, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
Microsoft.Extensions.AI и Ollama локальную модель можно подключить буквально несколькими строками.
Что можно собрать:
- обычный чат
- суммаризацию текста
- классификацию и категоризацию
- распознавание изображений
- свои AI-фичи без отправки данных во внешний API
Особенно интересно, что всё это можно запускать локально: модель работает на вашей машине, а приложение обращается к ней как к обычному сервису.
Примерно так:
builder.Services.AddChatClient(
new OllamaApiClient(
new Uri("http://localhost:11434"),
"phi3:mini"));
Дальше получаем IChatClient и используем его внутри обычного .NET-приложения.
Хороший разбор того, как работать с LLM в .NET через Microsoft.Extensions.AI:Microsoft.Resilience по-прежнему можно использовать бесплатно.
С .NET 8 работа с resilience стала заметно проще: появился новый API Polly и официальные библиотеки Microsoft для построения resilience pipelines.
Что можно настроить:
- Retry
- Fallback
- Timeout
- Rate limiting
- Circuit breaker
Хороший разбор того, как собирать устойчивые cloud-приложения на современном .NET:
https://milanjovanovic.tech/blog/building-resilient-cloud-applications-with-dotnetHttpClient в .NET
HttpClient отлично подходит для HTTP-запросов, но при неправильном использовании можно столкнуться с проблемами вроде исчерпания сокетов и некорректного обновления DNS. Плюс сериализацию и разбор ответов часто приходится писать вручную.
Refit упрощает это:
- описываешь REST API обычным C#-интерфейсом
- получаешь type-safe клиент
- сериализация и десериализация выполняются автоматически
- под капотом всё равно используется HttpClient
Удобно для проектов, где много внешних API и не хочется писать повторяющийся HTTP-код.
https://github.com/reactiveui/refitappsettings.json, environment variables, User Secrets и других configuration providers.
Можно читать их напрямую через IConfiguration, но такой код быстро становится хрупким и неудобным.
Вместо этого лучше использовать Options Pattern:
* создать класс настроек
* привязать его к секции конфигурации
* получать через IOptions<T>
* добавить валидацию через Data Annotations
Так конфигурация становится типизированной, проще тестируется и меньше ломается при рефакторинге.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
var user = await pipeline.ExecuteAsync(
async token => await httpClient.GetAsync("api/users", token)
);
Чистый код, единая стратегия обработки ошибок и меньше боли при росте микросервисов.
Если пишете на C# и строите production-системы — Resilience Pipelines стоит добавить в свой toolbox. ⚙️
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'ов, защиты от простых ботов или как дополнительный слой защиты.