Simple App mit Datenbank programmieren?

Samuele987  23.05.2022, 15:59

Ich bin gerade verwirrt. Meint ihr eine richtige Gemeinde fuer ein richtigen Dorf? Oder wie genau soll ich das verstehen?

VybsGF 
Fragesteller
 23.05.2022, 17:08

Ja, richtig. Während der Corona-Pandemie hat unsere Gemeinde einen Outdoor Parkour erstellt, für welchen wir nun eine App erstellen sollen

3 Antworten

Ich arbeite viel mit C#, daher würde ich auch da suchen.
Bei Java gibt's sicher auch einige Möglichkeiten, aber da habe ich keinen Überblick.

Frage 1:

Altbekannt, aber eben auch alt, ist Xamarin.
Der Nachfolger wäre MAUI, aber das ist noch recht neu und nach meinem letzten Stand noch nicht offiziell released, kann aber trotzdem genutzt werden.

Beides läuft auf iOS, Android und Windows-Phone. MAUI läuft auch auf Desktops, Xamarin dagegen nur über den Umweg mit UWP (=tod).
Ich habe mit beidem leider kaum Erfahrung, nur Xamarin hat den Ruf, hier und da etwas zickig zu sein, aber nichts, was man nicht in den Griff bekommt.

Alternativ kannst Du auch eine Web-App entwickeln, wenn Ihr mehr Erfahrung damit habt (Mobile ist nicht leicht), wäre das vermutlich der klügere Weg. Hier bietet sich dann ASP.NET Core an.

Oder Du schaust dich auf dem Markt um, was es noch so alles (nicht von Microsoft) gibt, aber da habe ich keinen Überblick.

Für native Apps und keinen Zeitdruck habe, würde ich auf MAUI setzen.
Wenn es Zeitdruck gibt und Stabilität wichtig ist, würde ich Xamarin oder ASP.NET Core wählen.

Frage 2:

Du willst Daten speichern, also brauchst Du natürlich irgendwas zum speichern ;)
Das könnte (sollte?) eine Datenbank sein, für mobile Geräte bietet sich da SQLite an.
Wenn die Daten auch auf anderen Apps verfügbar sein sollen (Bestenliste klingt danach), dann brauchst Du zwingend einen Web-Server oder Du bastelst ein Feature, dass die Geräte sich untereinander die Daten austauschen können.
Wenn Du eine Web-App entwickelst, wird das natürlich einfacher, während sowas wie das Austauschen der Daten zwischen den Geräten schwieriger wird.

Für den Web-Server bietet sich auch ASP.NET Core an, ist meines Wissens nach das einzige aktuelle und ernstzunehmende Framework im .NET Bereich, was aber kein Problem ist, im Gegenteil: Es ist verdammt gut und das große Aushängeschild für .NET.
Das schöne ist auch, dass mit ASP.NET Core eine simple REST-API in unter einer Stunde aufgebaut ist - vorausgesetzt, Du weißt, was Du tust.

Oder Du machst es einstellbar.
Ist die Online-Funktion aktiv oder ein Server konfiguriert, arbeitet die App gegen den Web-Server, andernfalls mit einer lokalen DB. Mit der richtigen Architektur (z.B. CQRS und Mediator) lässt sich das auch hervorragend umsetzen, so eine Architektur ist aber nicht unbedingt einfach ;)

=============

ASP.NET Core und MAUI bauen aber auch Konzepte auf, die unter Umständen nicht ganz einfach zu verstehen sind. Im Rahmen der Doku zu ASP.NET Core werden die Konzepte zumindest oberflächlich erklärt, Du solltest dir definitiv die Zeit nehmen, um sie wirklich zu verstehen und (noch wichtiger) zu verstehen, *warum* diese Konzepte so sind, wie sie sind.

Einmal begriffen macht das aber vieles einfacher und ich würde niemals freiwillig darauf verzichten wollen.

