Client Server Designe Muster

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

Hallo alle zusammen,

ich hoffe ich bin im richtigen unter Forum gelandet :) Ich muss gestehen ich bin Python Anfänger, ein wenig Erfahrung ist vorhanden aber das musste schon 6-7 Jahre her sein.

Folgende Problemstellung ist gegeben:

Ein Android Gerät soll auf einen Server Kommunizieren können und Daten austauschen.

Client: Android
Server: Linux
Austausch via: JSON

Meine frage ist: Ist es empfehlenswert Python auf dem Server zu benutzen oder gibt es da einen bessere Möglichkeit?

Da auf dem Server Große Datenmengen(EXEL) bewegt werden sollen habe ich an die Bibliothek "Panda" gedacht. Passen wäre es gleich die ganze Server Architektur mit Python aufzubauen.
BlackJack

@optimum: Da wir hier in einem *Python-Forum* sind, ist die Antwort wohl recht berechenbar: Natürlich kann man die Serverseite in Python umsetzen. :-)
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

BlackJack hat geschrieben:@optimum: Da wir hier in einem *Python-Forum* sind, ist die Antwort wohl recht berechenbar: Natürlich kann man die Serverseite in Python umsetzen. :-)
Hab auch keine andere Antwort erwartet :D :D

"Natürlich kann man die Serverseite in Python umsetzen."
Die frage ist ob es aufwendig ist und es sich auch vom Aufwand her lohnt.

Welche Libs muss ich mir da genauer anschauen wenn ich einen "Python Server" aufsetzen will. Bin für jeden Tipp dankbar :)
BlackJack

@optimum: Das kommt darauf an was der Server können soll. Du kannst Dir irgendein Webrahmenwerk nehmen, angefangen von Bottle, über Flask, bis hin zu Django um eine REST-API mit JSON zu erstellen.
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

BlackJack hat geschrieben:@optimum: Das kommt darauf an was der Server können soll. Du kannst Dir irgendein Webrahmenwerk nehmen, angefangen von Bottle, über Flask, bis hin zu Django um eine REST-API mit JSON zu erstellen.
Naja der Server soll eigentlich nur mir dem Android Gerät via JSON kommunizieren.

Android -> JSON -> Server (Server empfängt die JSON, Interpretiert die Ausgabe leitet es zB an Panda weiter)
Server -> JSON -> Android (Sendet die Daten verpackt als JSON zurück ans Android Gerät)

Also hab ich auf dem Server einen Schichte Architektur. Ganz oben der "Server" der für Kommunikation verantwortlich ist, darunter der "Interpreter" und zum Schluss "Berechnung/Bearbeitung" oder sonstiges.
----------------------------------------
Server (Kommunikation)
---------------------------------------
Interpreter
----------------------------------------
Berechnung/Bearbeitung
---------------------------------------

Optimal wäre ein "Server/Framework" was ich installiere und anpasse, sprich keinen eigenen Server Programmieren soll. Die Schichten darunter, muss ich wohl selbst Programmieren...

Danke für die Tipps, "Django um eine REST-API mit JSON zu erstellen" hört sich gut an :)

Wünschenswert wäre ein "Server/Framework" der auch mit Zertifikaten arbeiten kann, um eine Sichere Verbindung zwischen den Kommunikationsteilnehmern zu gewährleisten.
BlackJack

@optimum: Nur um sicher zu gehen, der „um eine REST-API mit JSON zu erstellen.“-Teil bezog sich auf alle Alternativen, nicht nur auf Django.

Zertifikate für die sichere Verbindung sind bei so einer API Sache des Webservers.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@optimum: normalerweise schichtet man ja umgekehrt, wobei ich jetzt nicht genau weiß, was Du mit »Interpreter« meinst. Wenn es nur darum geht, ein paar Berechnungen zu machen, dann ist Django ein paar Nummern zu groß. Einige eingebaute Server der Frameworks können auch https, sowie die üblichen WSGI-Gateways. Wenn man einen "richtigen" HTTP-Server nimmt, ist das ja sowieso kein Problem.
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

Sirius3 hat geschrieben:@optimum: normalerweise schichtet man ja umgekehrt, wobei ich jetzt nicht genau weiß, was Du mit »Interpreter« meinst. Wenn es nur darum geht, ein paar Berechnungen zu machen, dann ist Django ein paar Nummern zu groß. Einige eingebaute Server der Frameworks können auch https, sowie die üblichen WSGI-Gateways. Wenn man einen "richtigen" HTTP-Server nimmt, ist das ja sowieso kein Problem.

