Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Павел Московой "Работа с HTTP в платформе .NET, собственный движок для работы с HTTP, использующий функциональный подход на основе типа Result для обработки HTTP-ответа вместо исключений."

Павел Московой "Работа с HTTP в платформе .NET, собственный движок для работы с HTTP, использующий функциональный подход на основе типа Result для обработки HTTP-ответа вместо исключений."

В .NET Core для работы с HTTP принято использовать класс HttpClient. Он позволяет легко отправлять и получать данные. Однако возвращаемый ответ может отличаться в зависимости от статус-кода. Для работы с ним удобно использовать функциональный подход и тип Result.
При этом для взаимодействия с SOAP часто используются автосгенерированные клиенты на основе встроенного механизма в Visual Studio. Такое решение несет в себе определённые проблемы, которые будут упомянуты в докладе.
Павел расскажет, как участники команды банка, в которую он входит, выработали единый подход для работы с HTTP на основе REST и SOAP, разработав собственный движок, основанный на использовании HttpClient и функциональных компонентов.
Эта часть доклада является логичным продолжением рассказа Андрея о том, как с помощью функционального программирования можно разделить ошибки на фатальные и "ожидаемые". Это особенно наглядно можно продемонстрировать на примере обработки HTTP-ответов. Также будет показано применение разработанного движка для построения клиентов удалённых сервисов на основе REST и SOAP, альтернативных механизму предлагаемому по умолчанию в Visual Studio.

DotNetRu

June 11, 2020
Tweet

More Decks by DotNetRu

Other Decks in Programming

Transcript

  1. Спикер 2 1 Бесшовная интеграция микросервисов в стиле функционального API

    Павел Московой Email: [email protected] ▪ Проектирование архитектуры и back-end приложений для страховых продуктов банка ▪ Разработка микросервисов на .NET Core 3.1 и C# 8 ▪ Функциональный подход при написании кода ▪ Более 8 лет опыта профессиональной разработки на C#
  2. ▪ Реализовать бесшовную интеграцию между микросервисами на платформе .NET Core

    ▪ Предложить сообществу функциональный фреймворк для реализации HTTP-клиентов и бесшовной интеграции сервисов Цели 3 2 Бесшовная интеграция микросервисов в стиле функционального API
  3. 4 ▪ Есть сервис, предоставляющий набор CRUD-операций над продуктами. ▪

    Необходимо написать другой сервис, который берет продукты из первого и обогащает их дополнительными данными. Задача 3 Бесшовная интеграция микросервисов в стиле функционального API
  4. 27 + Создание сервис-клиента в удобном интерфейсе в несколько кликов.

    + Встроенная сериалиазация SOAP-сообщений. WCF Web Service Reference Provider 26 Бесшовная интеграция микросервисов в стиле функционального API - Автоматически созданный код может быть низкого качества - Не соответствует nullable enable конвенции - Разные подход для работы с REST и SOAP
  5. 37 ▪ Гибкий flow для работы в функциональном стиле над

    результатом ответа на HTTP-запрос ▪ Возможность разделения неуспешных ответов от исключительных ситуаций ▪ Возможность работы с SOAP однотипно с REST ▪ Решение на основе HttpClient ▪ Встроенная сериализация, построенная на базе JsonSerializer (для REST) ▪ Подлинно функциональный механизм регистрации в DI Что в итоге? 36 Бесшовная интеграция микросервисов в стиле функционального API