18377
По всем вопросам- @haarrp C# - обучающий канал Senior C# разработчика. @ai_machinelearning_big_data - Machine learning @itchannels_telegram - 🔥лучшие ит-каналы @csharp_ci - C# академия @pythonlbooks- книги📚 Реестр РКН: https://clck.ru/3Fk3kb
🖥 Serilog - баблиотека для реализации структурированного логирования в приложениях для .NET..
Вот примеры лучших практик при разработке приложений :
- Логирования запросов в Serilog
- Использование системы конфигов
- Добавление CorrelationId в логи
- Регистрация всех важных событий
- Использование Seq при разработки
🖥 Github
Если вы хотите узнать, как получить максимальную отдачу от Serilog, ознакомьтесь с этой статьей.
@csharp_ci
🖥 Рефа́кторинг (англ. refactoring), или перепроекти́рование кода, перерабо́тка кода, равноси́льное преобразова́ние алгоритмов — процесс изменения внутренней структуры программы, не затрагивающий её внешнего поведения и имеющий целью облегчить понимание её .
В основе рефакторинга лежит последовательность небольших эквивалентных (то есть сохраняющих поведение) преобразований. Поскольку каждое преобразование маленькое, программисту легче проследить за его правильностью, и в то же время вся последовательность может привести к существенной перестройке программы и улучшению её согласованности и чёткости.
Одно изменение (рефакторинг) мало что дает. Но последовательное применение различных техник рефакторинга приводит к значительным изменениям в коде.
Нет лучшего способа научиться рефакторингу, чем практика.
Представляем вам упражнения по рефакторингу и 5 потрясающих техник рефакторинга кода с примерами.
📌 Читать
@csharp_ci
🖥 6 типов баз данных, которые необходимо знать
1. Реляционные базы данных 💼
- Модель данных: Организует данные в таблицы со строками и столбцами.
- Примеры: MySQL, PostgreSQL, Oracle, SQL Server.
- Ключевые особенности: Соответствие стандарту ACID, высокая степень согласованности данных, структурированное хранение данных, поддержка SQL-запросов, хорошая приспособленность к сложным транзакциям и созданию отчетов.
2. База данных для документов 📄.
- Модель данных: Хранение данных в виде полуструктурированных или JSON-подобных документов.
- Примеры: MongoDB, CouchDB, Firebase Firestore.
- Ключевые особенности: Гибкая схема, горизонтальная масштабируемость, поддержка полуструктурированных данных, хорошо подходит для систем управления контентом и приложений реального времени.
3. In-Memory Database 🚀.
- Модель данных: Хранит данные полностью в оперативной памяти (ОЗУ) системы.
- Примеры: Redis, Memcached, Apache Ignite.
- Ключевые особенности: Сверхбыстрый поиск данных, низкая задержка, подходит для кэширования, управления сессиями и аналитики в реальном времени.
4. Графовые базы данных 🌐.
- Модель данных: Представляет данные в виде узлов и ребер для моделирования отношений.
- Примеры: Neo4j, Amazon Neptune, ArangoDB.
- Ключевые особенности: Эффективный запрос сложных отношений, обход графов, подходит для социальных сетей, рекомендательных систем и обнаружения мошенничества.
5. Базы данных для временных рядов 📈.
- Модель данных: Оптимизирована для упорядоченных по времени точек данных, таких как показания датчиков или файлы журналов.
- Примеры: InfluxDB, Prometheus, TimescaleDB.
- Ключевые особенности: Эффективное хранение и извлечение данных временных рядов, агрегирование, , идеально подходит для мониторинга IoT данных.
6. Пространственные базы данных 🌍.
- Модель данных: Предназначена для хранения пространственных или географических данных.
- Примеры: PostGIS (расширение для PostgreSQL), MongoDB Geospatial, Microsoft SQL Server Spatial.
- Ключевые особенности: Геопространственная индексация, поддержка пространственных типов данных (точки, полигоны, линии), подхожит для сервисов, основанных на определении местоположения, ГИС (географических информационных систем) и картографических приложений.
@csharp_ci
🖥 В EF 7 наконец-то появилось несколько замечательных функций, упрощающих работу.
Но главной особенностью является новый API массового обновления.
Добавлено два новых метода:
- ExecuteUpdate
- ExecuteDelete
Разумеется, есть асинхронные перегрузки каждого из них.
ExecuteUpdate позволяет запустить массовое обновление с помощью LINQ.
ExecuteDelete позволяет написать запрос на удаление с помощью LINQ.
Почему это полезно?
⚡️ Производительность.
Теперь вы можете писать оптимизированные запросы UPDATE и DELETE.@csharp_ci
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— Разворачиваем и заворачиваем в docker проект ASP.NET core на Ubuntu в связке с PostgreSQL
— Пример для иллюстрации принципов SOLID который я (кажется) понял
— Наиболее часто используемые команды Linux
— 79 Ресурсов, которые следует прочитать, чтобы улучшить свои навыки в области проектирования систем:
— Бесплатные сертификационные курсы для специалистов по данным
— Road Run, или как я свою первую игру делал. Часть 6
— C#: Bug ou Feature?
— Mejorando Rendimiento y Escalabilidad: Guía de Caché Distribuido en ASP.NET Core
— Get The Total Free Space Available On A Drive
— Get The Total Free Space Available On A Drive
— C# - System.Text.Json Source Generators
— Game Dev Digest — Issue #216 - The Road Ahead
— Get The Total Free Space Available On A Drive
— Primary Constructors in C# 12.0
— Convert Excel to CSV or CSV to Excel in C#
— How to Build a Razor Class Library for Web Camera Access
Посмотреть:
🌐 Mixtral 8x7B - это сет из 8 нейронок, которые работают вместе
🌐 Unlock Creativity with .NET Generate, Validate and Customize Random Words Effortlessly! 🚀 (⏱ 11:18)
🌐 NativeAOT in .NET 8 Has One Big Problem (⏱ 14:47)
🌐 The 2 New Web Application Types Added in .NET 8 (⏱ 10:33)
Хорошего дня!
@csharp_ci
SQL-запросы: Порядок выполнения!
@csharp_ci
🖥 Dumpify
Классная библиотека для структурированного и красочного вывода любого объекта в консоль, трассировку, отладочные события или ваш собственный пользовательский вывод.
https://github.com/karenpayneoregon/csharp-11-ef-core-7-features/tree/master/DumpifySample
@csharp_ci
❓EF Core: Что такое декартов взрыв?❓
EF Core: Что такое декартов взрыв? 💥
И как его избежать? 👇
Декартов взрыв возникает, когда запрос выдает непропорционально большое количество записей из-за объединения каждого элемента одного множества с каждым элементом другого множества.
В базах данных это часто приводит к проблемам с производительностью, поскольку набор результатов может стать чрезвычайно большим.
Например, если есть 100 авторов и 1000 книг, то этот запрос выдаст 100 * 1000 = 100 000 записей, многие из которых могут быть нерелевантными, если вас интересуют только пары, в которых автор связан с книгой.
На практике такой запрос обычно уточняется с помощью условия объединения, которое определяет, как связаны элементы двух наборов.
👉 Почитать
@csharp_ci
ℹ️8 основных протоколов Интернета, которые вы должны знатьℹ️
▷ HTTP (Hypertext Transfer Protocol) - это стандарт для передачи веб-контента через Интернет.
▷ HTTPS (Hypertext Transfer Protocol Secure) - это защищенная версия HTTP, которая шифрует данные для безопасного веб-общения.
▷ TCP (Transmission Control Protocol) - это надежный, ориентированный на соединение протокол для передачи данных по сетям, обеспечивающий доставку данных.
▷ IP (Internet Protocol) - это набор правил, регулирующих маршрутизацию и адресацию пакетов данных в Интернете.
▷ FTP (File Transfer Protocol) используется для передачи файлов между компьютерами в сети или через Интернет.
▷ SSH (Secure Shell) - защищенный протокол для удаленного доступа к сетевым устройствам и серверам.
▷ SMTP (Simple Mail Transfer Protocol) используется для отправки электронных сообщений между почтовыми серверами.
▷ UDP (User Datagram Protocol) - протокол передачи данных по сетям без подключения и более быстрый, но не гарантирующий доставку.
@csharp_ci
❓Архитектура MVC и MVP - в чем разница?❓
MVC (Model View Controller) и MVP (Model View Presenter) - это паттерны проектирования, которые разделяют приложение на отдельные компоненты. Оба паттерна направлены на разделение задач, но в их подходе есть некоторые различия.
1️⃣Взаимодействие с пользователем
Оба паттерна начинаются, когда пользователь взаимодействует с пользовательским интерфейсом приложения, который управляется представлением.
2️⃣Обработка событий
В MVC представление пересылает событие соответствующему контроллеру. В то время как в MVP представление пересылает событие соответствующему презентеру.
3️⃣Обновление модели
Процесс на этом этапе снова очень похож для обоих шаблонов. Если требуется изменить данные, то и контроллер, и ведущий дают указание модели обновить данные.
MVP было создано для доработки недостатков MVC системы. Оба типа архитектуры актуальны по сегодняшний день и выбор крайне ситуативен
@csharp_ci
❓Монолитная архитектура VS архитектура микросервисов❓
В области архитектуры программного обеспечения выбор между монолитом и микросервисами может определить судьбу вашего приложения.
1️⃣Монолитная архитектура 🏰
- Один большой замок: Монолиты похожи на величественный замок, где все компоненты тесно связаны в единую структуру.
- Унифицированность и простота: Легко разрабатывать и внедрять благодаря единой структуре. Изменения вносятся в одном месте, что упрощает разработку.
- Проблемы масштабирования: Масштабирование может быть сложной задачей. Когда одна часть системы требует обновления, необходимо масштабировать все приложение.
2️⃣Архитектура микросервисов 🌐.
- Город специализированных зданий: Микросервисы напоминают шумный город, где каждый сервис - это специализированное здание, выполняющее определенную функцию.
- Масштабируемость и гибкость: Предлагает масштабируемость на основе каждого сервиса.
- Повышенная сложность: С ростом числа сервисов управление связью между ними может стать сложным.
Почитать про архитектурные шаблоны
@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
❓Как перестать тратить ресурсы сервера?❓
✅Можно использовать CancellationToken. ✅
▪️CancellationToken можно использовать для обеспечения оперативной и эффективной отмены операций с базой данных.
Длительные запросы или операции с базой данных могут повлиять на производительность и отзывчивость вашего API. Использование маркеров отмены позволяет клиентам отменять эти операции, если они занимают больше времени, чем ожидалось, или больше не нужны.
Допустим, вы тестируете конечную точку API с длительным периодом выполнения через Postman.
Если вызов слишком длинный, можно нажать на кнопку "Отмена", чтобы остановить вызов.
Если в вашем коде есть поддержка CancellationToken, то операция будет отменена и ресурсы будут освобождены.
@csharp_ci
🖥 Хотите улучшить свои навыки работы с .NET и архитектурой программного обеспечения?
Вот 10 лучших статей еженедельника The .NET за этот год.
1. Архитектура вертикального среза - https://www.milanjovanovic.tech/blog/vertical-slice-architecture.
2. Использование нескольких EF Core DbContexts в одном приложении - https://www.milanjovanovic.tech/blog/using-multiple-ef-core-dbcontext-in-single-application
3. Правильный способ использования HttpClient в .NET - https://www.milanjovanovic.tech/blog/the-right-way-to-use-httpclient-in-dotnet
4. Как подойти к созданию чистой структуры папок в архитектуре - https://www.milanjovanovic.tech/blog/clean-architecture-folder-structure
5. От монолита к микросервисам -https://www.milanjovanovic.tech/blog/monolith-to-microservices-how-a-modular-monolith-helps
6. Реализация API-шлюза для микросервисов с помощью YARP - https://www.milanjovanovic.tech/blog/implementing-an-api-gateway-for-microservices-with-yarp
7. Health Checks In ASP .NET Core For Monitoring Your Applications - https://www.milanjovanovic.tech/blog/health-checks-in-asp-net-core
8. Запуск фоновых задач в ASP .NET Core - https://www.milanjovanovic.tech/blog/running-background-tasks-in-asp-net-core
9. Функциональная обработка ошибок в .NET с помощью шаблона результатов - https://www.milanjovanovic.tech/blog/functional-error-handling-in-dotnet-with-the-result-pattern
10. Паттерн CQRS с помощью MediatR - https://www.milanjovanovic.tech/blog/cqrs-pattern-with-mediatr
@csharp_ci
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— Ошибки и подозрительные места в исходниках .NET 8
— Топ-10 ошибок, найденных в C#-проектах за 2023 год
— .NET CLI — Зачем загружать все родительские сборки при загрузке сборки
— Атомарный подход в Unity
— Как на самом деле Async/Await работают в C#. Часть 1. Проблемы модели асинхронного программирования (APM)
— MIDI → Метр → MIDI
— Zenject: приемы и хитрости
— Windows form move items up/down in ListView and more
— C# - Using Static Caches for Efficiency
— Bugs and suspicious places in .NET 8 source code
— HashMap in C#: Detailed Guide
— Circuit Breaker Pattern in C#
— Advent of Code 2023: Day 13 Point of Incidence
— C# - with expressions
— Removing comments from code-based data source
— How to Customize the Rows of ASP.NET Core DataGrid using Templates
— Using ByteSize to Represent Byte Size
Посмотреть:
🌐 C# 12 - The Best New Features from the .NET 8 Release! (⏱ 18:53)
🌐 The New Data Protection Features of .NET 8 (GDPR) (⏱ 14:10)
🌐 Don’t Use the Wrong LINQ Methods (⏱ 12:42)
Хорошего дня!
@csharp_ci
Предварительная версия 2 .NET Aspire уже доступна! 🎉
Вы прочитать об этом на https://devblogs.microsoft.com/dotnet/announcing-dotnet-aspire-preview-2/.
Полный список изменений в примечаниях к выпуску на https://github.com/dotnet/aspire/releases/tag/v8.0.0-preview.2.23619.3.
@csharp_ci
🖥 𝗧𝗵𝗲 𝘀𝘁𝗮𝘁𝗲 𝗼𝗳 𝗼𝗽𝗲𝗻 𝘀𝗼𝘂𝗿𝗰𝗲 𝗶𝗻 𝟮𝟬𝟮𝟯 by GitHub
GitHub только что опубликовал свой последний отчет о состоянии открых проектов. Авторы отметили тренд на использование разработчиками технологий искусственного интеллекта и тренд на создание приложений на основе искусственного интеллекта.
Они выделили основные тенденции:
🔹 Разработчики все чаще используют генеративный ИИ: Все больше разработчиков работают с моделями OpenAI ( 92% ) и с моделями других ИИ-компаний; в 2023 году проекты генеративного ИИ с открытым исходным кодом входят в десятку самых популярных проектов по количеству контрибьюторов.
🔹 Наблюдается тренд на работу с облачными приложениями:
Развертывание облаков становится стандартом; резко возросло количество использования разработчиками Docker контейнеров, IaC и других облачных нативных технологий.
🔹 В 2023 году на GitHub было создано 98 млн новых проектов (за 2022 год - 85.7 млн, за 2021 - 61 млн, за 2020 - 60 млн). Общее число проектов достигло отметки в 420 млн (+27%), а число публично доступных репозиториев - 284 млн (+22%).
🔸 За год добавлено около 65 тысяч новых проектов, связанных с машинным обучением, это на 248% больше, чем в прошлом году. Число AI-проектов за год выросло на 148%.
🔸 Аудитория GitHub за год выросла на 20.2 млн пользователей (+26%) и теперь достигает 114 млн (в прошлом году было 20.5 млн, позапрошлом - 73 млн, три года назад - 56 млн). На первом месте по числу разработчиков находится США, на втором - Индия, на третьем - Китай, на четвёртом Бразилия, на пятом - Великобритания, на шестом - РФ, на седьмом Германия. К 2027 году Индия обгонит США как крупнейшее сообщество разработчиков на GitHub
🔸Javascript остается самым популярным язком. Второе место сохраняет за собой Python.Популярность TypeScript выросла на 37 %. и он вытеснил на четвёртое место язык Java. 5, 6 и 7 места удержали за собой языки С#, C++ и PHP. На восьмое место поднялся язык С, который вытеснил на девятое место Shell. Десятое место занял Go.
🔸 𝗥𝘂𝘀𝘁 растет быстрее всех остальных языков в этом году (рост на 40 % по сравнению с предыдущим годом).
🔸 𝟰.𝟯 миллиона открытых и приватных репозиториев используют 𝗗𝗼𝗰𝗸𝗲𝗿𝗳𝗶𝗹𝗲𝘀. Это является следcтвием роста использования Terraform и других облачных нативных технологий, который мы наблюдали в течение последних нескольких лет.
🔸 Сингапур занял первое место по количеству новых разработчиков на душу населения.
📌 Полный отчет
ai_machinelearning_big_data
⚡️ Обзор лучшиех новых функций в Microsoft .NET 8 от
https://infoworld.com/article/3711422/the-best-new-features-in-microsoft-net-8.html #aspnetcore
@csharp_ci
Изучаем разработку на .net и С#
1. Что такое бизнес логика и как она реализуется в приложении
2. Что такое JWT аутентификация и как ее использовать в C#
3. Что такое валидация моделей и валидация вообще
4. Зачем нужна интеграция с разными сервисами и как ее делать на примере github
5. Как подключить БД к проекту - Entity Framework Core
6. Работа с БД через EF Core | для чего нужен AutoMapper
7. Закрепляем цикл разработки на C# используя изученныe технологии #1
8. Закрепляем цикл разработки на C# используя изученныe технологии #2
9. Подключаем swagger документацию в asp.net core
10. Начинаем работать с логированием в C#
#video #csharp
https://www.youtube.com/watch?v=5nGuYcm-lM0&list=PLmmIuINqEtvwYxvF_ty6c1tsc3Hbg4E-G
@csharp_ci
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— 1000 и 1 способ инициализации типов в C# 12.0
— Почему x^0 = 1 наглядно
— Алгоритм MiniMax. Использование минимакса в Unity на примере игры Поймай Овечку
— Недооцененный паттерн «Спецификация» в связке с паттерном «Репозиторий»
— Современные варианты баз данных
— 8 бесплатных курсов по большим языковым моделям
— 🎬 Video - Beautiful Idea 2023 - Return Template
— C# - Extended Property Patterns
— Game Dev Digest — Issue #215 - Shaders, Performance, Design and more
— C# .NET Top 10 Compiler and .NET environment limits
— Understanding Value Types and Reference Types in C#
— C# - Record Structs for Immutable Value Types
— How to Add Watermarks and Bookmarks in .NET using the PDF Library
— Advent of Code 2023: Day 6 - Wait For It
— 🎬 Video - How to use CodeBehind framework?
— C# - Interpolated String Handling
Посмотреть:
🌐.NET Configuration In Depth | .NET Conf 2023
🌐 6 INSANE Things You Didn't Know You Could Write in C# (⏱ 12:26)
🌐 Why Aren't More Developers Using C#? (⏱ 10:55)
Хорошего дня!
@csharp_ci
❓Что такое GraphQL и как его использовать в .NET?❓
GraphQL - это язык запросов для API.
Он позволяет клиентам получать именно те данные, которые им нужны.
Чем это полезно?
Это может повысить производительность за счет сокращения количества обходов.
Конечные точки GraphQL могут вернуть все необходимые данные за один запрос.
Как это работает на сервере?
Когда GraphQL-запрос попадает в ваш API, вы по-прежнему запрашиваете базу данных. Но вы разбираете GraphQL-запрос и получаете необходимые данные.
Так что в этом отношении GraphQL похож на REST.
Однако в GraphQL проще сформировать ответ API.
Вы также можете реализовать это с помощью REST API, но это будет более многословным.
Hot Chocolate - это популярный сервер GraphQL для приложений .NET.Он устраняет все сложности, связанные с созданием GraphQL-совместимых API.
Вы можете использовать клиент Postman GraphQL для тестирования ваших API.
@csharp_ci
🖥 Больше задач и тестов по C#
👉C# quiz — тут решаем задачи, проходим тесты и изучаем код и готовимся к собеседованию, подписывайся
👉 папка С# разработчика: /channel/addlist/P5AWf_YPuyBmMjMy
Microsoft наконец-то сделала правильную работу с фоновыми задачами.
Что они сделали?
Для тех, кто не знает:
Фоновые задачи позволяют обрабатывать некоторые части работы приложения в фоновом режиме, чтобы не прерывать обычную работу приложения.
Например, это может быть обработка сообщений в фоновом режиме без остановки других действий в приложении.
Что было не так до выхода .NET 8?❓
До .NET 8 при запуске приложения размещенные в нем службы запускались одна за другой. Каждая служба должна была завершить запуск, прежде чем могла начаться следующая.
Обычно это не вызывало проблем, но иногда медленная служба могла задержать запуск всего приложения.
Решение в .NET 8:
В .NET 8 две новые функции позволяют нам запускать или останавливать службы одновременно, а не одну за другой. Вы можете включить эту функцию, изменив настройки в HostOptions для всех используемых служб.
@csharp_ci
Developer C#
Мы ищем специалиста, который возьмет на себя часть развития логистической платформы, которая занимается развитием сортировочного центра. Разработка IT решений будет основана на имеющейся микросервисной архитектуре, но будет оптимизирована и модернизирована под текущие процессы исходя из целей и задач бизнеса.
Какая работа тебя ждет:
-Вынести сервисы сортировочного центра на собственную
инфраструктуру
*Поддержка SLA сервисов 99.9%.
-Построить целевой технологический roadmap
*Сервисы выделены и работают на собственной
инфраструктуре
Technology:
C#, PostgreSQL, Redis, Kafka, Kubernetes.
Считаем что ты справишься, если:
-Имеешь опыт коммерческой разработки на C#, .NET
Framework/Core от 3-х лет
-Знаешь нюансы работы с PostgreSQL, Kafka
-Умение разбираться и работать с чужим кодом
-Опыт создания клиент-серверных приложений,
понимание принципов построения распределенных
систем
-Понимаешь принципы асинхронной архитектуры
-Работал с Kubernetes
-Знаком с observability стеком - Jaeger, Kibana, Grafana
Резюме можете направить по контактам или позвонить:
+99890 0619520 Анастасия (Telegram, WhatsApp)
@AntriaGroup_PremiumTradeGroup
ℹ️Получение случайных элементов из коллекцииℹ️
Получение случайных элементов из коллекции возможно всего одной строкой. 💡
.NET 8 приносит нам много нового во всех областях его деятельности. Одной из наиболее интересных новинок является случайный выбор определенного количества элементов в коллекции - с помощью встроенной функции.
Метод называется GetItems<T>().
Вы можете передать коллекцию и желаемое количество элементов.
Метод доступен в пространствах под названием System.Random.
В данном примере мы используем метод GetItems<T>() для случайной выборки 3 животных из массива.
@csharp_ci
🔥 Дайджест полезных материалов из мира C# за неделю
Почитать:
— Возвращаемся на Гроув-Стрит. Анализ движка Grand Theft Auto: San Andreas на Unity
— Как базы данных выполняют SQL-запросы?
— Как устроены DDoS-атаки (и как их предотвратить) Часть 1 .
— Rebuild All currently doesn't work properly
— .NET 8, JIT e AOT
— The NuGet Publishing Puzzle
— Enhancing Explore.CLI
— Understanding the Heap and the Stack in Computer Systems
— Return to Grove Street. Checking the Grand Theft Auto: San Andreas engine in Unity
— Introduction to analyzing text with Azure AI Language Service and C#
— How to Use While Loop in C# for Beginners
— Tests Everywhere - .NET C#
— How Coding to an Interface Can Increase Your Code’s Flexibility
Посмотреть:
🌐 Banishing Magic Strings - A Developer's Guide to Constants and DRY Coding (⏱ 00:57)
🌐 Unleashing Meta's DIY On-Premise AI Magic with Llama!🚀 (⏱ 00:54)
🌐 What Is .NET Aspire? The Insane Future of .NET! (⏱ 18:35)
🌐 How to Deploy .NET 8's New .NET Aspire Stack (⏱ 10:42)
🌐 The New Best Way To Search for Values in .NET 8 (⏱ 11:05)
🌐 The C# 12 Feature You Shouldn’t Use, Yet (⏱ 10:07)
Хорошего дня!
@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