C# (C Sharp) programming
18.7K subscribers
755 photos
38 videos
8 files
673 links
По всем вопросам- @haarrp

C# - обучающий канал Senior C# разработчика.

@ai_machinelearning_big_data - Machine learning

@itchannels_telegram - 🔥лучшие ит-каналы

@csharp_ci - C# академия

@pythonlbooks- книги📚

Реестр РКН: https://clck.ru/3Fk3kb
Download Telegram
Если вы сомневаетесь, стоит ли переходить на последнюю версию #dotnet, то одно только повышение производительности должно вас убедить.

📌 Что нового в .NET 8?

@csharp_ci
Пятничный C# квиз #ПятничныйКвиз

@csharp_ci
Что выведет на экран этот код?
Anonymous Quiz
59%
Exception on Task 1
22%
A task was canceled
18%
Task 3
🖥 Если вы хотите и повысить свою квалификацию разработчика C#, рекомендуем посмотреть этот бесплатный курс.

В этом курсе Гэвин обучает вас некоторым более продвинутым концепциям C#.

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

Видео
Код

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
𝗔𝗣𝗜 𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 𝗖𝗵𝗲𝗰𝗸𝗹𝗶𝘀𝘁

Контрольный список наиболее важных мер по обеспечению безопасности при разработке, тестировании и выпуске API.

🐱 Github

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
Потокобезопасность - это правильный подход к реализации одноэлементного шаблона.

Но знаете ли вы, что "блокировка" - очень дорогостоящая операция?
Как это оптимизировать?

Используйте механизм блокировки двойной проверки.

Блокировка двойной проверки используется для гарантии того, что экземпляр Singleton создается только один раз, даже при доступе из нескольких потоков.

Двойная проверка блокировки - это метод, при котором вы сначала проверяете условие блокировки (известное как "подсказка о блокировке"), фактически ничего не блокируя.

Этот метод используется для пропуска ненужных шагов блокировки. Вы приступаете к блокировке только в том случае, если первая проверка показывает, что это необходимо.

@csharp_ci
Инъекция зависимостей в .NET ?

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

Внедрение зависимостей в .NET — это встроенная часть платформы, а также конфигурация, ведение журнала и шаблон параметров.

Зависимость — это любой объект, от которого зависит другой объект. Рассмотрим следующий класс MessageWriter с методом Write, от которого зависят другие классы:

public class MessageWriter
{
public void Write(string message)
{
Console.WriteLine($"MessageWriter.Write(message: \"{message}\")");
}
}



Внедрение зависимостей в .NET - это подход, который позволяет классам получать свои зависимости из внешнего источника, вместо того чтобы создавать их самостоятельно. Внедрение зависимостей позволяет отделить процесс создания объектов от кода, который их использует, что приводит к более модульной и гибкой системе.

Почему это нужно:
Классы отделяются друг от друга, поэтому изменения, внесенные в одно место, отражаются во всех остальных местах.

Три способа внедрения зависимостей:

▪️Scoped: Создается экземпляр на каждую область видимости.
▪️Transient: Создается новый экземпляр каждый раз при его внедрении.
▪️Singleton: Создается один объект для всех запросов, поступающих на сервер от любого пользователя.

📌 Читать подробнее

@csharp_ci
Как перестать тратить ресурсы сервера?

Можно использовать CancellationToken.

▪️CancellationToken можно использовать для обеспечения оперативной и эффективной отмены операций с базой данных.

Длительные запросы или операции с базой данных могут повлиять на производительность и отзывчивость вашего API. Использование маркеров отмены позволяет клиентам отменять эти операции, если они занимают больше времени, чем ожидалось, или больше не нужны.

Допустим, вы тестируете конечную точку API с длительным периодом выполнения через Postman.

Если вызов слишком длинный, можно нажать на кнопку "Отмена", чтобы остановить вызов.
Если в вашем коде есть поддержка CancellationToken, то операция будет отменена и ресурсы будут освобождены.

@csharp_ci
ℹ️Получение случайных элементов из коллекцииℹ️

Получение случайных элементов из коллекции возможно всего одной строкой. 💡

.NET 8 приносит нам много нового во всех областях его деятельности. Одной из наиболее интересных новинок является случайный выбор определенного количества элементов в коллекции - с помощью встроенной функции.

