Оркестратор платежей с открытым исходным кодом 😢
HyperSwitch — это открытый платежный оркестратор от компании Juspay. Он позволяет бизнесам подключать и управлять множеством платежных провайдеров через единую интеграцию.
🟢 Единый API для работы с разными платежными шлюзами (Stripe, Adyen, PayPal и др.).
🟢 Оптимизация платежей: выбирает лучший шлюз по стоимости, скорости или успешности платежей.
🟢 Кеширование карт для ускорения транзакций.
🟢 Поддержка разных валют и регионов.
⏩ Ознакомиться:
https://github.com/juspay/hyperswitch
👉 @KodBlog | #ресурсы
HyperSwitch — это открытый платежный оркестратор от компании Juspay. Он позволяет бизнесам подключать и управлять множеством платежных провайдеров через единую интеграцию.
https://github.com/juspay/hyperswitch
Please open Telegram to view this post
VIEW IN TELEGRAM
❤5👍3👌2
Как развернуть .NET-приложение в контейнере?
Без Dockerfile! Вот как:
➖ Шаг 1: Создаём Docker-образ
Это самый простой шаг благодаря встроенной поддержке контейнеров в .NET 8.
Просто запустите стандартную команду dotnet publish с аргументом PublishContainer и тегом образа.
Через несколько секунд ваш новый Docker-образ будет готов. Dockerfile не нужен.
➖ Шаг 2: Отправляем образ в Docker-реестр
Docker-реестр — это хранилище, где можно сохранять и делиться образами.
Если используете Azure Container Registry, просто войдите в систему и снова выполните команду dotnet publish, добавив аргумент ContainerRegistry.
На самом деле, шаги 1 и 2 можно выполнить одной строкой, и после этого ваш образ будет готов к развертыванию из ACR.
➖ Шаг 3: Загружаем образ на продакшен-сервер
Зайдите на свой продакшен-сервер, установите Docker и авторизуйтесь в ACR с помощью команды docker login.
Затем выполните docker pull, чтобы загрузить готовый образ на сервер за считаные секунды.
➖ Шаг 4: Запускаем приложение в продакшене как контейнер
Используйте команду docker run, чтобы запустить ваше .NET-приложение в контейнере.
📝 Результат
Ваше .NET-приложение запущено в продакшене, и вам не пришлось устанавливать ничего, кроме Docker. И никакого Dockerfile!
👉 @KodBlog | #ресурсы
Без Dockerfile! Вот как:
Это самый простой шаг благодаря встроенной поддержке контейнеров в .NET 8.
Просто запустите стандартную команду dotnet publish с аргументом PublishContainer и тегом образа.
Через несколько секунд ваш новый Docker-образ будет готов. Dockerfile не нужен.
Docker-реестр — это хранилище, где можно сохранять и делиться образами.
Если используете Azure Container Registry, просто войдите в систему и снова выполните команду dotnet publish, добавив аргумент ContainerRegistry.
На самом деле, шаги 1 и 2 можно выполнить одной строкой, и после этого ваш образ будет готов к развертыванию из ACR.
Зайдите на свой продакшен-сервер, установите Docker и авторизуйтесь в ACR с помощью команды docker login.
Затем выполните docker pull, чтобы загрузить готовый образ на сервер за считаные секунды.
Используйте команду docker run, чтобы запустить ваше .NET-приложение в контейнере.
Ваше .NET-приложение запущено в продакшене, и вам не пришлось устанавливать ничего, кроме Docker. И никакого Dockerfile!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥4❤2👌1
This media is not supported in your browser
VIEW IN TELEGRAM
БРУТАЛЬНОЕ расширение для Visual Studio Code! 😳
➖ Git Graph — предоставляет графическое представление вашего Git-репозитория, облегчая визуализацию и управление историей коммитов.
С его помощью вы можете просматривать древовидную структуру коммитов, что особенно полезно при работе с ветвлениями и слияниями
И оно бесплатное!
https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph
👉 @KodBlog | #ресурсы
С его помощью вы можете просматривать древовидную структуру коммитов, что особенно полезно при работе с ветвлениями и слияниями
И оно бесплатное!
https://marketplace.visualstudio.com/items?itemName=mhutchie.git-graph
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11🔥3👍2
Media is too big
VIEW IN TELEGRAM
C# Factory Method Фабричный Метод | Design Patterns
В нем раскрываются основные концепции, такие как использование фабричного метода для создания объектов, без указания точного типа создаваемого класса. Обсуждаются как преимущества, так и недостатки этого подхода, включая усложнение кода и необходимость в дополнительных фабриках.
📲 Cмотреть источник: тут
👉 @KodBlog | #видео
В нем раскрываются основные концепции, такие как использование фабричного метода для создания объектов, без указания точного типа создаваемого класса. Обсуждаются как преимущества, так и недостатки этого подхода, включая усложнение кода и необходимость в дополнительных фабриках.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7❤4
Функциональное программирование сделает вас лучшим .NET-разработчиком
Пора добавить его в ваш арсенал инструментов.
Хотя C# является объектно-ориентированным языком программирования, в последних версиях были добавлены многие функциональные особенности.
Вот несколько из них:
🔸 Сопоставление с образцом (Pattern matching)
🔸 Выражения switch
🔸 Records
Вероятно, вы уже используете функциональное программирование, даже не осознавая этого.
Используете LINQ?
Если да, то вы уже работаете с функциональным программированием, потому что LINQ — это функциональная библиотека .NET.
Вот как можно рефакторить императивный код в функциональный в C#: How to apply functional programming in C#
👉 @KodBlog | #tips
Пора добавить его в ваш арсенал инструментов.
Хотя C# является объектно-ориентированным языком программирования, в последних версиях были добавлены многие функциональные особенности.
Вот несколько из них:
Вероятно, вы уже используете функциональное программирование, даже не осознавая этого.
Используете LINQ?
Если да, то вы уже работаете с функциональным программированием, потому что LINQ — это функциональная библиотека .NET.
Вот как можно рефакторить императивный код в функциональный в C#: How to apply functional programming in C#
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9👍4❤3🥴1
Начало работы с BenchmarkDotNet
BenchmarkDotNet стал стандартом де-факто для измерения производительности в dotnet.😢
Начать очень просто:
🟢 Установите BDN из NuGet
🟢 Создайте класс, содержащий ваши методы
🟢 Добавьте атрибут [Benchmark] к нужным методам
🟢 Вызовите BenchmarkRunner.Run для вашего класса
🟢 Запустите без отладки и в режиме релиза
Простой пример выше показывает, как сравнить два разных подхода к конкатенации строк, а также как задать базовую конфигурацию, например, установить эталон и выбрать версию .NET.
➖ Код примера — вставьте его в консольное приложение и просто начните экспериментировать.
Я действительно обожаю этот инструмент.
А вы уже пробовали его?
👉 @KodBlog | #tips
BenchmarkDotNet стал стандартом де-факто для измерения производительности в dotnet.
Начать очень просто:
Простой пример выше показывает, как сравнить два разных подхода к конкатенации строк, а также как задать базовую конфигурацию, например, установить эталон и выбрать версию .NET.
Я действительно обожаю этот инструмент.
А вы уже пробовали его?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2🙏1
Подробное руководство для подготовки к собеседованию на позицию старшего инженера C#.
Она содержит более 30 углубленных вопросов с детальными объяснениями и ответами,
🟢 Обработка транзакций
🟢 Распределенные системы
🟢 Оптимизация производительности
🟢 Безопасность
🟢 Проектирование систем
Статья будет полезна специалистам, стремящимся углубить свои знания и подготовиться к собеседованиям на позиции старшего инженера C#.😮
⏩ Читать:
https://dev.to/iamcymentho/mastering-the-senior-c-engineer-interview-3dc2
👉 @KodBlog | #cтатья
Она содержит более 30 углубленных вопросов с детальными объяснениями и ответами,
Статья будет полезна специалистам, стремящимся углубить свои знания и подготовиться к собеседованиям на позиции старшего инженера C#.
https://dev.to/iamcymentho/mastering-the-senior-c-engineer-interview-3dc2
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥1👏1😁1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3👏2
В .NET 9 введен новый тип Base64Url.
Существующий метод
Вместо этого, помощник Base64Url генерирует строку без этих символов.
👉 @KodBlog | #ресурсы
Существующий метод
Convert.ToBase64String может генерировать строку с символами '/', '+', или '=', которые не безопасны для использования в URL, поскольку они имеют особое значение в URL.Вместо этого, помощник Base64Url генерирует строку без этих символов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥6❤3🎉2
Создание CRUD API с использованием
📝 Автор подробно описывает процесс разработки, начиная с настройки проекта и конфигурации подключения к базе данных, и заканчивая реализацией операций создания, чтения, обновления и удаления (CRUD) через Entity Framework Core.
Особое внимание уделяется структурированию кода с использованием репозиториев и сервисных слоев
⏩ Читать:
https://dev.to/olymahmud/building-a-crud-api-with-aspnet-core-web-api-and-postgresql-p5f
👉 @KodBlog | #cтатья
ASP.NET Core Web API и базы данных PostgreSQLОсобое внимание уделяется структурированию кода с использованием репозиториев и сервисных слоев
https://dev.to/olymahmud/building-a-crud-api-with-aspnet-core-web-api-and-postgresql-p5f
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13😐3❤1🤔1🌚1
Коллекция вспомогательных методов и классов для .NET, 😏
TinyHelpers — это библиотека, созданная Марко Минервой, содержащая набор вспомогательных методов и классов для .NET, которые он использует ежедневно.
➖ Цель этой библиотеки — избежать дублирования кода, объединив часто используемые функции в одном месте.
Библиотека доступна на NuGet и может быть установлена с помощью команды:👇
⏩ Ознакомиться:
https://github.com/marcominerva/TinyHelpers
👉 @KodBlog | #ресурсы
TinyHelpers — это библиотека, созданная Марко Минервой, содержащая набор вспомогательных методов и классов для .NET, которые он использует ежедневно.
Библиотека доступна на NuGet и может быть установлена с помощью команды:
dotnet add package TinyHelpers
https://github.com/marcominerva/TinyHelpers
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤1
Docker для развертывания .NET приложений! 🙂
Шаг 1: Создание Docker-образа
Объедините код вашего .NET приложения, базовый образ Linux и среду выполнения
Шаг 2: Публикация образа
Используйте команду docker push, чтобы загрузить ваш образ в репозиторий, например, DockerHub или Amazon ECR. Теперь он доступен отовсюду и готов к работе.😎
Шаг 3: Извлечение и запуск образа
Наконец, давайте оживим ваше приложение. Ваш образ запускается как контейнер с помощью команд docker pull и docker run, обеспечивая единообразие среды на всех платформах.😕
⁉ Звучит интересно? Тогда можешь прочитать статью о Docker для разработчиков .NET,
👉 @KodBlog | #cтатья
Шаг 1: Создание Docker-образа
Объедините код вашего .NET приложения, базовый образ Linux и среду выполнения
ASP.NET Core, используя инструкции Docker, такие как FROM и COPY. Затем выполните команду docker build, и у вас будет готовый переносимый Docker-образ, готовый к использованию. Шаг 2: Публикация образа
Используйте команду docker push, чтобы загрузить ваш образ в репозиторий, например, DockerHub или Amazon ECR. Теперь он доступен отовсюду и готов к работе.
Шаг 3: Извлечение и запуск образа
Наконец, давайте оживим ваше приложение. Ваш образ запускается как контейнер с помощью команд docker pull и docker run, обеспечивая единообразие среды на всех платформах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3
Как выполнить код для каждого нового запроса? 😏
В
➖ Middleware — это программные компоненты, которые собираются в конвейер обработки запросов и ответов.
В
🟢 Аутентификация
🟢 Маршрутизация (Routing)
🟢 CORS
🟢 Проверка состояния (Health checks)
🟢 Ограничение частоты запросов (Rate limiting)
И многое другое...
Но вы также можете создать собственные middleware-компоненты, чтобы централизовать логику, которая должна выполняться для каждого запроса, но не связана напрямую с бизнес-логикой.
Вы можете реализовать
⏩ Вот пошаговое руководство с примерами кода: клик
👉 @KodBlog | #ресурсы
В
ASP.NET Core для этого используется ключевая функция: middleware (Промежуточное ПО)В
ASP.NET Core middleware используется повсеместно для таких задач, как:И многое другое...
Но вы также можете создать собственные middleware-компоненты, чтобы централизовать логику, которая должна выполняться для каждого запроса, но не связана напрямую с бизнес-логикой.
Вы можете реализовать
middleware с помощью простого делегата или создать класс, который следует установленному шаблону.Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🤣2🔥1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2👏2
Что такое Webhook?
Вот пример, который поможет тебе понять.👇
Допустим, у тебя есть приложение, и ты хочешь, чтобы оно автоматически выполняло определённые действия без необходимости запускать их вручную.
Здесь и приходят на помощь вебхуки!😏
Webhooks – это как посыльные, которые позволяют одной системе отправлять сообщение другой системе при наступлении определённого события. Это похоже на уведомления на телефоне, когда кто-то комментирует твой пост в соцсетях или когда приходит новое письмо на email.
Вебхуки работают аналогично, но для систем и приложений.
Основной процесс работы вебхуков:
🟢 Сервис A предоставляет вебхук
🟢 Сервис B подписывается на вебхук от Сервиса A
🟢 Сервис A сохраняет подписку
🟢 В Сервисе A происходит событие
🟢 Сервис A отправляет вебхук-запрос в Сервис B
Как можно использовать вебхуки?
🟢 Автоматическое обновление базы данных
🟢 Запуск определённых действий при отправке формы на сайте
🟢 Отправка уведомлений и оповещений (например, при регистрации нового пользователя или возникновении ошибки в системе)
📝 Главное преимущество вебхуков — асинхронная обработка данных.
👉 @KodBlog | #ресурсы
Вот пример, который поможет тебе понять.
Допустим, у тебя есть приложение, и ты хочешь, чтобы оно автоматически выполняло определённые действия без необходимости запускать их вручную.
Здесь и приходят на помощь вебхуки!
Webhooks – это как посыльные, которые позволяют одной системе отправлять сообщение другой системе при наступлении определённого события. Это похоже на уведомления на телефоне, когда кто-то комментирует твой пост в соцсетях или когда приходит новое письмо на email.
Вебхуки работают аналогично, но для систем и приложений.
Основной процесс работы вебхуков:
Как можно использовать вебхуки?
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥2❤1🙏1
Масштабируй .NET-приложения с проверенными практиками. Стратегии обработки миллионов запросов.
📝 Статья рассказывает о масштабировании .NET-приложений для обработки миллионов запросов, включая микросервисы, кэширование (Redis), асинхронное программирование (async/await), оптимизацию запросов, использование облачных сервисов (Azure, AWS), контейнеризацию (Docker, Kubernetes) и мониторинг (Application Insights, Prometheus). 🥳
⏩ Читать:
https://dev.to/leandroveiga/mastering-net-scalability-proven-strategies-to-handle-millions-of-requests-per-second-2f45
👉 @KodBlog | #cтатья
https://dev.to/leandroveiga/mastering-net-scalability-proven-strategies-to-handle-millions-of-requests-per-second-2f45
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4👍3🌚2
Шаблон объекта параметров (Parameter Object Pattern) – до и после
Если метод принимает много связанных параметров, рассмотрите возможность их группировки в объект
Это упростит модификацию и сделает сигнатуру метода более читаемой.🧠
Когда использовать шаблон объекта параметров?
Произвольное количество параметров:
❌ ВСЕГДА применять POP после 3, 4, 5 и более параметров – не лучший подход.
Всё зависит от контекста.
Связанность параметров:
☑ Если параметры тесно связаны, стоит использовать POP.
Количество мест использования:
☑ Если одна и та же группа параметров используется в нескольких местах, их имеет смысл объединить в объект.
➖ НО, если параметры нигде больше не переиспользуются, разве не перемещает POP «проблему» просто в конструктор нового объекта?
Читаемость и поддерживаемость кода:
☑ Если большое количество параметров делает код сложным для понимания и поддержки, рассмотрите POP.
Что думаете?🤔
👉 @KodBlog | #ресурсы
Если метод принимает много связанных параметров, рассмотрите возможность их группировки в объект
Это упростит модификацию и сделает сигнатуру метода более читаемой.
Когда использовать шаблон объекта параметров?
Произвольное количество параметров:
Всё зависит от контекста.
Связанность параметров:
Количество мест использования:
Читаемость и поддерживаемость кода:
Что думаете?
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥4🌚2