Сегодня поговорим про разницу между IServer (интерфейс) и AServer (абстрактный класс) внутри Os Engine. Зачем они в проекте и как появились?
Это часть серии постов «Коннекторы к OsEngine», в которой мы с нашими читателями учимся быть не просто алготрейдерами, но и настоящими программистами, а многие из них станут ими, навсегда, изменив свою жизнь к лучшему. Пролетарии СмартЛаба, присоединяйтесь!
Упрощённая схема работы с конечной реализацией сервера из любого робота в OsEngine:
1 IServer.
IServer – интерфейс для доступа к реализациям серверов почти во всём проекте. Нужен для того, чтобы унифицировать методы и свойства, нужные для роботов и OsData.
Родился сразу же, как появился второй коннектор в OsEngine.
Коннекторы – идеальная история для того, чтобы унифицировать доступ к ним через интерфейс.
В таком виде проект существовал года два. Т.е. был интерфейс и всё. Сами реализации очень сильно отличались от сервера к серверу.
2 AServer.
Где-то к десятому серверу я понял, что приходится таскать из одной реализации в другую очень много однотипного кода. Вроде хранилищ данных, потоков запросов к бирже и т.д. И появился новый слой при доступе к реализации сервера – Aserver.
AServer – абстрактный класс, реализующий общую логику работы для конечных реализаций серверов.
Хранит в себе готовую логику:
Экономит на данный момент 2211 строк кода логики при создании нового подключения:
3 AServer, наследуемый для реализаций серверов.
На данный момент, создавая любой коннектор, нужно наследоваться от AServer:
Удачных алгоритмов!
Пост из серии «Коннекторы к OsEngine»
Серия о том, как стать настоящим программистом и изменить свою профессию.
Оглавление и смыслы здесь: 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