Изображение блога
Алексей Ван <o-s-a.net>
Алексей Ван <o-s-a.net> Блог компании Os_Engine
24 декабря 2023, 19:25

Стандарты кода #9. Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.

Http (в контексте написания коннектора для OsEngine) – важнейший способ получения данных через АПИ соответствующих бирж/брокеров. На ровне с WebSocket, Http, как протокол связи, используется в нашем фреймворке в подавляющем кол-ве коннекторов.

Естественно, с годами у нас накопился определённый опыт по тому, как надо и как не надо его использовать. Поговорим об этом…

Стандарты кода #9.  Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.

Http протокол в API.

Во всех API крипто-бирж данный протокол в том или ином виде присутствует. Он позволяет отправлять различные запросы на сервер биржи и получать в ответ какие-то данные.

Обычно это:

  1. Бумаги доступные для торговли.
  2. Доступ к портфелю пользователя.
  3. Исторические свечи и трейды.
  4. Выставление торговых ордеров.

Делать эти запросы можно совершенно по-разному. За десятилетия жизни протокола появились сотни библиотек для этого. Однако, я рекомендую использовать следующие.

 

HttpClient.

Клиент для отправки Http запросов может и должен быть использован в запросах, в которых нет динамически меняющихся заголовков. Т.е. для public запросов.

Расположение: System.Net.Http.

 

Проблемы HttpClient.

Создаваться такие типы клиентов должны в коде коннектора ОДИН раз. Как только у Вас где-то есть в коде new HttpClient – это заявка на то, что он будет ложить OsEngine.

Проблема в том, что во время создания такого типа клиента выделяется пул потоков Task, что нагружает программу. И в особо сложных случаях делает OsEngine полностью неработоспособным, ибо потоки в системе заканчиваются.

Старайтесь НЕ СОЗДАВАЙТЬ HttpClient в запросе.

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

 

Пример HttpClient из OsEngine.

Создание:

Стандарты кода #9.  Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.
Рис. 1. Объявление и создание HttpClient в коннекторе как поля сервера. Класс BitgetServer.

Многократное использование на примере запроса свечек:

Стандарты кода #9.  Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.
Рис. 2. Пример использования HttpClient в OsEngine. Класс BitgetServer.

 

RestClient.

Расположение: RestSharp – это библиотека не из стандартной сборки Microsoft, подключенная к OsEngine отдельно.

Стандарты кода #9.  Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.
Рис. 3. Пример использования RestSharp в OsEngine. Класс BinanceClient.

Библиотека очень удобная, что здорово сокращает кол-во используемого кода. Также во время создания объектов для создания запросов обращений в пул потоков не происходит, что является оптимальным.

Для приватных запросов рекомендуется использовать именно RestSharp.

Что почитать: Простым языком об HTTP.


Пост из серии «Коннекторы к OsEngine»

Серия о том, как стать настоящим программистом и изменить свою профессию.

Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php

Комментарии открыты для друзей, добавляйтесь!

Стандарты кода #9.  Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.

OsEngine: https://github.com/AlexWan/OsEngine
Поддержка OsEngine: https://t.me/osengine_official_support

Регистрируйся в АЛОР и получай бонусы: https://www.alorbroker.ru/open
Сайт АЛОР БРОКЕР: https://www.alorbroker.ru
Раздел «Для клиентов»: https://www.alorbroker.ru/openinfo/for-clients

Стандарты кода #9.  Правильные HTTP запросы и библиотеки. Коннекторы для OsEngine #31.
 

0 Комментариев

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн