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.

Ceecdee9ee77b63d81100be62b7e1090?s=128

DotNetRu

June 11, 2020
Tweet

Transcript

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

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

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

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

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

    функционального API
  6. 6 Регистрация в DI 5 Бесшовная интеграция микросервисов в стиле

    функционального API
  7. 7 В чём проблема? 6 Бесшовная интеграция микросервисов в стиле

    функционального API
  8. 8 Через обработку исключений 7 Бесшовная интеграция микросервисов в стиле

    функционального API
  9. 9 Интерфейс для работы с HTTP 8 Бесшовная интеграция микросервисов

    в стиле функционального API
  10. 10 Интерфейс для работы с HTTP 9 Бесшовная интеграция микросервисов

    в стиле функционального API
  11. 11 Немного о реализации 10 Бесшовная интеграция микросервисов в стиле

    функционального API
  12. 12 Решение на нашем движке 11 Бесшовная интеграция микросервисов в

    стиле функционального API
  13. 13 Отправка запросов 12 Бесшовная интеграция микросервисов в стиле функционального

    API
  14. 14 Регистрация в DI 13 Бесшовная интеграция микросервисов в стиле

    функционального API
  15. 15 Регистрация в DI 14 Бесшовная интеграция микросервисов в стиле

    функционального API
  16. 16 Регистрация в DI 15 Бесшовная интеграция микросервисов в стиле

    функционального API
  17. 17 Регистрация в DI 16 Бесшовная интеграция микросервисов в стиле

    функционального API
  18. 18 Коллекция продуктов 17 Бесшовная интеграция микросервисов в стиле функционального

    API
  19. 19 Коллекция продуктов 18 Бесшовная интеграция микросервисов в стиле функционального

    API
  20. 20 Коллекция продуктов 19 Бесшовная интеграция микросервисов в стиле функционального

    API
  21. 21 Продукт по ИД 20 Бесшовная интеграция микросервисов в стиле

    функционального API
  22. 22 Продукт по ИД 21 Бесшовная интеграция микросервисов в стиле

    функционального API
  23. 23 Продукт по ИД 22 Бесшовная интеграция микросервисов в стиле

    функционального API
  24. 24 Продукт по ИД 23 Бесшовная интеграция микросервисов в стиле

    функционального API
  25. 25 Работа с SOAP 24 Бесшовная интеграция микросервисов в стиле

    функционального API
  26. 26 Автосгенерированный код 25 Бесшовная интеграция микросервисов в стиле функционального

    API
  27. 27 + Создание сервис-клиента в удобном интерфейсе в несколько кликов.

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

    в стиле функционального API
  29. 29 Немного о реализации 28 Бесшовная интеграция микросервисов в стиле

    функционального API
  30. 30 SOAP сервис-клиент 29 Бесшовная интеграция микросервисов в стиле функционального

    API
  31. 31 SOAP сервис-клиент 30 Бесшовная интеграция микросервисов в стиле функционального

    API
  32. 32 SOAP сервис-клиент 31 Бесшовная интеграция микросервисов в стиле функционального

    API
  33. 33 Регистрация в DI 32 Бесшовная интеграция микросервисов в стиле

    функционального API
  34. 34 Регистрация в DI 33 Бесшовная интеграция микросервисов в стиле

    функционального API
  35. 35 Регистрация в DI 34 Бесшовная интеграция микросервисов в стиле

    функционального API
  36. 36 Регистрация в DI 35 Бесшовная интеграция микросервисов в стиле

    функционального API
  37. 37 ▪ Гибкий flow для работы в функциональном стиле над

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