"wobei ich jetzt nicht genau weiß, was Du mit »Interpreter«" Interpreter ist vielleicht schlecht gewählt. Der Interpreter soll dann aus der JSON Befehle und Daten entnehmen und das dann weiter leiten. Manager wäre da vielleicht besser als Interpreter.

"ein paar Berechnungen zu machen, dann ist Django ein paar Nummern zu groß". Paar Berechnungen werden es wohl nicht sein, es müssen wohl GB an EXEL Tabellen bewegt(Rechen, Ausschnitten Laden usw) werden, fragt mich bloß nicht warum man das in EXEL Tabellen verpackt, das kann ich auch nicht nachvollziehen! Hab mir gerade Django angeschaut, das wird wohl ne Nummer zu Groß sein!
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@optimum:
Beschreib doch mal Deinen Anwendungsfall genauer - ein paar GB an EXCEL-Tabellen klingt zusätzlich nach Datenbank, da man eigentlich nicht auf EXCEL-Tabellen serverseitig direkt rumrödeln möchte. Dann käme evtl. noch ein ORM dazu, welcher bei Django schon einbaut ist oder mit SQLAlchemy standalone kommt. Wenn Du zusätzlich noch Verwaltungsoberflächen, Benutzerverwaltung etc. haben willst, bist Du mit Django wahrscheinlich besser beraten, als alles händisch und fehlerträchtig selbst zusammenzustellen.
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

@jerch
jerch hat geschrieben:Beschreib doch mal Deinen Anwendungsfall genauer
Grob beschrieben: Android App wird gestartet paar Werte werden eingegeben und an den Server geschickt, Server führt eine Berechnung durch und schickt es zurück an den Client (Android App).
jerch hat geschrieben: ein paar GB an EXCEL-Tabellen klingt zusätzlich nach Datenbank, da man eigentlich nicht auf EXCEL-Tabellen Serverseitig direkt rumrödeln möchte.
Kann man den aus den EXCEL-Tabellen "schnell und einfach" einen DB erstellen, ohne das man viel händisch eintragen muss? Sprich man erstellt ein DB Schema und liest die Tabellen ein. "schnell und einfach" ist gemeint ob es schon Libs dafür gibt und man es nicht alles selbst schreiben muss.
Ich würde auch gerne mit Datenbanken arbeiten A. es ist schneller B. es ist einfacher zu realisieren.

Das soll meine Bachelorarbeit werden, und beim Gespräch wurde mir nur folgendes gesagt: "Wir haben Messstationen die zB PV-Anlagen Messen oder Elektor-Fahrzeuge, die Messstationen spucken den ganzen Kram in EXCEL aus(ich verstehe es auch nicht warum man das unbedingt in EXCEL machen muss!!!). Es gibt einen Berechnungsalgorithmus der die ganzen Tabellen berechnet usw. Nun soll es via Mobilgeräte(Android) die Daten angezeigt werden".
jerch hat geschrieben: Dann käme evtl. noch ein ORM dazu, welcher bei Django schon einbaut ist oder mit SQLAlchemy standalone kommt. Wenn Du zusätzlich noch Verwaltungsoberflächen, Benutzerverwaltung etc. haben willst, bist Du mit Django wahrscheinlich besser beraten, als alles händisch und fehlerträchtig selbst zusammenzustellen.
Also in Moment ein Backend nicht geplant, ich weiß nicht ob die Zeit dafür reicht und nicht den Rahmen der Bachelorarbeit sprengen würde, aber ich bin noch am Planen. Aber als eine Erweiterung ist es denkbar.

Ich bin gerade in der Planung, besonders was die Server Seite angeht, da ich Premier auf Linux arbeite ist mir Python als Server direkt eingefallen.
Aber wie geschrieben hab ich keine Erfahrung damit gemacht und wollte wissen ob Python dafür geneigt ist, scheint wohl der Fall zu sein :)
BlackJack

@optimum: Ohne die Excel-Dokumente und deren Aufbau zu kennen, lässt sich schlecht sagen wie kompliziert eine Übertragung in eine Datenbank ist. Es gibt auch keinen fertigen Code für so etwas soweit ich weiss, allerdings musst Du den Grossteil der dafür nötig wäre ja sowieso schreiben, denn Du musst die Daten ja auf jeden Fall aus den Excel-Dokumenten extrahieren wenn Du damit Berechnungen anstellen möchtest. Und dann kann man sie an der Stelle auch in eine relationale Datenbank oder vielleicht auch in eine hierarchische Datenbank wie HDF5 weg schreiben. Mit dem Vorteil, dass erneutes auslesen aus der Datenbank für die Berechnungen einfacher und effizienter ist, und die Datenbank beispielsweise beim filtern und eventuell auch beim aggregieren von Daten schon helfen kann.

