# App Datenbank Server



## michael1548 (17. Apr 2019)

Hallo
Ich darf für ein Projekt eine App mit Java Programmieren aber bei einer Frage finde ich Internet keine zufriedenstellende Antwort.
Ich will eine App programmieren die Verschiedene Veranstaltungen, Feste und Feiern in der Umgebung anzeigt.
Sie soll für das erste so einfach wie möglich gehalten sein, ein Schema das das Fest, den Ort und die Zeit angibt. Fürs erste beschränkt das nur Ich neue Veranstaltungen erstellen kann, später vl das jeder der sich die App downloadet sich anmelden kann um eigene Sachen einzutragen.
Meine Frage, wenn die App auf dem Handys der Nutzer startet muss die App ja beim Server nachfragen ob ich da etwas neues eingetragen habe und die Daten aktualisieren. Was genau kann ich da verwenden? Ist die Google App Engine so etwas in der Art oder ein Server Hoster für 10 Euro im Monat?
Im Besten fall hoffe ich schon das ich so um die 500 Nutzer haben werde.

Danke
mfg
Michael


----------



## mihe7 (17. Apr 2019)

Wenn Du's ganz einfach gestrickt haben willst, bietest Du eine Datei auf einem gewöhnlichen Webserver zum "Download" an. Die App holt sich die Datei und tada - Thema erledigt. Wenn Du mehrere Orte hast, könntest Du für jeden Ort bzw. jede Region eine solche Datei anlegen.


----------



## Samofan (18. Apr 2019)

Ich bin in der App Programmierung nicht so drin aber ich könnte mir vorstellen, dass Du eine XML Datei mit allen Terminen in deinem Verzeichnis liegen hast. Diese Datei hast Du ebenfalls auf einem Server liegen. Beim starten der App prüfst Du die Internetverbindung. Wenn Du eine Internetverbindung hast, kannst Du die Datei vom Server auf Unterschiede prüfen. Falls Unterschiede bestehen einfach die XML Datei in deinem Dateisystem aktualisieren. Falls Du keine Internetverbindung hast, kannst Du den "alten" Stand weiter benutzen und die App ist ohne Internet nicht unbrauchbar. Also ähnlich wie das von @mihe7


----------



## mihe7 (18. Apr 2019)

Ja, das wäre eine Erweiterung davon bzgl. Aktualisierungen. Hierfür gäbe es zig Möglichkeiten.

Eine in meinen Augen einfache und relativ mächtige Variante bestünde darin, die Dateien mit einer Versionsnummer zu versehen, wobei jede Version angibt, was sich seit der vorherigen geändert hat. Dazu noch eine Metadaten-Datei, die die letzte verfügbare Versionsnummer enthält.

Mal als Beispiel (als Format nehme ich fiktiv JSON an).

2019/dukeheim/parties.json

```
{"current":1}
```

Dem entsprechend existiert nur eine Verison, nämlich 2019/dukeheim/parties1.json:

```
{"new":[
  {"uuid": "ba83c95e-7a37-4f99-8a0c-67cd9fbb2d1e", "title": "Java Release Party", "location":"Ratskeller Dukedorf", "start":"2019-01-01T20:00:00+01:00"},
  {"uuid":"21042bb8-b9a8-494f-a26e-40d8e2d8dd0f","title":"JUG Treffen","location":"Stadthalle Dukeheim","start":"2019-05-01T19:00:00+02:00","end":"2019-05-02T01:00:00+02:00"}
]
}
```
Mit Version 1 werden also zwei neue Parties bekanntgegeben.

Jetzt wird die Java Release Party abgesagt, das JUG-Treffen verschoben und ein zusätzliches Sommerfest findet statt. Damit gibt es eine neue Version, womit sich 2019/dukeheim/parties.json ändert zu

```
{"current":2}
```

Die Änderungen werden in 2019/dukeheim/parties2.json dargestellt:

```
{"cancel":[
  {"uuid":"ba83c95e-7a37-4f99-8a0c-67cd9fbb2d1e", "reason":"Zu wenig Anmeldungen"}
],
 "update":[
    {"uuid":"21042bb8-b9a8-494f-a26e-40d8e2d8dd0f","title":"JUG Treffen","location":"Stadthalle Dukeheim","start":"2019-05-08T19:00:00+02:00","end":"2019-05-09T01:00:00+02:00"}
 ],
"new":[
    {"uuid":"e3360738-89e3-4ca8-b53a-b7a885f7c80a","title":"Sommerfest der Java School","location":"Turnhalle Java School","start":"2019-07-01T12:00:00+02:00","end":"2019-07-01T20:00:00+02:00"}
]
}
```

Die App ruft dann erst die parties.json ab, vergleich die Versionsnummern und lädt alle fehlenden Versionen herunter. Ferdsch.


----------



## Samofan (18. Apr 2019)

@mihe7 Also würdest Du zu JSON anstatt XML greifen um Daten auf dem Server zu speichern und zwischen Client und Server zu tauschen?


----------



## mihe7 (18. Apr 2019)

Das kann man pauschal nicht sagen, aber in so einem Fall und gerade im Zusammenhang mit mobilen Anwendungen: ja. JSON ist nicht ganz so geschwätzig wie XML und lässt sich schon deshalb schneller laden und verarbeiten.


----------

