Я экспериментирую с Grails, чтобы взаимодействовать с платформой онлайн-торговли.
в частности, Interactive Brokers (IB) http://interactivebrokers.com/en/p.php?f=programInterface&ib_entity=llc
То, как работает API, заключается в том, что вам необходимо запустить их клиентскую программу Trader Workstation (TWS http://interactivebrokers.com/en/p.php?f=tws&ib_entity=llc)), а затем мы используем API для работы. Потребление API в основном включает создание объекта-посредника вызов функции-члена connect () (это устанавливает соединение через локальный порт с программным обеспечением TWS) и вызов чего-то вроде getData ()
Значением grails в этом сценарии являются функции GORM и предоставляемая веб-инфраструктура. Я хочу иметь возможность определять объекты, абстрагированные от реализации БД, легко выполнять операции персистентности и легко предоставлять пользователям интерфейс для выполнения CRUD и пользовательских действий.
Моя задача заключается в том, что IB API использует асинхронную связь для запросов и ответов. т.е. когда я вызываю getData (), API знает, как использовать функцию обратного вызова dataResults (), когда он готов их отправить. Для того чтобы dataResults () мог вызываться, созданный мною объект-посредник все еще должен присутствовать для получения ответа.
Внутри функции контроллера, если я создаю объект посредника и вызываю getData (), когда запрос завершается, объект посредника, очевидно, также исчезает. Поэтому я никогда не смогу получить ответ.
Я думаю, что мог бы быть какой-то способ сделать это, начав фоновые потоки, но я не уверен, что это путь, по которому я хочу идти.
У кого-нибудь есть какие-либо рекомендации относительно того, какой подход лучше?
Я не женат на Граале, причины, по которым я его использую, указаны выше. Если есть фреймворк для настольных приложений, который я также легко могу сделать веб-интерфейсом позже, я определенно открыт для этого.
спасибо заранее.