Der Grund für Excel ist sehr wahrscheinlich das ”Laien” das kennen und es mit verbreiteter Software einfach verarbeiten und visualisieren können. Es können mehr Leute in den Büros mit Tabellenkalkulationen umgehen als mit SQL-Datenbanken.

Du hast im ersten Beitrag nur vom Datenaustausch per JSON geschrieben, würde es nicht Sinn machen das komplett als Webanwendung umzusetzen? Dann bist Du auch nicht auf Android beschränkt.
optimum
User
Beiträge: 13
Registriert: Donnerstag 4. August 2016, 12:28

@BlackJack
BlackJack hat geschrieben:@optimum: Ohne die Excel-Dokumente und deren Aufbau zu kennen, lässt sich schlecht sagen wie kompliziert eine Übertragung in eine Datenbank ist. Es gibt auch keinen fertigen Code für so etwas soweit ich weiss, allerdings musst Du den Grossteil der dafür nötig wäre ja sowieso schreiben, denn Du musst die Daten ja auf jeden Fall aus den Excel-Dokumenten extrahieren wenn Du damit Berechnungen anstellen möchtest. Und dann kann man sie an der Stelle auch in eine relationale Datenbank oder vielleicht auch in eine hierarchische Datenbank wie HDF5 weg schreiben. Mit dem Vorteil, dass erneutes auslesen aus der Datenbank für die Berechnungen einfacher und effizienter ist, und die Datenbank beispielsweise beim filtern und eventuell auch beim aggregieren von Daten schon helfen kann.
Ja das stimmt, muss es ja wieso auslesen und dann kann ich es gleich in eine DB packen. Leider weiß ich auch noch nicht wie die EXCEL-Tabellen Struktur aussieht, hab noch keinen Zugang zum Institut....
BlackJack hat geschrieben:Du hast im ersten Beitrag nur vom Datenaustausch per JSON geschrieben, würde es nicht Sinn machen das komplett als Webanwendung umzusetzen? Dann bist Du auch nicht auf Android beschränkt.
Es muss auf einen Android Gerät laufen, da sie es zum Kunde usw mitnehmen wollen, klar geht es auch mit einer "WEB View" und "cross platform app" (JavaScript) usw. Aber es soll nur auf Android laufen und auch in Java (Android Nativ) geschrieben werden. Ehrlich gesagt bin ich ganz froh das es mit Java(Android) gemacht werden soll, bin nicht der Freund von JavaScript und cross-platform app.
BlackJack

@optimum: Es soll nur auf Android laufen ist eine komische Anforderung. Vor allem wenn es ansonsten nicht weiter vom System/von der Hardware abhängig ist.

JavaScript ist zwar nicht die tollste Sprache, aber Java auch nicht wirklich. :-) Man kann ja auch irgendwas nehmen was zu JavaScript kompiliert werden kann. CoffeeScript oder Dart zum Beispiel.
Benutzeravatar
snafu
User
Beiträge: 6740
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

BlackJack hat geschrieben:Es soll nur auf Android laufen ist eine komische Anforderung.
Ich könnte mir vorstellen, dass damit eine Android-App als Frontend gemeint ist.
Sirius3
User
Beiträge: 17749
Registriert: Sonntag 21. Oktober 2012, 17:20

@BlackJack: ich kann auch nicht verstehen, wie jemand auf die Idee kommt, für solche Oberflächen eine Native App schreiben zu wollen, zumal neben den 0 Vorteilen etliche Nachteile stehen (aufwändiger Build-Deployment-Prozess, umständliche Installation und Updates, hoher Test- und Wartungsaufwand, Abhängigkeit von Betriebssystem und Version).

So wie sich das anhört, sind das mit Bootstrap und JQuery ein paar hundert Zeilen HTML und Javascript, da möchte ich nicht wissen, wieviele 1000 Zeilen Boilerplate Code das in Java zusammengibt.

Aber als armer Bachelor-Student muß man sich an die Vorgaben halten, wie unsinnig sie auch sein mögen.
Antworten