Ankündigung

Einklappen
Keine Ankündigung bisher.

Welche Webtechnologie?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage: Welche Webtechnologie?

    Guten Abend,
    Mir ist ein spannender Auftrag in die Hände gekommen. Es geht darum, eine webbasierte Software zu entwickeln, welche Messdaten, die in einer SQL-Datenbank liegen, online darzustellen. Die Software soll einem die Möglichkeit geben, ein Bild (Plan, Orthofoto o.Ä.) hochzuladen und darauf verschiedene Punkte zu setzen, welche Sensoren repräsentieren. Jeder Punkt wird mit genau einer SQL-Tabelle (Messdaten des Sensors) verknüpft. Man soll die Punkte (Sensoren) dann anklicken können und die jeweiligen Messdaten abrufen. Schön wäre natürlich, wenn Diagramme der Daten angezeigt werden könnten.

    Nun möchte ich gerne fragen, mit welcher Technologie ich mich an diese Aufgabe heranwagen sollte. Mir ist bereits gesagt worden, dass Canvas (JavaScript) die wohl beste Lösung wäre.
    Da ich im Studium jedoch gerade etwas Java gelernt habe, würde ich gerne wissen, ob sich dies anhand eines Java WebApplets realisieren lassen würde. Im Prinzip käme auch eine Java Desktopapplikation in Frage. Da die Messdaten jedoch sowieso auf einer Online-Datenbank liegen, bevorzuge ich eine webbasierte Technologie.

    Was würdet ihr vorschlagen?

  • #2
    AW: Welche Webtechnologie?

    Sind in dem Auftrag keine weiteren Anforderungen erwähnt? Je nach dem ob es noch weitere Anforderungen gibt könnte eine konkrete Empfehlung in die falsche Richtung zielen. Wenn z.B. der eingesetzte Webserver vorgeschrieben wird, macht es keinen Sinn eine inkompatible Technologie zu erwähnen.

    Unabhängig davon macht es Sinn, die Aufgabe in zwei Teile zu zerlegen (so fern Du das nicht eh schon so eingeplant hast):
    1. (Web)-Server
    2. Client


    Es wäre natürlich schon möglich nur den Client zu machen, wenn der Client direkt auf die SQL-Datenbank verbinden würde.

    Wenn Du z.B. ein Java-Applet oder eine Java-Desktop-Applikation machst und via JDBC direkt auf die SQL-DB verbindest, könntest Du den Server weglassen. Du müsstest dann einfach mit gewissen Einschränkungen leben z.B. wenn der DB-Server auf einem Port läuft welcher durch die Firewall des Benutzers gesperrt ist, gäbe es logischerweise Probleme. Ausserdem musst Du überlegen, wie Du die Zugangsdaten zum SQL-Server speicherst (alternativ könntest Du für jeden Benutzer neue Zugangsdaten erstellen, der Benutzer müsste sich dann die Zugangsdaten merken und jedes Mal eingeben um "einzuloggen"). Der Zugang müsste auf jeden Fall limitiert werden und die Berechtigungen sollten verhindern, dass der Benutzer die Datenbank Kaputt machen kann. Der Vorteil ist halt, dass Du hier ausser Java keine andere Technologie anschauen musst.

    Die Client/(Web-)Server-Lösung ist für den vorgegebenen Verwendungszweck schon besser geeignet. Das Problem ist nun einfach, dass Du zwei mal nach der Technologie fragen musst, einmal für den Client und dann für den Server .

    Beim Client ist die Frage einfach: kann ich mit der eingesetzten Technologie "Sachen zeichnen" und kann ich mit dem Server kommunizieren um Dateien hochzuladen und Sensordaten hoch-/herunterzuladen?

    Grundsätzlich trifft das für Java Applets, Java Applikationen, Flash-Applikationen und Browsergestützte HTML/Javascript-Applikationen zu.

    Java-Applets sind mittlerweile etwas mühsamer geworden weil Java wegen der letzten Sicherheitslücken eine nervige Abfrage macht ob man das Applet auch *wirklich* *wirklich* *ganz im ernst* ausführen will. Ansonsten gibt es keinen Hinderungsgrund dies als Java-Applet zu realisieren, wenn das für Dich am einfachsten ist. Statt direkt mit der DB zu verbinden würde ich beim Applet auch via HTTP mit dem Server kommunizieren.

    Eine Browserbasierte HTML/Javascript-Lösung wäre etwas einfacher als alles selber zu programmieren. Hier ist noch zu erwähnen, dass Javascript und Java nicht vergleichbar sind. Die Syntax ist zwar ähnlich aber irgendwie ist das dann auch alles. Bei der HTML/Javascript-Lösung muss auf der Server-Seite einfach ein Webserver zur Verfügung stehen, welcher die Daten aus der SQL-Datenbank ausliest und als XML - oder noch besser JSON - an den Browser liefert. Meistens geschieht das über Javascript mit AJAX. Da es jedoch relativ mühsam ist, dies für alle Browser korrekt zu implementieren empfehle ich den Einsatz von jQuery (oder einem ähnlichen JS-Framework).

    Für die Darstellung kannst Du durchaus Canvas verwenden und mit Javascript darauf zeichnen. Alternativ kannst Du auch einfach das Bild der Karte in einem <img>-Tag darstellen und dann mit Javascript die Punkte/Sensoren ebenfalls als <img> absolut auf der Karte positionieren. Der Browser übernimmt dann das Zeichnen (zum einfachen "proof of concept" - Anwendung: auf die Schweizer-Karte klicken um einen Punkt zu erstellen, und auf einen Punkt klicken um Details zum Punkt anzuzeigen. Momentan wird halt nur die Position des Punktes im Bild angezeigt - es können aber beliebige, mit dem Punkt verbundene, Daten angezeigt werden).

    Für die Tabellen/Diagramme bei HTML/Javascript würde ich einen Blick auf die Google Chart API werfen.

    Zum Server: der Server dient einfach als "Middleware" um die SQL-Datenbank für den Client zu abstrahieren. Er nimmt die Anfrage des Clients entgegen und liefert die gewünschten Daten in einem spezifischen Format (XML, JSON, was auch immer) zurück.

    Die Fragen beim Server lautet halt: ist neben der SQL-Datenbank schon irgend ein Webserver vorhanden? Könnte dieser als Webserver für die Anwendung genutzt werden? Welche Technologie verwendet der Webserver?

    Wenn Du auf der Server-Seite Java einsetzen möchtest (musst), kannst Du einen Java Servlet-Container wie Tomcat, Jetty oder JBoss verwenden (ausser Du willst einen eigenen HTTP-Server programmieren ). Theoretisch könntest Du darauf noch irgend ein Framework pappen wie Struts oder Spring - die Lernkurve für diese Java-Frameworks ist jedoch relativ steil (naja für Servlet-Container ebenfalls). Ich würde vielleicht einfach mal eine Prototypen-Applikation bauen um ein Gefühl dafür zu bekommen wie man Daten aus einer Datenbank liest und dann als XML oder JSON ausgibt und wie man Dateien (Bilder) hochladen kann.

    Das Problem ist einfach, dass eine Serverseitige Java-Lösung evtl. einen zu grossen Lern- und Programieraufwand verursachen könnte (ist vielleicht nicht so tragisch - die Frage welche Du hier stellen musst ist: wann ist meine Deadline - bis wann muss es fertig sein). Der Server soll ja nur als Bindeglied von der Datenbank zum Client dienen (auch noch als Datenspeicher für die hochgeladenen Bilder - die würde ich *nicht* in der DB speichern).

    Wenn ein Webserver vorhanden ist und dieser Webserver zufälligerweise PHP am laufen hat würde ich den Server-Teil mit PHP realisieren (auch wenn manch einer aufgrund dieser Aussage zusammen zuckt). Einfach die vielen Beispiele aus dem Web ignorieren (wenn eines mysql_query oder mysql_connect enthält schnell die Seite schliessen) - damit fährst Du auf der sicheren Seite.

    Zusammengefasst:
    • Ich würde HTML/Javascript verwenden - Canvas ist nicht zwingend nötig (der Browser nimmt Dir ein paar unangenehme Dinge ab, wenn Du den Browser die ganze Darstellung übernehmen lässt). Für Webbasierte Clients musst Du auch keinen Installer anbieten und Updates sind einfach zu realisieren.
    • Auf der Serverseite kannst Du das verwenden was für Dich am einfachsten ist und den gegebenen Anforderungen entspricht. Wenn nichts vorgegeben ist: nimm PHP wenn Du Zeit sparen willst und eine einfache Lösung suchst; nimm Java wenn dich die steile Lernkurve nicht stört.


    Je nach vorhandener Zeit würde ich einfach ein paar Technologien ausprobieren/evaluieren. Es gibt einen ganzen Haufen Sprachen/Frameworks welche mehr/weniger hilfreich sind und keine all zu grossen Anforderungen stellen.

    Kommentar


    • #3
      AW: Welche Webtechnologie?

      Ich würd dir vaadin empfehlen. Ist echt was tolles.

      Kommentar

      Lädt...
      X