Требования к сиБотам
Существует два основных требования, которые необходимо соблюдать, чтобы обеспечить бесперебойную работу экземпляров сиБотов в облаке: ссылки времени компиляции и кросс-платформенные зависимости.
Ссылки времени компиляции
Существует несколько способов работы с зависимостями в .NET. Например, вы можете предоставить зависимости в виде отдельных файлов .dll, не включая их напрямую в исполняемый файл проекта.
Однако только ссылки времени компиляции полностью совместимы с запуском сиБотов в облаке. Облако выступает в качестве выделенной среды, которая запускает исполняемый файл сиБота (файл .algo) без управления какими-либо внешними файлами .dll.
Зависимости времени компиляции обеспечиваются во всех случаях, когда вы ссылаетесь на библиотеку в операторах using в начале вашего кода. Однако если вы ссылаетесь на отдельный файл .dll в теле вашего кода (например, через метод Assembly.Load()), эта ссылка не будет ссылкой времени компиляции, и ваш сиБот не будет выполнять какие-либо связанные операции в облаке.
Кросс-платформенные зависимости
Облако выполняет все сиБоты в среде на базе Linux. Это означает, что если вы хотите использовать внешние зависимости, эти зависимости должны быть кросс-платформенными.
В качестве примера приведем несколько зависимостей, которые не будут работать в облаке, поскольку они специфичны для Windows.
- WPF
- WinForms
- WinAPI
При добавлении новой зависимости в ваш проект прочитайте ее документацию, чтобы узнать, поддерживается ли она в средах на базе Linux.
Функции API
Существует несколько функций Algo API, которые работают в облаке иначе по сравнению с локальным выполнением.
| Функция/метод | Как это работает в облаке |
|---|---|
MessageBox | Всегда возвращает MessageBoxResult.None |
Window | Всегда игнорируется |
Notifications.PlaySound() | Всегда игнорируется |
Account.UserNickName | Всегда вызывает обработчик OnException() |
Chart.TakeChartshot() | Всегда возвращает null |
WebSocketClient | Работает только при подключении к сервису через порт 25345 |
HTTP | HTTP-запросы не отправляются |
LocalStorage и файловые операции | Работает только при указании относительных путей или создании новых каталогов с нуля |
Локальное хранилище и файловые операции
Всякий раз, когда экземпляр в облаке останавливается или удаляется, все выделенные ему ресурсы в облаке автоматически освобождаются. Если ваш сиБот создает файлы или каталоги, а затем обращается к данным из них, эти файлы будут удалены при каждом перезапуске или удалении экземпляра.
