C# 1001 notes
6.53K subscribers
315 photos
10 videos
2 files
303 links
Регулярные короткие заметки по C# и .NET.

Просто о сложном для каждого.

admin - @haarrp
Download Telegram
🖥 А вы знали, что INumber<T> — это встроенный способ ограничить дженерики только числовыми типами?

🌟 Этот способ появился довольно давно, начиная с dotnet 7!

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 UUID (Guid в C#) широко используются в качестве уникальных идентификаторов в базах данных. UUID являются случайными, что делает их популярными в распределенных системах

❗️ Однако у UUID есть некоторые недостатки:

🌟 UUID замедляют вставки в базу данных. Каждая вставка должна обновлять кластеризованный индекс, дерево B+. Поскольку UUID являются случайными, это дорогостоящая операция, так как она требует повторной балансировки дерева. Фрагментация индекса также высока (это плохо)

🌟 Более высокие затраты на хранение. Длина UUID составляет 128 бит, а если хранить его в виде строки в удобном для чтения формате, то он становится еще больше

💡 Эти недостатки можно исправить с ULID. Он также 128-битный, поэтому совместим с UUID. Однако, в отличие от UUID, ULID можно сортировать. Первые 40 бит ULID представляют собой временную метку, что делает ULID монотонно увеличивающимися.

🌟 Существует пакет .NET, реализующий спецификацию ULID, поэтому вы можете начать использовать его немедленно!

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Включение функций без повторного развёртывания приложения

❗️ Используйте Feature Flags!

💡 Флаги функций в .NET позволяют динамически включать или отключать определённые функциональные возможности приложения во время выполнения, что упрощает управление поведением системы без необходимости развёртывания новой версии.

🔍 Основные концепции:

🌟 Флаги функций: Переключатели, управляющие включением или отключением определённых функций

🌟 Управление флагами: В .NET 8 появился встроенный API для управления флагами

🌟 Постепенный запуск: Позволяет запускать новые функции для ограниченного числа пользователей, а затем включать для всех

🌟 Источники конфигурации: Флаги можно настраивать через appsettings.json, Azure App Configuration или внешние сервисы

🌟 Фильтры функций: Условия для активации флагов (например, на основе ролей пользователей или окружения)


💡 Пример: Вы можете включить новую функцию только для 10% пользователей и анализировать, как они реагируют на изменения, прежде чем развернуть её глобально

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
openai-dotnet — библиотека, которая предоставляет .NET SDK для работы с OpenAI API. Она позволяет разработчикам легко интегрировать модели OpenAI в приложения, написанные на языке C# и других языках платформы .NET

🌟 Библиотека поддерживает взаимодействие с различными возможностями OpenAI, такими как GPT и другие инструменты, предлагаемые через их API

🔐 Лицензия: MIT

▪️Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Создание GraphQL-клиента на .NET с использованием Rider и StrawberryShake может оказаться сложной задачей без хорошего руководства.

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

Далее мы рассмотрим поэтапный процесс настройки среды разработки, определения схем, генерации клиентского кода и интеграции всех компонентов в проект.

Для начала следует ознакомиться с плагином GraphQL в Rider и фреймворком StrawberryShake.

атем следуйте шагам по настройке, описанным ниже.

📌 Подробнее

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Всем привет!
Наша международная продуктовая компания в сфере IoT ищет опытного C# разработчика для работы над проектом по созданию 3D digital twins для промышленных компаний. Мы разрабатываем передовые платформы для управления и мониторинга сетей, интегрирующие сбор данных в реальном времени, автоматизацию и аналитику. Работа полностью удалённая (не из РФ и РБ).

🛠 Стек: C#, .NET Core, REST API, WebSockets, MongoDB, SNMP
💼 Зарплата: $7000-9000
👥 Команда: небольшая и плоская, опытные разработчики со стажем 10+ лет.

Требуется опыт глубокой работы с протоколом SNMP и кроссплатформенной разработкой (Windows, Linux).

Пока на практике, нам встречаются либо опытные C# разработчики без опыта SNMP, либо сильные специалисты со знанием SNMP, но с другим стэком технологий (обычно С++, Java).
Если вы имеете глубокие знания и обширный опыт с C# и SNMP - будем очень рады познакомиться и пообщаться. Если вы знаете таких специалистов - будем признательны за рекомендацию, готовы обсудить бонус в случае найма такого специалиста к нам в команду

Если интересно — пишите в личные сообщения @dariapeopleverywhere!
🖥 Новый способ создания блокировок в .NET 9: Lock(). Это упрощает код и избавляет от необходимости вручную управлять блокировками в finally

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Проверка пагинации в .NET: с Entity Framework и без него

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

🔗 Читать: *клик*

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Wexflow — это мощная платформа для автоматизации рабочих процессов с открытым исходным кодом. Она позволяет автоматизировать задачи, такие как обработка файлов, отправка уведомлений, резервное копирование, интеграция с различными API и многое другое

🌟 Wexflow обладает рядом функций, включая интеграцию с базами данных и облачными сервисами, поддержку различных форматов данных и протоколов, а также собственным приложением для Android!

🔐 Лицензия: MIT

🖥 Github

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Эта статья рассказывает о продвинутых методах присваивания значений в кортежах в языке C#. В частности, рассматриваются паттерны распаковки кортежей с использованием деконструкции для более удобного доступа к элементам, а также способы работы с кортежами для создания удобочитаемого и безопасного кода

🔗 Ссылка: *клик*

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Эта статья рассматривает использование паттерна Result для обработки ошибок в .NET!

💡 Автор объясняет недостатки традиционного подхода с использованием исключений, отмечая его сложность и неявность. Паттерн Result позволяет более функционально и явно управлять ошибками, что улучшает читаемость кода и тестируемость. В статье приводится пример кода, а также создаются классы Result и Error для документирования ошибок, что делает возможные ошибки явными для разработчиков.

🔗 Ссылка: *клик*

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Изучение кортежей в C# как альтернативы анонимным типам!

🌟 Узнайте, как использовать кортежи в C# для группировки элементов, возврата нескольких значений и улучшения читаемости кода. Изучите примеры, ключевые отличия от анонимных типов и практические задания на легком, среднем и сложном уровнях!

🔗 Ссылка: *клик*

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM
🖥 Эта статья описывает методы повышения продуктивности при создании CRUD API в .NET!

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

🔗 Ссылка: *клик*

@csharp_ci
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥 Вышел .NET 9!

Основные улучшения:

⭐️ Оптимизация для облачных приложений: Платформа .NET 9 представила Aspire — новый стек для создания облачных решений. Aspire облегчает разработку распределенных приложений, предлагая улучшенные инструменты и шаблоны для эффективной разработки и мониторинга производительности, в том числе инструменты для работы с логами, метриками и трейсингом.

⭐️ Уменьшение использования памяти: В .NET 9 добавлен новый режим сборщика мусора для серверов (Server GC), который снижает потребление памяти в облачных приложениях, позволяя эффективно обрабатывать нагрузки в контейнерных средах, таких как Kubernetes.

⭐️ Производительность: Добавлены оптимизации, такие как ускоренная обработка исключений (2-4 раза быстрее), улучшения в циклах и сокращение стоимости проверки типов, что также снижает нагрузку и увеличивает производительность.

⭐️ Обновления для ASP.NET Core и Blazor: Расширена поддержка server-sent events, улучшена трассировка SignalR и добавлены улучшения в поддержку OpenAPI, что делает интеграцию API проще и надежнее.

⭐️ Контейнеризация и кросс-платформенная работа: Улучшены контейнерные образы для Linux, позволяющие значительно уменьшить размер образов, что ускоряет развертывание. Поддержка ARM64 также была расширена.

🔗 Подробнее: *клик*

@csharp_1001_notes
Please open Telegram to view this post
VIEW IN TELEGRAM