skgm

about:Broadcast IT Engineering

WebApps mit PHP und HTML5

Für eine WebApp, die nur online sinnvoll genutzt werden kann, ist der Standardansatz nicht zielführend. Es müsste eine vollständige Kopie der Datenbasis auf dem Smartphone gespeichert werden. Die Datenbasis kann sich immer wieder verändern, gleichzeitig muss aber garantiert werden, dass die Daten, die angezeigt werden, tatsächlich aktuell sind. Um die Aktualität der Daten zu gewährleisten müsste bei jedem Start der WebApp, der Stand der Datenbank auf dem Server, mit dem Stand der Kopie auf dem Smartphone verglichen werden. Solange die Datenbank nur einzelne Inhalte der Datenbank (z.B. Produkte) enthält wäre dies relativ leicht möglich. Geht man jedoch davon aus, dass 20 oder 200 Firmen ihre Produkte im System hinterlegt haben, wird der Aufwand sehr hoch und der Abgleich würde hohe Rechenlast und viel Netzwerktraffic verursachen.

Beides ist zu vermeiden um den Akku zu entlasten. Außerdem basiert das System auf dem Gedanken, dass Kunde und Anbieter miteinander über das Internet interagieren. Alleine aus diesem Grund schon muss die Möglichkeit des Offline-Betriebs der App gar nicht in Betracht gezogen werden. Bei diesem Projekt handelt es sich nach meinem Verständnis um ein klassisches Client-Server System, das in einer WebApp abgebildet werden soll. Um dies zu bewerkstelligen habe ich einen Ablauf entwickelt, der ein Höchstmaß an Flexibilität, Effizienz, Aktualität und Sicherheit bietet:

  • Der Kunde öffnet die WebApp durch Antippen des Icons auf dem Startbildschirm seines Smartphones. Beim ersten Start muss der Kunde einen Anbieter auswählen. Diese Auswahl wird auf dem Smartphone gespeichert.
  • Der Webserver fragt die Auswahl vom Smartphone ab.
  • Der Webserver generiert auf Basis des Smartphone Betriebssystems, der Anbieterauswahl, und den Inhalten der Datenbank eine WebApp mit statischem Inhalt (die vollständige Produktübersicht des vom Kunden gewählten Anbieters), die zusätzlich die Fähigkeit hat, Inhalte dynamisch vom Server nachzuladen.
  • Der Webserver liefert die WebApp zur Nutzung an das Smartphone aus.

Die WebApp schreibt sich somit beim Start selbst. Sie enthält ausschliesslich die Produkte des Anbieter, der gewählt wurde. Da dies bei jedem Aufruf der WebApp und bei jedem Wechsel des Anbieters geschieht sind die Daten immer tagesaktuell. Statische Elemente, beispielsweise Grafiken, CSS Dateien und die JavaScript Bibliotheken werden im Cache des Smartphones abgelegt. Auf diese Art müssen bei einem normalen Start der WebApp, oder dem Wechsel des Anbieters, nur wenige Kilobyte übertragen werden.

Fügt der Kunde seiner Bestellübersicht ein Produkt hinzu, wird eine eindeutige, numerische ID zur Verarbeitung und Speicherung an den Web-Server übertragen. Der dabei entstehende Upload Traffic beläuft sich auf wenige Bytes.

Dynamische Teile, beispielsweise die Übersicht über die vom Kunden ausgewählten Produkte, werden ebenfalls auf dem Server generiert und dann von der App nachgeladen. Da die übertragene Datenmenge auch in diesem Fall sehr klein ist, geschieht dies schnell genug um beim Nutzer die Illusion einer nativen App aufrecht zu erhalten.

Die Sicherheit des Gesamtsystems, speziell der Datenbank, wird durch diesen Ansatz deutlich erhöht. Das Smartphone muss keine Verbindung zur Datenbank herstellen, da alle Anfragen durch einen PHP Wrapper geleitet werden. Das heißt, die Datenbank muss aus dem Internet nicht erreichbar sein, kann also nicht direkt angegriffen werden. In der App müssen keinerlei Verbindungsdaten hinterlegt werden.