Anforderungen für cBots
Es gibt zwei Hauptanforderungen, die Sie erfüllen müssen, um sicherzustellen, dass Ihre cBot-Instanzen reibungslos in der Cloud ausgeführt werden können: Compile-Time-Referenzen und plattformübergreifende Abhängigkeiten.
Kompilierzeitverweise
Es gibt mehrere Möglichkeiten, mit Abhängigkeiten in .NET zu arbeiten. Sie können beispielsweise Abhängigkeiten als einzelne .dll-Dateien bereitstellen, ohne sie direkt in Ihre Projektausführungsdatei einzubeziehen.
Allerdings sind nur Kompilierzeitverweise vollständig mit der Ausführung von cBots in der Cloud kompatibel. Die Cloud fungiert als dedizierte Umgebung, die die cBot-Ausführungsdatei (die .algo-Datei) ausführt, ohne externe .dll-Dateien zu verwalten.
Kompilierzeitabhängigkeiten sind in allen Fällen gewährleistet, in denen Sie eine Bibliothek in den using-Anweisungen am Anfang Ihres Codes referenzieren. Wenn Sie jedoch eine eigenständige .dll-Datei innerhalb des Hauptteils Ihres Codes referenzieren (z. B. über die Assembly.Load()-Methode), ist dieser Verweis nicht zur Kompilierzeit vorhanden, und Ihr cBot führt keine zugehörigen Operationen in der Cloud aus.
Plattformübergreifende Abhängigkeiten
Cloud führt alle cBots in einer Linux-basierten Umgebung aus. Das bedeutet, dass externe Abhängigkeiten plattformübergreifend sein müssen, wenn Sie sie verwenden möchten.
Zur Veranschaulichung finden Sie hier einige Abhängigkeiten, die in der Cloud nicht funktionieren, da sie spezifisch für Windows sind.
- WPF
- WinForms
- WinAPI
Wenn Sie eine neue Abhängigkeit zu Ihrem Projekt hinzufügen, lesen Sie die Dokumentation, um zu erfahren, ob sie in Linux-basierten Umgebungen unterstützt wird.
API-Funktionen
Es gibt mehrere Algo-API-Funktionen, die in der Cloud im Vergleich zur lokalen Ausführung anders funktionieren.
| Funktion/Methode | Funktionsweise in der Cloud |
|---|---|
MessageBox | Gibt immer MessageBoxResult.None zurück |
Window | Wird immer ignoriert |
Notifications.PlaySound() | Wird immer ignoriert |
Account.UserNickName | Ruft immer den OnException()-Handler auf |
Chart.TakeChartshot() | Gibt immer null zurück |
WebSocketClient | Funktioniert nur, wenn Sie über Port 25345 eine Verbindung zu einem Dienst herstellen |
HTTP | Es werden keine HTTP-Anfragen gesendet |
LocalStorage und Dateioperationen | Funktioniert nur, wenn relative Pfade angegeben oder neue Verzeichnisse von Grund auf neu erstellt werden |
Lokaler Speicher und Dateioperationen
Wenn eine Cloud-Instanz gestoppt oder gelöscht wird, werden alle ihr innerhalb der Cloud zugewiesenen Ressourcen automatisch freigegeben. Wenn Ihr cBot Dateien oder Verzeichnisse erstellt und dann auf Daten daraus zugreift, werden diese Dateien bei jedem Neustart oder jeder Löschung der Instanz gelöscht.