Woher ich das weiß:Berufserfahrung
VybsGF 
Fragesteller
 23.05.2022, 17:54

Vielen Dank für die ganzen Tipps und Infos, dass werde ich mir mal alles anschauen. Nur eine Frage hätte ich da: Was genau sind Web-Apps bzw. ist es möglich diese dann im Playstore zu downloaden?
Ich habe auch gehört, dass man eine HTML Seite erstellen kann und diese dann zu einer App konvertiert (mit HTML hätte ich halt schon Erfahrung). Sagt dir diese Methode etwas oder weißt du zufällig, wie gut so was funktioniert?

0
Palladin007  23.05.2022, 19:52
@VybsGF

Mit Web-App meine ich eine ganz normale Website, die Du im Browser auf machst.

Du kannst natürlich auch eine kleine Mini-App entwickeln, die dann nur die Website anzeigt und vorher ein paar Dinge einstellt (z.B. Account) - wird meines Wissens nach auch gemacht.

Ob man eine Website als App konvertieren kann, weiß ich nicht, aber ich bezweifle es. Es gibt aber diverse Tools im Web-Bereich, die viele Dinge ermöglichen (PWA), allerdings habe ich damit auch keine Erfahrung.
Oder Du entwickelst eine Website und hostest dann die komplette Website in der App, dann hättest Du eine Website (und entsprechendes KnowHow), allerdings auch ein ziemliches Monstrum - und ich weiß nicht, wie gut das auf den Geräten läuft.

Warum muss es denn eine App sein?
Ist das gefordert, gibt es konkrete Gründe dafür?
Kannst Du vielleicht etwas Anderes empfehlen?

Außerdem:

Vorhandene Erfahrung mit HTML ist natürlich schön und gut, aber ich denke, dass dir das bei der hauptsächlichen Arbeit nur wenig hilft. HTML (und hoffentlich CSS) sind eben nur ein kleiner und im Verhältnis ziemlich einfacher Teil, aber dann hast Du noch keine Logik, brauchst ggf. JavaScript, eine Datenbank und natürlich musst Du den Umgang mit verwendeten Frameworks lernen.

Hättest Du geschrieben, Du hast schon Erfahrung mit ein paar laufenden Websites unter ASP.NET Core sähe das anders aus, aber so hilft dir das denke ich nur wenig.
Mobile-Entwicklung mag schwer sein, Web-Entwicklung aber auch ;)

0
VybsGF 
Fragesteller
 23.05.2022, 20:16
@Palladin007

Achso, danke.
Ja, es sollte schon eine App sein, damit die Nutzer des Parkour (während sie diesen in unserem Dorf ablaufen), ohne Internet, die einzelnen Stationen in einer App tracken können, also ihre Zeiten/Punkte messen können

0
Palladin007  23.05.2022, 20:18
@VybsGF

Das gibt's meine ich mit PWAs, aber wie gesagt: Damit habe ich keine Erfahrung

Oder Du trennst App und Server, dann geht's natürlich auch.

0

Hallo VybsGF,

vorweg erstmal, ich bin kein APP Entwickler sondern im Destkopbereich tätig und habe eher am Rande mal was damit zutun gehabt. Aber dennoch kann ich euch ja eventuell ein paar Tipps geben, auch wenn ich nicht sagen kann welches das beste Framework ist.

Zu 1: Ersteinmal solltet ihr euch überlegen in welcher Programmiersprache ihr schon Erfahrungen habt oder worauf ihr am meisten Bock habt. Es gibt echt zich Frameworks die das leisten was ihr braucht.. Wenn Ihr z.B. schon Weberfahrung mit HTML oder Javascript habt, dann würde ich auch ein Framework nehmen dass damit arbeitet. (Z.B. ReactNative, Ionic...)

Ich selbst arbeite viel mit C# und mag die Syntax davon sehr deshalb würde ich wahrscheinlich Xamarin nehmen (Natürlich je nach Anwendungsfall). Falls ihr Erfahrung mit Java habt ist das bestimmt auch eine Idee.

