Architekturfrage

KIllrogg

Mitglied
As Is:
Ich bin lediglich ein (evtl. ambitionierter) Hobbyprogrammierer - man möge mir meine partielle Unwissenheit also bitte verzeihen ;)

Ich habe bisher ein wenig mit RMI gearbeitet und auch mit JSON.
Nun wollte ich von einer Android App aus auf einem Linuxrechner einen Server ansteuern (Sensordaten abfragen und Steuerdaten für Motoren hinschicken) leider habe ich von der Portierung meines Codes (Windows zu Linux via RMI) bemerkt dass auf Android RMI nicht unterstützt wird (grmmml eigentlich hatte ich extra JAVA gewählt, damit mein Code auf "allen Plattformen" laufen kann... denkste...)

To Be:
Nun meine Frage: was wäre denn nun eine vernünftige Alternative anstatt RMI um ein roboterähnliches Gerät (gestuert von einem Linuxrechner) in Echtzeit (Latenzen wären eher... schlecht) anzusteuern (also quasi eine bidirektionale Client-Server Verbindung - k.a. wie sich das im Fachjargon nennt)? Eure Empfehlung werde ich mir dann wohl mal näher anschauen und beibringen.


Hinweise, gerne auch mit den damit verbundenen Vor- und Nachteilen, werden erbeten!
 

Tobse

Top Contributor
Je nachdem wie viel Kontrolle die Fernsteuerung haben muss könnte REST reichen. Wenn in Echtzeit eingaben durchgereicht werden müssen, musst du wohl oder übel ein eigenes Netzwerkprotokoll nehmen müssen. Dazu muss man auch sagen: Latenzen können IMMER auftreten. Vor allem aus dem Mobilfunknetz, etc. Der Server MUSS also auch damit umgehen können, wenn die Verbindung mal stockt oder sogar ganz abreisst.
 

KIllrogg

Mitglied
Je nachdem wie viel Kontrolle die Fernsteuerung haben muss könnte REST reichen.
REST kenne ich nicht, schau mir das mal an.

@Latenzen
Ich gehe eh vom Anwendungsfall wlan (mit kurzen Abständen) aus. Vergleichbar mit Fy by wire (nur eben ohne wire).
Übers internet wäre dann eher so was wie der mars Rover (dauert halt bis response kommt)

Ideal wäre ein Standard der Beides kann, aber erstes ist (viel) wichtiger.
 

dayaftereh

Top Contributor
Hey. Ich weiß nicht was du genau vor hast. Wenn du Plattform unabhängig bleiben willst würde ich ins Web gehen.

Das heißt, ich würde einen Webserver entwickeln der eine Rest API hat über die du deine Sensordaten abfragen kannst. Zudem hat der Webserver eine Singel-Page Webapplikationen zB AngularJS, die die Sensordaten vom Server holt und dann an die Webseite schick bzw anzeigt.

Wenn du Daten in Echtzeit haben willst kannst du websocket benutzen. Ist wie ein TCP Socket, nur mit einem kleinen Protokoll.

Damit sparst du dir die App Entwicklung und kannst die Webseite auch über einen Desktop Rechner oder iOS benutzen.
 

Andy17

Aktives Mitglied
Ich würde in deinem Anwendungsfall auch einen Applicationserver aufsetzen, welcher REST-Schnittstellen anbietet. Da du eine Android-App nutzen möchtest, klingt der Anwendungsfall, dass Du auch mal aus dem WAN kommst, recht realistisch.

Du solltest noch an Security-Aspekte denken. Nutze vielleicht HTTPS und shared-Secrets um deine Anwendung und deine App zu authentifizieren. Wenn ich an Motorensteuerung denke, dann wäre Sicherheit ja vielleicht auch ein Aspekt, den du berücksichtigen solltest.
 

Oben