В большинстве коннекторов OsEngine используется конвертация потоковых данных из JSON объектов. Поговорим о том, как правильно и не правильно поступать при их использовании.
Newtonsoft.Json
Именно эту библиотеку желательно использовать. Никакого смысла плодить в проекте множество преобразователей сообщений в JSON классы нет.
И на сегодняшний день можно говорить о том, что было бы не плохо, если бы она в итоге осталась единственной в нашем проекте для этих целей.
Нельзя использовать JSON объекты, принадлежащие другим коннекторам.
Это важно, т.к. некоторые биржи прямо пишут, что у них 100 % совместимость с АПИ Binance. Однако на поверку эти заявления – ложь, либо правда частично. Ибо на Бинанс может пройти обновление, которое в итоге будет добавлено в биржу, которая об этом говорит через 2 месяца. И всё это время коннектор работать не будет. А скорее придётся переписать всё…
Некоторые биржи в описании JSON объектов сразу предлагают ставить типы переменных у JSON объектов вроде double, decimal, int. Однако шлют периодически вместо этих значений null или иные записи вместо этих переменных. Также биржи не учитывают региональные настройки при отсылке типов с плавающей запятой. От чего коннектор будет падать. Таким образом, пока мы не сделали все типы переменных string, мы получали ошибки конвертирования.
Это не безопасно относительно локализации. И весь код, написанный с применением этого метода, может не работать на машине с другим языком. Использовать нужно НАШЕ расширение для string, находящееся вот здесь:
Пример использования нашего, безопасного расширения:
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: https://smart-lab.ru/company/os_engine/blog/959953.php
Комментарии открыты для друзей, добавляйтесь!
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