Hier noch zwei Links:

https://www.dev-insider.de/cross-platform-entwicklung-fuer-android-und-ios-a-1003763/

https://hackernoon.com/9-popular-cross-platform-tools-for-app-development-in-2019-53765004761b

Zu 2: Hierfür würde es vollkommen reichen einfach einen simplen Webserver dafür zu mieten oder einen kostenlosen Anbieter zu nutzen.

Dann könnt ihr z.B. in C#, Python, PHP... ,was auch immer ihr bevorzugt, eine kleine Rest-API bauen, die alle möglichen Statistischen Daten wie z.B. die Zeiten zu den einzelnen Etappen in die Datenbank schreibt und auf Anfrage diese Daten auch zurückgeben kann (Entweder direkt als Bestenliste oder halt auch einzelne Stats, nur für die Person, die die App nutzt und sehen will wie sie eine bestimmte Etappe abgeschnitten hat oder auch falls die Person die Challenge mehrfach ablegen kann, die Verbesserung zum letzten lauf ausgeben kann etc.).

Hört sich ersteinmal kompliziert an, aber um euch ein Bild zu verschaffen, wie einfach das sein kann hier mal eins zwei Beispiele:

In PHP:

https://www.php-einfach.de/2021/04/einfache-rest-api-mittels-php/

https://code.tutsplus.com/tutorials/how-to-build-a-simple-rest-api-in-php--cms-37000

In C#

https://docs.microsoft.com/de-de/aspnet/core/tutorials/first-web-api?view=aspnetcore-6.0&tabs=visual-studio

Aber auch hierfür gibt es Frameworks, die ihr nutzen könntet und eventuell etwas mehr Datensicherheit bringen als eine Eigenentwicklung from Scratch. Einfach PHP/C#/... REST Framework googeln ;)

Ich hoffe ich konnte euch vielleicht ein paar Anhaltspunkte geben um eine weitere Recherche diesbezüglich zu erleichtern. Bei Allem weiteren, z.B. wie die Datenbank gestaltet sein sollte etc. solltet ihr erstmal anfangen und dann genauere Fragen dazu stellen. Dann kann man euch hierbei bestimmt auch helfen ;)

LG und viel Erfolg! Ist ein ganz cooles und überschaubares Projekt.

Woher ich das weiß:Berufserfahrung – DevOps C# Entwicklung
Palladin007  23.05.2022, 17:06

Warum denn bitte PHP für die REST-API?
Das ergibt doch 0 Sinn?

Wenn C#, dann auch den Server mit ASP.NET Core.

1
DonQuijotte972  23.05.2022, 17:24
@Palladin007

Stimme dir da vollkommen zu ;) ... Ich persönlich würde da auch komplett auf C# setzen.

ABER :D

  1. Es ist ja eigentlich egal in welcher Sprache das Backend geschrieben wird, ob php, c#, python... solange die Schnittstelle kompatibel ist und das ist es per REST auf jedenfall
  2. Man findet kaum bis gar keine hoster, die dir eine ASP.NET Seite kostenlos hosten und dafür zich tausend Anbieter die dir simple APACHE Server mit PHP unterstützung bieten. Und bei Bezahltem Hosting kommt man damit meist auch günstiger Weg und für diese wirklich simple Anwendung reicht das vollkommen auch wenn PHP nicht das non plus ultra ist.
  3. Die meisten Leute (die ich kenne), die mit dem programmieren anfangen, fangen mit der WEB-Entwicklung an oder hatten schon mal in der Schule damit Kontakt. Deshalb liegt da PHP sehr nahe, da doch sehr viele damit was auf ihrer Webseite machen.
  4. Ich wollte den Fragesteller nicht gleich komplett in die C# Welt drücken, sondern ein offeneres Beispiel geben. Vielleicht hätte ich das ein bisschen anders ausdrücken sollen. Da er nicht geschrieben hatte, was so seine Kentnisse sind habe ich deshalb verschiedene Beispiele für verschiedene Sprachen gegeben.

