C# (C Sharp) programming
По всем вопросам- @notxxx1 Реестр РКН: https://clck.ru/3Fk3kb #VRHSZ
نمایش بیشتر📈 تحلیل کانال تلگرام C# (C Sharp) programming
کانال C# (C Sharp) programming (@csharp_ci) در بخش زبانی روسی بازیگری فعال است. در حال حاضر جامعه شامل 18 127 مشترک است و جایگاه 7 041 را در دسته فناوری و برنامهها و رتبه 36 302 را در منطقه روسيا دارد.
📊 شاخصهای مخاطب و پویایی
از زمان ایجاد در невідомо، پروژه رشد سریعی داشته و 18 127 مشترک جذب کرده است.
بر اساس آخرین دادهها در تاریخ 29 اوت, 2026، کانال فعالیت پایداری دارد. در ۳۰ روز گذشته تغییر اعضا برابر -78 و در ۲۴ ساعت گذشته برابر -7 بوده و همچنان دسترسی گستردهای حفظ شده است.
- وضعیت تأیید: تأیید نشده
- نرخ تعامل (ER): میانگین تعامل مخاطب 15.03% است و در ۲۴ ساعت نخست پس از انتشار، محتوا معمولاً 7.44% واکنش نسبت به کل مشترکان کسب میکند.
- دسترسی پستها: هر پست به طور میانگین 2 725 بازدید دریافت میکند. در اولین روز معمولاً 1 348 بازدید جمعآوری میشود.
- واکنشها و تعامل: مخاطبان بهطور فعال حمایت میکنند؛ میانگین واکنش به هر پست 0 است.
- علایق موضوعی: محتوا بر موضوعات کلیدی مانند .net, api, логика, архитектура, string تمرکز دارد.
📝 توضیح و سیاست محتوایی
نویسنده این فضا را محل بیان دیدگاههای شخصی توصیف میکند:
“По всем вопросам- @notxxx1
Реестр РКН: https://clck.ru/3Fk3kb
#VRHSZ”
به لطف بهروزرسانیهای پرتکرار (آخرین داده در تاریخ 30 اوت, 2026)، کانال همواره بهروز و دارای دسترسی بالاست. تحلیلها نشان میدهد مخاطبان بهطور فعال با محتوا تعامل دارند و آن را به نقطه اثرگذاری مهم در دسته فناوری و برنامهها تبدیل کردهاند.
public async Task<User> GetUserAsync(int id)
{
using var conn = new SqlConnection(_conn);
conn.Open(); // 👈 синхронный блокирующий вызов
var cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM Users WHERE Id = @id";
cmd.Parameters.AddWithValue("@id", id);
using var reader = cmd.ExecuteReader(); // 👈 тоже блокировка
if (await reader.ReadAsync())
return Map(reader);
return null;
}
Под нагрузкой резко растёт:
- очередь ThreadPool
- количество заблокированных потоков
- p99 latency
Какой вариант исправления правильный?
1. Заменить ExecuteReader на ExecuteReaderAsync, но оставить conn.Open() как есть.
2. Вынести всё выполнение в Task.Run и пусть код работает на отдельных потоках.
3. Переписать весь путь на асинхронный: использовать OpenAsync, ExecuteReaderAsync и полностью убрать sync-over-async.
Как думаешь, какой вариант правильный?IExceptionHandler, который реализует паттерн try- прямо внутри middleware.
### Как это работает?
✅ Ты сам указываешь, какие типы исключений хочешь перехватывать
✅ Если ты обработал ошибку — возвращаешь true, и цепочка остановится
✅ Можно выстроить несколько обработчиков подряд — они вызовутся по очереди, пока один не справится
📦 Это больше не про громоздкие try-catch или тонны if — теперь всё централизовано и масштабируемо.
🔧 Идеально для:
- Глобальной обработки ошибок
- Разделения логики по типам исключений
- Подключения к логгерам, метрикам, retry-логике
📚 Пример кода и объяснение:
Подходит всем, кто пишет на ASP.NET Core или строит APIЭ
#dotnet #aspnetcore #обработкаошибок #middleware #backend #csharp[Timestamp]. EF автоматически будет обновлять версию записи и проверять конфликт изменений.
🟦 Вариант 2 - через Fluent API
Если не хотите засорять модель атрибутами, то же самое можно описать в OnModelCreating с помощью .IsRowVersion().
🧩 Пример из картинки показывает оба подхода — выберите тот, что лучше вписывается в вашу архитектуру.
public class Fetcher
{
private readonly HttpClient _client = new HttpClient();
public async Task<string> DownloadAsync(string url)
{
await Task.Delay(10);
return await _client.GetStringAsync(url);
}
}
public async Task RunAsync()
{
var fetcher = new Fetcher();
var tasks = Enumerable.Range(0, 5)
.Select(_ => fetcher.DownloadAsync("https://example.com"))
.ToList();
await Task.WhenAll(tasks);
Console.WriteLine("Done");
}
Вопросы:
1) Код может «подвиснуть» или упасть в продакшене.
Какие два скрытых дефекта здесь спрятаны?
2) Как их исправить без изменения сигнатур методов?
3) Почему HttpClient здесь одновременно правильно и неправильно?
4) Что произойдет, если:
заменить HttpClient на HttpClientFactory;
- убрать Task.Delay(10)?
5) Как переписать класс так, чтобы он был:
- потокобезопасным
- быстрым
- без скрытных deadlock-сценариев
- и выдерживал сотни запросов в секунду?
Требования:
- нельзя менять логику RunAsync
- нельзя кэшировать результат
- код должен оставаться асинхронным