Метод называется GetItems<T>().

Вы можете передать коллекцию и желаемое количество элементов.

Метод доступен в пространствах под названием System.Random.

В данном примере мы используем метод GetItems<T>() для случайной выборки 3 животных из массива.

@csharp_ci
💡Не путайте IEnumerable и List в .NET💡

IEnumerable - это базовый интерфейс для всех коллекций в .NET, а List - конкретный класс.

IEnumerable:

1️⃣Только для чтения.
2️⃣Это интерфейс
3️⃣Он не может быть инициализирован с помощью new()
4️⃣Определяет единственный метод GetEnumerator.
5️⃣Если вам не нужно выполнять добавление/удаление, то лучше всего.
6️⃣IEnumerable реализована во многих коллекциях, таких как Array, List и Dictionary

List:

1️⃣Не только для чтения.
2️⃣Это конкретный класс.
3️⃣Лучше всего подходит для выполнения операций добавления/удаления.
4️⃣Он реализует IList, а IList реализует IEnumerable, поэтому список обладает всеми возможностями IEnumerable

@csharp_ci
This media is not supported in your browser
VIEW IN TELEGRAM
Монолитная архитектура VS архитектура микросервисов

В области архитектуры программного обеспечения выбор между монолитом и микросервисами может определить судьбу вашего приложения.

1️⃣Монолитная архитектура 🏰

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

- Унифицированность и простота: Легко разрабатывать и внедрять благодаря единой структуре. Изменения вносятся в одном месте, что упрощает разработку.

- Проблемы масштабирования: Масштабирование может быть сложной задачей. Когда одна часть системы требует обновления, необходимо масштабировать все приложение.

2️⃣Архитектура микросервисов 🌐.

- Город специализированных зданий: Микросервисы напоминают шумный город, где каждый сервис - это специализированное здание, выполняющее определенную функцию.

- Масштабируемость и гибкость: Предлагает масштабируемость на основе каждого сервиса.

- Повышенная сложность: С ростом числа сервисов управление связью между ними может стать сложным.

Почитать
про архитектурные шаблоны

@csharp_ci
Что выведет на экран этот код?
Anonymous Quiz
49%
7
33%
11
18%
15
Microsoft наконец-то сделала правильную работу с фоновыми задачами.

Что они сделали?

Для тех, кто не знает:

Фоновые задачи позволяют обрабатывать некоторые части работы приложения в фоновом режиме, чтобы не прерывать обычную работу приложения.

Например, это может быть обработка сообщений в фоновом режиме без остановки других действий в приложении.

Что было не так до выхода .NET 8?

До .NET 8 при запуске приложения размещенные в нем службы запускались одна за другой. Каждая служба должна была завершить запуск, прежде чем могла начаться следующая.

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

Решение в .NET 8:

В .NET 8 две новые функции позволяют нам запускать или останавливать службы одновременно, а не одну за другой. Вы можете включить эту функцию, изменив настройки в HostOptions для всех используемых служб.

@csharp_ci
Архитектура MVC и MVP - в чем разница?

MVC (Model View Controller) и MVP (Model View Presenter) - это паттерны проектирования, которые разделяют приложение на отдельные компоненты. Оба паттерна направлены на разделение задач, но в их подходе есть некоторые различия.

1️⃣Взаимодействие с пользователем
Оба паттерна начинаются, когда пользователь взаимодействует с пользовательским интерфейсом приложения, который управляется представлением.

2️⃣Обработка событий
В MVC представление пересылает событие соответствующему контроллеру. В то время как в MVP представление пересылает событие соответствующему презентеру.

3️⃣Обновление модели
Процесс на этом этапе снова очень похож для обоих шаблонов. Если требуется изменить данные, то и контроллер, и ведущий дают указание модели обновить данные.

MVP было создано для доработки недостатков MVC системы. Оба типа архитектуры актуальны по сегодняшний день и выбор крайне ситуативен

@csharp_ci
🖥 Больше задач и тестов по C#

👉C# quiz — тут решаем задачи, проходим тесты и изучаем код и готовимся к собеседованию, подписывайся

👉 папка С# разработчика: https://t.iss.one/addlist/P5AWf_YPuyBmMjMy
Please open Telegram to view this post
VIEW IN TELEGRAM