Womit er jetzt eine REST Schnittstelle umsetzt ist ja egal. Es ging mir dabei safe nicht um PHP (Das ist auch wirklich nicht meine Steckenpferd)

0
Palladin007  23.05.2022, 19:40
@DonQuijotte972
Womit er jetzt eine REST Schnittstelle umsetzt ist ja egal. Es ging mir dabei safe nicht um PHP (Das ist auch wirklich nicht meine Steckenpferd)

Dann beziehe meine Antwort(en) nicht auf PHP, sondern auf deine Argumentation an sich ;)

Es ist ja eigentlich egal in welcher Sprache das Backend geschrieben wird, ob php, c#, python... solange die Schnittstelle kompatibel ist und das ist es per REST auf jedenfall

Stimmt - ein Argument *gegen* ASP.NET ist es aber nicht.

Es heißt zwar immer, dass man die Sprache wählen soll, die am besten geeignet ist, aber man sollte deshalb nicht mehrere Sprachen verwenden, nur weil es geht.

Grob über den Daumen gepeilt sehe ich nur vier Gründe, warum man Sprachen mischen sollte:

  • Kunde will es - warum auch immer
  • Technische Gründe - z.B. wenn man C++ braucht, aber nicht ganz auf C++ setzen kann/möchte
  • KnowHow Gründe - z.B. wenn man ein C#- und ein PHP-Team hat, das C#-Team entwickelt den Client, das PHP-Team den Server
  • Kompatibilität - z.B. wenn man externe Komponenten hat, die in PHP entwickelt wurden und zu komplex sind, sie neu zu entwickeln

Hier trifft aber keiner dieser Gründe zu.

Man findet kaum bis gar keine hoster, die dir eine ASP.NET Seite kostenlos hosten

Microsoft Azure und jeder Hoster, der Windows oder Linux hosten kann? ;)

Außerdem soll (ist nicht meine Erfahrung) Azure auch für Dienste, die im kleinen Rahmen verwaltet werden, eine durchaus lohnenswerte Sache sein - z.B. das Forum mycsharp.de läuft darauf und der Admin/Entwickler hat darüber erzählt.
Vielleicht ist es nicht die bis zum letzten Cent günstigste Option (habe ich nicht nachgeschaut), aber es kann definitiv sehr viel Arbeit (=Zeit =Geld) sparen.

Die meisten Leute (die ich kenne), die mit dem programmieren anfangen, fangen mit der WEB-Entwicklung an oder hatten schon mal in der Schule damit Kontakt. Deshalb liegt da PHP sehr nahe, da doch sehr viele damit was auf ihrer Webseite machen.

Ausgehend davon, dass der Client mit Xamarin oder MAUI entwickelt wird, müssen sie doch sowieso C# und entsprechende Frameworks lernen, also willst Du (mutmaßlichen) Anfängern direkt zwei komplexe Sprachen + entsprechende Frameworks (und im Fall von PHP extrem verschiedenen Paradigmen) empfehlen?

Außerdem ist das hier kein Hobby-Projekt, sondern soll - wie ich es verstanden habe - im durchaus relevant großen Stil (Gemeinde) betrieben werden, dann sollte es mMn. auch eine gewisse Professionalität an den Tag legen können.
Professionalität ist natürlich eine schwierig zu greifende Sache, aber sie hängt in erster Linie von Erfahrung ab und die ist zwangsläufig bei C# gegeben - warum also diesen Vorteil aufgeben?

Wenn der Client ein Web-Client ist, sieht das natürlich anders aus, wobei ich da aber auch auf ASP.NET setzen würde, das ist in vielen einfach sehr klug - und ich finde PHP einfach nur grausig.

