🍫 Hot Chocolate + GraphQL + .NET: Быстрый старт
Если ты хочешь использовать GraphQL в .NET‑проектах — обрати внимание на Hot Chocolate от ChilliCream. Это мощный, удобный и активно развиваемый GraphQL-сервер для .NET.
📎 Полный гайд: [antondevtips.com/blog/getting-started-with-hot-chocolate-graphql](https://antondevtips.com/blog/getting-started-with-hot-chocolate-graphql)
⚙️ Шаг 1: Установка
Создай новый ASP.NET Core проект:
🧱 Шаг 2: Настройка GraphQL
В файле Program.cs добавь следующее:
Создай класс Query.cs:
И добавь модели:
📬 Шаг 3: Запрос в браузере
Открой https://localhost:5000/graphql и выполни GraphQL-запрос:
🧠 Почему стоит выбирать Hot Chocolate?
- Поддержка annotation-based, code-first и schema-first подходов
- Отличная интеграция с EF Core
- Встроенная фильтрация, сортировка, пагинация, DataLoader
- Поддержка подписок (Subscriptions)
- Интерактивная IDE: Banana Cake Pop
📌 Полезные советы
Для продакшена отключи Banana Cake Pop, GET-запросы и интроспекцию
Используй .AddMutationType, .AddSubscriptionType, .AddFiltering, .AddSorting для расширения схемы
🚀 Полный гайд
Hot Chocolate — это простой способ внедрить GraphQL в .NET. Он удобен в настройке, гибкий в использовании и подходит для проектов любого масштаба.
Если ты хочешь использовать GraphQL в .NET‑проектах — обрати внимание на Hot Chocolate от ChilliCream. Это мощный, удобный и активно развиваемый GraphQL-сервер для .NET.
📎 Полный гайд: [antondevtips.com/blog/getting-started-with-hot-chocolate-graphql](https://antondevtips.com/blog/getting-started-with-hot-chocolate-graphql)
⚙️ Шаг 1: Установка
Создай новый ASP.NET Core проект:
dotnet new web -n Demo
cd Demo
dotnet add package HotChocolate.AspNetCore
🧱 Шаг 2: Настройка GraphQL
В файле Program.cs добавь следующее:
var builder = WebApplication.CreateBuilder(args);
builder.Services
.AddGraphQLServer()
.AddQueryType<Query>();
var app = builder.Build();
app.MapGraphQL();
app.Run();
Создай класс Query.cs:
public class Query
{
public Book GetBook() => new Book
{
Title = "C# in Depth",
Author = new Author { Name = "Jon Skeet" }
};
}
И добавь модели:
public class Book
{
public string Title { get; set; }
public Author Author { get; set; }
}
public class Author
{
public string Name { get; set; }
}
📬 Шаг 3: Запрос в браузере
Открой https://localhost:5000/graphql и выполни GraphQL-запрос:
{
book {
title
author {
name
}
}
}
🧠 Почему стоит выбирать Hot Chocolate?
- Поддержка annotation-based, code-first и schema-first подходов
- Отличная интеграция с EF Core
- Встроенная фильтрация, сортировка, пагинация, DataLoader
- Поддержка подписок (Subscriptions)
- Интерактивная IDE: Banana Cake Pop
📌 Полезные советы
Для продакшена отключи Banana Cake Pop, GET-запросы и интроспекцию
Используй .AddMutationType, .AddSubscriptionType, .AddFiltering, .AddSorting для расширения схемы
🚀 Полный гайд
Hot Chocolate — это простой способ внедрить GraphQL в .NET. Он удобен в настройке, гибкий в использовании и подходит для проектов любого масштаба.
🔌 WireMock.Net — мок-сервер для .NET-разработчиков. Этот порт популярного Java-инструмента WireMock позволяет тестировать HTTP-зависимости без реальных внешних сервисов. Проект поддерживает сложные сценарии: от стабов с шаблонами Handlebars до stateful-поведения и записи/воспроизведения запросов.
Мок-сервер можно запускать в разных режимах, как в памяти для юнит-тестов, так и в виде standalone-процесса, Windows-сервиса или Docker-контейнера. Для CI/CD есть интеграция с Testcontainers и .NET Aspire.
🤖 GitHub
@csharp_ci
Мок-сервер можно запускать в разных режимах, как в памяти для юнит-тестов, так и в виде standalone-процесса, Windows-сервиса или Docker-контейнера. Для CI/CD есть интеграция с Testcontainers и .NET Aspire.
🤖 GitHub
@csharp_ci
This media is not supported in your browser
VIEW IN TELEGRAM
🎮 Свежий Генератор игр для Unity теперь работает по принципу вайб-кодинга — всё делается через промпты прямо в движке.
🛠 Что умеет:
• Генерирует готовые ассеты, скрипты, 3D-модели и локации
• Работает внутри Unity — появляется чат-окно, где ты просто пишешь, что хочешь
• Unity бесплатен — качай и начинай без вложений
• Полно **гайдов на YouTube**, всё понятно за полчаса
• Главное— он реально работает, никаких подписок, всё локально
https://nimblefox.ai/
🛠 Что умеет:
• Генерирует готовые ассеты, скрипты, 3D-модели и локации
• Работает внутри Unity — появляется чат-окно, где ты просто пишешь, что хочешь
• Unity бесплатен — качай и начинай без вложений
• Полно **гайдов на YouTube**, всё понятно за полчаса
• Главное— он реально работает, никаких подписок, всё локально
https://nimblefox.ai/
🧰 Modern — набор инструментов для .NET, упрощающий разработку бэкенда
Modern — это лёгкий и расширяемый фреймворк, с которым можно собрать production-ready приложение всего из моделей и конфигурации. Поддерживает как SQL, так и NoSQL, подходит под разные архитектурные стили.
🔹 Что внутри:
• Универсальные репозитории для SQL и NoSQL
• Сервисы с кэшированием и без
• In-memory-сервисы с фильтрацией
• Кэши на Redis и в памяти
• CQRS-запросы и команды поверх репозиториев
• Готовые контроллеры для всех видов сервисов
• Поддержка OData-контроллеров
📦 Все компоненты гибко настраиваются и легко заменяются. Отличный выбор для тех, кто хочет писать меньше шаблонного кода и быстрее выходить в прод.
Github
Modern — это лёгкий и расширяемый фреймворк, с которым можно собрать production-ready приложение всего из моделей и конфигурации. Поддерживает как SQL, так и NoSQL, подходит под разные архитектурные стили.
🔹 Что внутри:
• Универсальные репозитории для SQL и NoSQL
• Сервисы с кэшированием и без
• In-memory-сервисы с фильтрацией
• Кэши на Redis и в памяти
• CQRS-запросы и команды поверх репозиториев
• Готовые контроллеры для всех видов сервисов
• Поддержка OData-контроллеров
📦 Все компоненты гибко настраиваются и легко заменяются. Отличный выбор для тех, кто хочет писать меньше шаблонного кода и быстрее выходить в прод.
Github
📂 Microsoft открыла исходный код DocumentDB — нового стандарта NoSQL-баз на основе PostgreSQL
Теперь ядро Cosmos DB (MongoDB API) доступно всем — Microsoft представила DocumentDB, документоориентированную базу данных с открытым исходным кодом. Это серьёзный шаг для open source-сообщества и большой вклад в развитие NoSQL на базе PostgreSQL.
🔧 Что входит в DocumentDB:
▪️ pg_documentdb_core — расширение PostgreSQL с поддержкой BSON, включает:
- индексацию по полям, включая гео и составные
- векторный поиск (AI, NLP, рекомендации)
- аутентификацию SCRAM
▪️ pg_documentdb_api — API-уровень для CRUD-операций, запросов и управления индексами
🐳 Как попробовать:
1. Установите Docker
2. Клонируйте проект:
Соберите и запустите:
Подключение:
🔗 Репозиторий: https://github.com/microsoft/documentdb
DocumentDB — это не просто адаптация под Mongo, а новая точка входа в NoSQL на мощной базе PostgreSQL.
Теперь ядро Cosmos DB (MongoDB API) доступно всем — Microsoft представила DocumentDB, документоориентированную базу данных с открытым исходным кодом. Это серьёзный шаг для open source-сообщества и большой вклад в развитие NoSQL на базе PostgreSQL.
🔧 Что входит в DocumentDB:
▪️ pg_documentdb_core — расширение PostgreSQL с поддержкой BSON, включает:
- индексацию по полям, включая гео и составные
- векторный поиск (AI, NLP, рекомендации)
- аутентификацию SCRAM
▪️ pg_documentdb_api — API-уровень для CRUD-операций, запросов и управления индексами
🐳 Как попробовать:
1. Установите Docker
2. Клонируйте проект:
git clone https://github.com/microsoft/documentdb.git
Соберите и запустите:
docker build . -f .devcontainer/Dockerfile -t documentdb
docker run -v $(pwd):/home/documentdb/code -it documentdb /bin/bash
cd code && make && sudo make install
./scripts/start_oss_server.sh -t documentdb
Подключение:
psql -p 9712 -h localhost -d postgres
🔗 Репозиторий: https://github.com/microsoft/documentdb
DocumentDB — это не просто адаптация под Mongo, а новая точка входа в NoSQL на мощной базе PostgreSQL.
⚠️ Как вы обрабатываете ошибки в C#?
Многие используют исключения для управления потоком и быстрого фейла. Но в C# метод не сообщает, какие именно исключения он может выбросить — это не видно в сигнатуре.
🔍 Мой подход:
Исключения — только для исключительных ситуаций.
Если метод может ожидаемо провалиться, пусть это будет явно.
✅ Используйте Result-паттерн:
— Метод возвращает
— Caller обязан проверить
— Код становится предсказуемее и легче тестируется
— Дополнительно: пропускная способность может быть выше, чем при
Пример:
Подробнее
Многие используют исключения для управления потоком и быстрого фейла. Но в C# метод не сообщает, какие именно исключения он может выбросить — это не видно в сигнатуре.
🔍 Мой подход:
Исключения — только для исключительных ситуаций.
Если метод может ожидаемо провалиться, пусть это будет явно.
✅ Используйте Result-паттерн:
— Метод возвращает
Result<T>
вместо выбрасывания исключения — Caller обязан проверить
IsSuccess
и обработать ошибку — Код становится предсказуемее и легче тестируется
— Дополнительно: пропускная способность может быть выше, чем при
throw/catch
Пример:
Result<User> result = userService.FindById(id);
if (!result.IsSuccess)
return Error(result.Error);
Подробнее
🎯 Хитрая задача на C# для продвинутых
Твоя цель — реализовать ленивую фильтрацию по уникальному ключу без LINQ.
Условие:
Есть класс:
Нужно написать метод UniqueBy<T, TKey>, который возвращает только уникальные элементы по ключу. Нельзя использовать LINQ (Distinct, GroupBy и т.д.). Метод должен быть ленивым — использовать yield return.
Пример:
🧠 Решение:
📌 Чем эта задача интересна:
▪ Требует знания HashSet, yield return и замыканий
▪ Работает с любыми коллекциями и даже бесконечными потоками
▪ Часто нужна при фильтрации API-результатов, логов и UI
Ставь лайк, если хочешь больше таких продвинутых C#-задач.
Твоя цель — реализовать ленивую фильтрацию по уникальному ключу без LINQ.
Условие:
Есть класс:
class User
{
public string Name { get; set; }
public int Age { get; set; }
}
Нужно написать метод UniqueBy<T, TKey>, который возвращает только уникальные элементы по ключу. Нельзя использовать LINQ (Distinct, GroupBy и т.д.). Метод должен быть ленивым — использовать yield return.
Пример:
var users = new List<User>
{
new User { Name = "Alice", Age = 30 },
new User { Name = "Bob", Age = 25 },
new User { Name = "Alice", Age = 35 },
new User { Name = "Eve", Age = 25 }
};
foreach (var user in UniqueBy(users, u => u.Name))
{
Console.WriteLine($"{user.Name}, {user.Age}");
}
// Вывод:
// Alice, 30
// Bob, 25
// Eve, 25
🧠 Решение:
public static IEnumerable<T> UniqueBy<T, TKey>(IEnumerable<T> source, Func<T, TKey> keySelector)
{
var seen = new HashSet<TKey>();
foreach (var item in source)
{
var key = keySelector(item);
if (seen.Add(key))
yield return item;
}
}
📌 Чем эта задача интересна:
▪ Требует знания HashSet, yield return и замыканий
▪ Работает с любыми коллекциями и даже бесконечными потоками
▪ Часто нужна при фильтрации API-результатов, логов и UI
Ставь лайк, если хочешь больше таких продвинутых C#-задач.
✂️ Clipper2 — библиотека для работы с полигонами. Этот проект представляет собой современную версию классической библиотеки Clipper, переписанную с нуля для поддержки новых стандартов. Инструмент выполненяет булевые операций (объединение, пересечение, вычитание) над сложными полигональными фигурами, а также их офсетное преобразование.
Библиотека имеет кроссплатформенную поддержку: помимо нативных C++, C#, Delphi-реализаций, доступны адаптации для Java, Kotlin и даже WebAssembly. При этом версия на С# демонстрирует наибольшую производительность, она идеально подходит для задач CAD-систем и GIS-приложений.
🤖 GitHub
@csharp_ci
Библиотека имеет кроссплатформенную поддержку: помимо нативных C++, C#, Delphi-реализаций, доступны адаптации для Java, Kotlin и даже WebAssembly. При этом версия на С# демонстрирует наибольшую производительность, она идеально подходит для задач CAD-систем и GIS-приложений.
🤖 GitHub
@csharp_ci
💎 CSharpier — бескомпромиссный форматтер для C#. Этот инструмент берёт ваш код и переписывает его по своим строгим правилам, вдохновлённым Prettier. Никаких бесконечных настроек, только единый стандарт оформления для всего проекта.
Инструмент интегрируется с редакторами, работает через CLI и даже в CI/CD. Будет особенно удобен для команд, где важна единообразная кодовая база без ручной правки стиля.
🤖 GitHub
@csharp_ci
Инструмент интегрируется с редакторами, работает через CLI и даже в CI/CD. Будет особенно удобен для команд, где важна единообразная кодовая база без ручной правки стиля.
🤖 GitHub
@csharp_ci
Что выведет на экран этот код?
Anonymous Quiz
13%
True, True
14%
True, False
15%
False, False
10%
False, True
36%
Возникнет ошибка времени выполнения
13%
🎯 Design pattern, который должен знать каждый — Decorator
Один из самых гибких и мощных паттернов — особенно в мире .NET и DI.
▪ Что это такое?
Decorator позволяет обернуть реализацию сервиса в дополнительное поведение — например, логгирование, кэширование или retry-механику — без изменения исходного кода.
▪ Как применить на практике?
В .NET это особенно удобно с библиотекой Scrutor — она расширяет встроенный DI-контейнер и позволяет добавлять декораторы в одну строчку.
Пример:
Зачем это нужно?
— логгировать вызовы без лома архитектуры
— централизованно обрабатывать ошибки
— добавить метрики без влезания в бизнес-логику
📌 Подробнее
Один из самых гибких и мощных паттернов — особенно в мире .NET и DI.
▪ Что это такое?
Decorator позволяет обернуть реализацию сервиса в дополнительное поведение — например, логгирование, кэширование или retry-механику — без изменения исходного кода.
▪ Как применить на практике?
В .NET это особенно удобно с библиотекой Scrutor — она расширяет встроенный DI-контейнер и позволяет добавлять декораторы в одну строчку.
Пример:
services.Decorate<IService, LoggingDecorator>();
Зачем это нужно?
— логгировать вызовы без лома архитектуры
— централизованно обрабатывать ошибки
— добавить метрики без влезания в бизнес-логику
📌 Подробнее
🚀 Хочешь масштабировать своё API по горизонтали? Без балансировщика нагрузки не обойтись.
Вот как быстро собрать свой на .NET с помощью YARP (Yet Another Reverse Proxy):
3 простых шага:
1. Установи библиотеку YARP (`Microsoft.ReverseProxy`)
2. Настрой YARP в
3. Укажи пути к downstream-сервисам
После этого твой прокси уже готов к работе — будет распределять трафик между сервисами.
Но это только начало. YARP мощный и расширяемый. Он поддерживает разные политики балансировки нагрузки прямо "из коробки":
▪
▪
▪
▪
▪
Автор статьи применил YARP для масштабирования нескольких приложений и делится опытом в полном гайде:
📖 Читай подробнее: https://milanjovanovic.tech/blog/horizontally-scaling-aspnetcore-apis-with-yarp-load-balancing
Вот как быстро собрать свой на .NET с помощью YARP (Yet Another Reverse Proxy):
3 простых шага:
1. Установи библиотеку YARP (`Microsoft.ReverseProxy`)
2. Настрой YARP в
Program.cs
и appsettings.json
3. Укажи пути к downstream-сервисам
После этого твой прокси уже готов к работе — будет распределять трафик между сервисами.
Но это только начало. YARP мощный и расширяемый. Он поддерживает разные политики балансировки нагрузки прямо "из коробки":
▪
Random
— случайный выбор ▪
RoundRobin
— по кругу ▪
LeastRequests
— к тому, у кого меньше всего запросов ▪
FirstAlphabetical
— по алфавиту ▪
PowerOfTwoChoices
— выбери лучший из двух случайных (дефолт)Автор статьи применил YARP для масштабирования нескольких приложений и делится опытом в полном гайде:
📖 Читай подробнее: https://milanjovanovic.tech/blog/horizontally-scaling-aspnetcore-apis-with-yarp-load-balancing
🧪 ABP Framework — мощный инструмент для .NET-разработчиков, который превращает стандартный ASP.NET Core в платформу для корпоративных решений. Это не просто фреймворк, а целая экосистема с готовыми модулями, шаблонами проектов и инструментами автоматизации.
Проект имеет поддержку DDD, мультитенантности и микросервисов из коробки. ABP берет на себя рутинные задачи вроде авторизации, валидации и логирования, позволяя сосредоточиться на бизнес-логике.
🤖 GitHub
@csharp_ci
Проект имеет поддержку DDD, мультитенантности и микросервисов из коробки. ABP берет на себя рутинные задачи вроде авторизации, валидации и логирования, позволяя сосредоточиться на бизнес-логике.
🤖 GitHub
@csharp_ci
😬 Почти каждый разработчик делал эту ошибку
Код вроде бы нормальный:
- API для регистрации вызывает
-
-
Но если присмотреться —
Почему это проблема?
❌
Если внутри
Исключение пролетит мимо и может тихо крашнуть приложение или вызвать странные баги.
Почему так?
🔸
🔸 Исключения из таких методов не перехватываются обычным образом
✅ Как правильно:
Всегда возвращай
📌 Запомни правило:
Ты уже сталкивался с этой ловушкой? Пиши свои фейлы или советы 👇
Код вроде бы нормальный:
- API для регистрации вызывает
UserService
-
UserService
сохраняет пользователя и вызывает EmailService
-
EmailService
отправляет письмо через SmtpClient
Но если присмотреться —
SendWelcomeEmail
помечен как **async void**
❗️Почему это проблема?
❌
async void
делает невозможным отлов исключений. Если внутри
SendEmailAsync()
что-то пойдёт не так — try/catch
не сработает. Исключение пролетит мимо и может тихо крашнуть приложение или вызвать странные баги.
Почему так?
🔸
async void
не возвращает Task, значит await
невозможен 🔸 Исключения из таких методов не перехватываются обычным образом
✅ Как правильно:
Всегда возвращай
Task
— только так можно надёжно обрабатывать ошибки.📌 Запомни правило:
async void
допустим только в event‑handler’ах. Больше — нигде.Ты уже сталкивался с этой ловушкой? Пиши свои фейлы или советы 👇
Что выведет на экран это код?
Anonymous Quiz
25%
IFoo.Do(int), IFoo.Do(int)
33%
Foo.Do(double), IFoo.Do(int)
12%
Foo.Do(double), Foo.Do(double)
9%
Foo.Do(double), IFoo.Do(double)
4%
IFoo.Do(double), IFoo.Do(double)
17%
⚡️ Почему лучшие разработчики всегда на шаг впереди?
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Devops: t.iss.one/DevOPSitsec
Базы данных: t.iss.one/sqlhub
Мл собес t.iss.one/machinelearning_interview
C++ t.iss.one/cpluspluc
Docker: t.iss.one/DevopsDocker
Хакинг: t.iss.one/linuxkalii
МЛ: t.iss.one/machinelearning_ru
Data Science: t.iss.one/data_analysis_ml
Javascript: t.iss.one/javascriptv
C#: t.iss.one/csharp_ci
Java: t.iss.one/java_library
Python собеседования: t.iss.one/python_job_interview
Мобильная разработка: t.iss.one/mobdevelop
Golang: t.iss.one/Golang_google
React: t.iss.one/react_tg
Rust: t.iss.one/rust_code
ИИ: t.iss.one/vistehno
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Frontend: t.iss.one/front
Big Data: t.iss.one/bigdatai
МАТЕМАТИКА: t.iss.one/data_math
Kubernets: t.iss.one/kubernetc
Разработка игр: https://t.iss.one/gamedev
Физика: t.iss.one/fizmat
SQL: t.iss.one/databases_tg
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.iss.one/memes_prog
🇬🇧Английский: t.iss.one/english_forprogrammers
🧠ИИ: t.iss.one/vistehno
🖥 Chatgpt для кода в тг: @Chatgpturbobot -
📕Ит-книги: https://t.iss.one/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Потому что они знают, где брать настоящие инсайд!
Оставь “программирование в вакууме” в прошлом, выбирай свой стек — подпишись и погружайся в поток идей, лайфхаков и знаний, которые не найдёшь в открытом доступе.
ИИ: t.iss.one/ai_machinelearning_big_data
Python: t.iss.one/pythonl
Linux: t.iss.one/linuxacademiya
Devops: t.iss.one/DevOPSitsec
Базы данных: t.iss.one/sqlhub
Мл собес t.iss.one/machinelearning_interview
C++ t.iss.one/cpluspluc
Docker: t.iss.one/DevopsDocker
Хакинг: t.iss.one/linuxkalii
МЛ: t.iss.one/machinelearning_ru
Data Science: t.iss.one/data_analysis_ml
Javascript: t.iss.one/javascriptv
C#: t.iss.one/csharp_ci
Java: t.iss.one/java_library
Python собеседования: t.iss.one/python_job_interview
Мобильная разработка: t.iss.one/mobdevelop
Golang: t.iss.one/Golang_google
React: t.iss.one/react_tg
Rust: t.iss.one/rust_code
ИИ: t.iss.one/vistehno
PHP: t.iss.one/phpshka
Android: t.iss.one/android_its
Frontend: t.iss.one/front
Big Data: t.iss.one/bigdatai
МАТЕМАТИКА: t.iss.one/data_math
Kubernets: t.iss.one/kubernetc
Разработка игр: https://t.iss.one/gamedev
Физика: t.iss.one/fizmat
SQL: t.iss.one/databases_tg
Папка Go разработчика: t.iss.one/addlist/MUtJEeJSxeY2YTFi
Папка Python разработчика: t.iss.one/addlist/eEPya-HF6mkxMGIy
Папка ML: https://t.iss.one/addlist/2Ls-snqEeytkMDgy
Папка FRONTEND: https://t.iss.one/addlist/mzMMG3RPZhY2M2Iy
🎓954ГБ ОПЕНСОРС КУРСОВ: @courses
😆ИТ-Мемы: t.iss.one/memes_prog
🇬🇧Английский: t.iss.one/english_forprogrammers
🧠ИИ: t.iss.one/vistehno
📕Ит-книги: https://t.iss.one/addlist/BkskQciUW_FhNjEy
💼ИТ-вакансии t.iss.one/addlist/_zyy_jQ_QUsyM2Vi
Подпишись, чтобы всегда знать, куда двигаться дальше!
Please open Telegram to view this post
VIEW IN TELEGRAM
📌 PolySharp — удобный способ использовать новые фичи C# на старых версиях .NET. Этот NuGet-пакет работает как source-генератор, автоматически подбирая нужные полифиллы в зависимости от целевой платформы. Для работы достаточно добавить ссылку на PolySharp, установить последнюю версию C# и можно писать современный код даже для .NET Framework или UWP.
Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору C# 13 нужен
🤖 GitHub
@csharp_ci
Инструмент обладает умной генерацией только необходимых типов. Например, если компилятору C# 13 нужен
[IsExternalInit]
для init-only свойств, PolySharp создаст его за кулисами. При этом он не трогает фичи, требующие поддержки рантайма, но покрывает огромный пласт синтаксических улучшений — от nullable-аннотаций до интерполированных строковых обработчиков. 🤖 GitHub
@csharp_ci
🧠 Model Context Protocol (MCP) для новичков — от Microsoft
Microsoft выложила в open-source обучающий курс, чтобы помочь понять, как работает Model Context Protocol — протокол, лежащий в основе взаимодействия LLM с внешним контекстом.
📘 Что внутри:
— понятные объяснения концепций MCP
— практические примеры на .NET, Java, TypeScript, JavaScript и Python
— пошаговые упражнения для начинающих
Подойдёт тем, кто хочет разобраться, как строятся LLM-агенты, функции и контекстные вызовы в MCP-экосистеме.
👉 Репозиторий: https://github.com/microsoft/mcp-for-beginners
Microsoft выложила в open-source обучающий курс, чтобы помочь понять, как работает Model Context Protocol — протокол, лежащий в основе взаимодействия LLM с внешним контекстом.
📘 Что внутри:
— понятные объяснения концепций MCP
— практические примеры на .NET, Java, TypeScript, JavaScript и Python
— пошаговые упражнения для начинающих
Подойдёт тем, кто хочет разобраться, как строятся LLM-агенты, функции и контекстные вызовы в MCP-экосистеме.
👉 Репозиторий: https://github.com/microsoft/mcp-for-beginners