Асинхронные примитивы синхронизации: об алгоритмах троттлинга запросов и многом другом в докладе Евгения Пешкова на DotNext 2022
Проблемы на бэкенде периодически случаются у всех. Части этих ситуаций можно избежать, если провести нагрузочное тестирование, определить пределы возможностей сервиса и заранее ограничить количество одновременно обрабатываемых запросов.
Это позволяет сгладить неравномерность нагрузки и справиться с обработкой хотя бы части запросов, что гораздо лучше полного падения сервиса. Решить задачу Rate Limiting помогает примитив синхронизации под названием семафор. Он пропускает внутрь заданное количество потоков, а остальные ставит в очередь. Однако современные приложения — асинхронные, использовать в них обычный семафор неэффективно.
И здесь у разработчиков фреймворков и highload-сервисов появляется необходимость выбора алгоритма реализации семафора, работающего не на уровне потоков, а на уровне асинхронных задач. Неудачно выбранный алгоритм еще больше нагрузит сервис, который и так работает под нагрузкой на пределе возможностей.
📺 Смотреть
Проблемы на бэкенде периодически случаются у всех. Части этих ситуаций можно избежать, если провести нагрузочное тестирование, определить пределы возможностей сервиса и заранее ограничить количество одновременно обрабатываемых запросов.
Это позволяет сгладить неравномерность нагрузки и справиться с обработкой хотя бы части запросов, что гораздо лучше полного падения сервиса. Решить задачу Rate Limiting помогает примитив синхронизации под названием семафор. Он пропускает внутрь заданное количество потоков, а остальные ставит в очередь. Однако современные приложения — асинхронные, использовать в них обычный семафор неэффективно.
И здесь у разработчиков фреймворков и highload-сервисов появляется необходимость выбора алгоритма реализации семафора, работающего не на уровне потоков, а на уровне асинхронных задач. Неудачно выбранный алгоритм еще больше нагрузит сервис, который и так работает под нагрузкой на пределе возможностей.
📺 Смотреть
YouTube
Евгений Пешков «Алгоритмы троттлинга запросов»
Проблемы на бэкенде периодически случаются у всех. Части этих ситуаций можно избежать, если провести нагрузочное тестирование, определить пределы возможностей сервиса и заранее ограничить количество одновременно обрабатываемых запросов. Это позволяет сгладить…
Представьте, что вы пытаетесь разрешить cross-origin запросы из фиксированного набора доменов. Вы правильно настроили CORS, но приложение всегда показывает запросы как unauthenticated. В очередной любопытной статье Эндрю Лок показывает, как решить эту проблему с помощью ASP.NET Core Identity.
Немного забегая вперёд отметим, что проблема заключалась в SameSite cookies. Эту тему Эндрю затронул уже в следующей статье.
Немного забегая вперёд отметим, что проблема заключалась в SameSite cookies. Эту тему Эндрю затронул уже в следующей статье.
Помните анонс поддержки JSON в EF Core 7? Внимательный читать блога заметил, что приведенный выше запрос не работает, то есть отсутствует фильтрация коллекций. Как альтернатива –– использовать FromSql, о чем Khalid Abuhakmeh и говорит в статье.
Подборка свежих обновлений для .NET-разработчика: .NET 8 Preview 5 и не только.
◾ Announcing .NET 8 Preview 5
◾ ASP.NET Core updates in .NET 8 Preview 5
◾ Announcing .NET MAUI in .NET 8 Preview 5
◾ .NET June 2023 Updates – .NET 7.0.7, .NET 6.0.18
◾ Announcing Vercel and Azure Cosmos DB Integration
◾ Announcing Microsoft Graph Toolkit v3.0 release candidate
◾ Azure SDK Release (June 2023)
◾ PSResourceGet Preview is Now Available
◾ Visual Studio 2022 17.7 Preview 2 is here!
#news #dotnet8
◾ Announcing .NET 8 Preview 5
◾ ASP.NET Core updates in .NET 8 Preview 5
◾ Announcing .NET MAUI in .NET 8 Preview 5
◾ .NET June 2023 Updates – .NET 7.0.7, .NET 6.0.18
◾ Announcing Vercel and Azure Cosmos DB Integration
◾ Announcing Microsoft Graph Toolkit v3.0 release candidate
◾ Azure SDK Release (June 2023)
◾ PSResourceGet Preview is Now Available
◾ Visual Studio 2022 17.7 Preview 2 is here!
#news #dotnet8
Оператор null-объединения «??» устанавливает значения по умолчанию для типов, которые допускают значение null. А для вас какой вариант читабельнее?
#dotnet #csharp #tip by Milan Jovanović
#dotnet #csharp #tip by Milan Jovanović
💭 Какие библиотеки и инструменты вы чаще всего используете при разработке проектов .NET? Поделитесь опытом.👇
#холивар
#холивар
Локальный запуск больших языковых моделей с помощью LlamaSharp: ваш собственный ИИ на C#, похожий на ChatGPT.
Читать
Читать
GitHub
GitHub - SciSharp/LLamaSharp: A C#/.NET library to run LLM (🦙LLaMA/LLaVA) on your local device efficiently.
A C#/.NET library to run LLM (🦙LLaMA/LLaVA) on your local device efficiently. - SciSharp/LLamaSharp
⚡JetBrains .NET Guide пополнился новым материалом про основы Blazor
Гайд начинается с основ и постепенно охватывает работу с формами, данными, JavaScript и многим другим.
Гайд начинается с основ и постепенно охватывает работу с формами, данными, JavaScript и многим другим.
Jetbrains
Blazor Essentials
Learn how to build a basic application with Blazor.
📌 Свежие и обновленные статьи для C#-разработчика на CodeMaze: подборка с начала июня
➖ How to Send Emails With the SendGrid API in C#
➖ How to Build Dynamic Queries With Expression Trees in C#
➖ How to Pass Parameters With a GET Request in ASP.NET Core
➖ Refactoring Change Preventers in C#
➖ Expression Trees in C#
➖ How To Set Up SSL Certificate In Visual Studio and .NET CLI
➖ Should We Use Records With EF Core as Model Classes?
➖ Managed vs Unmanaged Code (Garbage Collection) in C#
➖ Virtual Methods in C#
➖ InProcess and OutOfProcess Hosting Models in ASP.NET Core
➖ How to Read Values From Query Strings In ASP.NET Core
➖ How to Add a Global Route Prefix in ASP.NET Core
➖ How to Get Class Name as String in C#
➖ Working With Guid in C#
➖ Seamless Integration Testing With WireMock.NET
#dotnet #csharp #codemaze
➖ How to Send Emails With the SendGrid API in C#
➖ How to Build Dynamic Queries With Expression Trees in C#
➖ How to Pass Parameters With a GET Request in ASP.NET Core
➖ Refactoring Change Preventers in C#
➖ Expression Trees in C#
➖ How To Set Up SSL Certificate In Visual Studio and .NET CLI
➖ Should We Use Records With EF Core as Model Classes?
➖ Managed vs Unmanaged Code (Garbage Collection) in C#
➖ Virtual Methods in C#
➖ InProcess and OutOfProcess Hosting Models in ASP.NET Core
➖ How to Read Values From Query Strings In ASP.NET Core
➖ How to Add a Global Route Prefix in ASP.NET Core
➖ How to Get Class Name as String in C#
➖ Working With Guid in C#
➖ Seamless Integration Testing With WireMock.NET
#dotnet #csharp #codemaze
Code Maze
How to Send Emails With the SendGrid API in C#
In this article, we will take a look at how to send emails with the SendGrid API directly from our C# code.
Активные участники .NET-сообщества (Erik EJ, Arthur Vickers и Brice Lambson) демонстрируют новую версию CLI EF Core Power Tools и кейсы использования некоторых NuGet-пакетов для улучшения UX при создании CLI-инструмента.
📺 Смотреть
📺 Смотреть
YouTube
.NET Data Community Standup - New CLI edition of EF Core Power Tools
In today's standup, Erik will demonstrate the new CLI edition of EF Core Power Tools and show how he used a number of community NuGet packages to improve the user experience when creating a CLI tool.
Chapters:
00:00 Livestream begins
02:39 Welcome to the…
Chapters:
00:00 Livestream begins
02:39 Welcome to the…
Полезные заметки по использованию Telegram API и библиотеки TDLib: что требуется для взаимодействия с Telegram API, какие средства нужны для написания кода своего бота на C#, как их правильно установить и использовать.
Читать
Читать
Хабр
Telegram API и библиотека TDLib для .NET платформ
Доброго времени суток! В Telegram существует два вида API: Telegram Bot API (обыкновенный бот с пометкой "бот") и Telegram API (клиент и юзербот, который обладает больше функционалом, чем...
Команда Stack Overflow опубликовала результаты опроса разработчиков за 2023 год. Давайте обсудим то, что касается .NET-разработки:
🔝 C# на 8 месте в категории «Языки программирования, сценариев и разметки»
🔝 Microsoft SQL Server на 5 месте в категории «Базы данных»
🔝 Microsoft Azure на 2 месте в категории «Облачные платформы»
🔝 ASP.NET Core на 2 месте в категории «Веб-фреймворки и технологии»
🔝 .NET (5+) на 1 месте в категории «Другие фреймворки и библиотеки»
Visual Studio Code на 1 месте как самый популярный редактор кода, а IDE Visual Studio сильно отставая осталась на втором. Rider тем временем даже не в десятке.
🔝 C# на 8 месте в категории «Языки программирования, сценариев и разметки»
🔝 Microsoft SQL Server на 5 месте в категории «Базы данных»
🔝 Microsoft Azure на 2 месте в категории «Облачные платформы»
🔝 ASP.NET Core на 2 месте в категории «Веб-фреймворки и технологии»
🔝 .NET (5+) на 1 месте в категории «Другие фреймворки и библиотеки»
Visual Studio Code на 1 месте как самый популярный редактор кода, а IDE Visual Studio сильно отставая осталась на втором. Rider тем временем даже не в десятке.
Полезные заметки от Эндрю Лока по использованию библиотеки MiniValidation для поддержки рекурсивной валидации объекта IOptions в .NET 6+.
Читать
Читать
Andrew Lock | .NET Escapades
Validating nested DataAnnotation IOptions recursively with MiniValidation
In this post
💭 Экосистема .NET очень активно развивается, в связи с чем есть резонный вопрос.
Вы считаете нужным каждый год обновлять кодовую базу проекта? Если не обновляетесь, расскажите, какая в вашем рабочем/пет проекте версия .NET? 🥁
Вы считаете нужным каждый год обновлять кодовую базу проекта? Если не обновляетесь, расскажите, какая в вашем рабочем/пет проекте версия .NET? 🥁