Ich wollte den Fragesteller nicht gleich komplett in die C# Welt drücken, sondern ein offeneres Beispiel geben. Vielleicht hätte ich das ein bisschen anders ausdrücken sollen. Da er nicht geschrieben hatte, was so seine Kentnisse sind habe ich deshalb verschiedene Beispiele für verschiedene Sprachen gegeben.

Ich sehe da kein Problem, jemanden komplett in die C# Welt zu drücken, wird umgekehrt bei Java ja auch gemacht und genau dafür wurden diese beiden Sprachen ja auch entwickelt: Sie sind Allrounder

Gerade für einen Anfänger ist das ein riesiger Vorteil, da es den Lern-Aufwand deutlich reduziert und Erfahrungswerte "mit genommen" werden können.

0
DonQuijotte972  24.05.2022, 09:17
@Palladin007

Hey Paladin,
ich denke du hast einfach meine Antwort nicht richtig gelesen und mich deshalb falsch verstanden.

Ich habe dem Fragesteller empfohlen ReactNative, Ionic und andere Web/App Frontend-Frameworks zu nutzen. Diese Frameworks sind wirklich nur für die Frontendentwicklung gedacht und hier ist es durchaus Gang und Gebe, dass man eine andere Sprache als Webservice auf der Serverside nutzt. Vorallem durch die leichte Integration in vorhandene Webseiteprojekte mit HTML und Javascript bietet sich PHP hier deutlich mehr an als ASP.NET. PHP ist zwar langsam ein bisschen in die Jahre gekommen, aber als Einsteigersprache immer noch sehr beliebt. Deshalb auch meine Vermutung, dass die beiden eventuell schon HTML, Javascript und eventuell PHP Erfahrungen haben.

Generell gibt es bei der Webentwicklung abseits von .Net sehr viele inhomogene Umgebungen, da man hier strikt zwischen Frontend und Backendsprachen unterscheiden muss.

Dass der Client in Xamarin programmiert werden soll, hast du erst nach meiner Antwort so gesagt. In diesem Fall stimme ich dir wie schon gesagt zu 100% zu. Hierbei würde es absolut keinen Sinn machen noch eine andere Backendsprache wie PHP hinzuzunehmen und würde die Sache nur verkomplizieren. Von diesem Standpunkt aus gesehen würde ich dir vollkommen zupflichten, dass PHP fürs Backend nicht mehr als ein schlechter Scherz wäre.

Ich gehe allerdings immer noch nicht davon aus, dass dieses Projekt als wirklich professionelles Projekt umgesetzt werden soll. Es hört sich für mich eher so an als wären die beiden angesprochen worden, da sie sich gut mit PC auskennen und es ein cooles Gimmig wäre, wenn man hier die Zeiten möglichst professionell umsetzt. Das ist ein großer Unterschied.

...

0
DonQuijotte972  24.05.2022, 09:22
@DonQuijotte972

Von einer professionellen Umsetzung vorallem mit Vertrieb der APP würde ich mit dem Vorwissen der beiden Fragsteller abraten! Da man hierfür doch schon einiges an Erfahrung benötigt. Erstrecht in Hinsicht des Datenschutzes.

Und bei solchen Fragen muss man finde ich immer unterscheiden ob der Fragsteller jemand ist der einfach dafür brennt zu programmieren und dieses explizit lernen will oder ob er einfach ein Projekt auf die Beine stellen will. Deshalb spielt das Vorwissen hierbei eine erhebliche Rolle und es würde keinen Sinn machen, dass Sie wenn sie in der Webentwicklung schon Ahnung haben so einen komplexen Allrounder wie C# von Grund auf lernen müssen. Denn dann kann es echt lange dauern bis sie ihr Projekt auf die Beine gestellt haben.

Meinen Azubis, die gerade C# lernen, würde ich definitiv auch dazu raten C# zu benutzen, allerdings könnte ich hierbei zu Lernzwecken natürlich auch verlangen eine komplett neue Sprache zu lernen. Das würde ich allerdings bei einem Praktikanten wohl eher nicht von ihm verlangen.

0
VybsGF 
Fragesteller
 23.05.2022, 18:01

Vielen Dank für die ausführliche Antwort. Ich denke, ich schaue mir mal die ganzen Optionen an und suche das Beste (für mich) raus.
Auch dir möchte ich noch eine Frage stellen (Wurde ebenfalls Palladin007 gestellt): Ich habe gehört, dass man eine HTML Seite erstellen und diese dann zu einer App konvertieren kann (mit HTML hätte ich halt schon Erfahrung). Sagt dir diese Methode etwas oder weißt du zufällig, wie gut so was funktioniert?

0
DonQuijotte972  24.05.2022, 09:40
@VybsGF

Hallo VybsGF,
das stimmt das geht auf jedenfall:

website zu app konvertieren - Google Suche

Für das Frontend könnt ihr das um Zeit zu sparen auch auf so machen, allerdings denke ich, dass die Funktionalitäten damit ein bisschen begrenzt sein könnten und ihr dann im Nachgang vielleicht mehr Zeit reinstecken müsst, als wenn ihr direkt von Anfang an euch mit Frameworks wie z.B: Ionic beschäftigt. Hier kommt ihr mit dem Vorwissen von HTML schon ein bisschen weiter . HTML ist nur leider keine Sprache mit der ihr Logik abbilden könnt, deshalb müsst ihr so oder so etwas neues lernen. Beschäftigt euch mal mit dem Link, den ich euch geschickt habe. Da werden verschiedene Frameworks vorgestellt und die Vor-/Nachteile erörtert. Da ihr eh eine neue Sprache lernen müsstet, könnt ihr ja einfach mal in C# oder auch Javascript reinschnuppern und dann Entscheiden was ihr nehmt.

Gerne könnt ihr nachdem ihr euch für die passende Programmiersprache entschieden habt auch nochmal nach Hilfe fragen, dann kann man zusammen ein grobes Konzept auf die Beine stellen ;)

1
VybsGF 
Fragesteller
 24.05.2022, 12:59
@DonQuijotte972

Vielen Dank, wir gehen das mal an und melden uns falls nötig :)

0

Ich habe schon mit Flutter gearbeitet. Man kann damit sehr schnell und schöne Apps bauen, auf allen Plattformen (Mobile, Web, Desktop) läuft. Für eure Idee wird Flutter eine sehr gute Wahl sein.

Da ich sonst nur wenige Android Apps mit Kotlin entwickelt habe, kann ich nicht sagen, ob es noch bessere Optionen gibt.

Für das Kompilieren von iOS Apps braucht man unbedingt ein Mac bzw. das Betriebssystem MacOS. Xcode ist ein erforderliches Tool, welches es eben nur unter MacOS gibt.

Für das Verteilen der Apps unter iOS braucht man auch zwingend ein Apple Entwicklerkonto für 99$ pro Jahr. Ein einfaches Verteilen per APK wie unter Android ist nicht möglich.

Ein Entwicklerkonto bei Google kostet einmalig 25$, womit man Apps in den Google Play Store hochladen kann. Durch ein manuelles verteilen der APK, wäre es nicht zwingend erforderlich.

Da die Daten am Ende zentral abgespeichert werden sollen und jeder die Daten einsehen können sollen, wird ein Server nötig sein. Eine Datenbank zum Speichern der Daten ist eine gute Wahl.

Ich würde die Bestenliste mit einem Java Spring Server machen. Damit lässt sich sehr leichte eine REST API mit Datenbank Anbindung umsetzen. Man braucht nicht unbedingt Kenntnisse in SQL, wobei das Wissen, wie z.B. eine relationale Datenbank funktioniert, vom starken Vorteil ist.

VybsGF 
Fragesteller
 24.05.2022, 13:00

Vielen Dank, das hört sich ziemlich gut an. Das probieren wir mal aus.

0