Welche Programmiersprachen brauche ich?

2 Antworten

Wenn es so wenig Sprachen wie möglich sein sollen, dann kannst du alles in Javascript machen. Javascript im Backend (NodeJS) und im Frontend (ReactNative). Das ist ein Framework mit dem man nur eine Codebasis braucht und für Android und iOS ausspielen kann.

Eine andere Kombination wäre z.B. Python im Backend, wenn du gut damit zurechtkommst, und Flutter für die App. Flutter hat auch nur eine Codebasis für alle Plattformen und man kommt damit schneller zum Ziel.

Da hast Du dir gleich eine der schwierigeren Vorhaben ausgesucht, das wird für einen Anfänger sehr herausfordernd ;)

Ich bin fit was C# und .NET angeht, daher beziehe ich mich darauf, es gibt sicher aber auch andere Cross-Plattform-Technologien, doch da kenne ich mich nicht aus. Oder als Alternative: Du entwickelst zwei Apps, eine für iOS und eine für Android, ist natürlich nicht cool, aber damit hast Du die meisten Möglichkeiten.

Wenn Du nicht doppelt entwickeln willst, sehe ich im .NET-Umfeld zwei Optionen:

MAUI oder Web-App.

MAUI ist der Nachfolger von Xamarin, es kommt eine App raus und läuft auf Android, iOS, Windows, Tizen, Mac, aber leider kein Linux. Du kannst das MAUi-eigene UI-Framework nutzen, das ist flexibel, aber noch nicht sehr ausgereift, oder Du arbeitest mit Blazor (heißt dann MAUI Hybrid), das ist bedeutend stabiler. Zwei verschiedene Technologien auf der selben MAUI-Basis, ich rate zu Blazor.
MAUI hat leider immer noch einige Kinderkrankheiten, für eine plattformunabhängige Mobile-App im .NET-Umfeld meines Wissens nach aber aktuell die beste Option und mit einem Blazor-Frontend (MAUI Hybdrid) hat man mit den MAUI-Kinderkrankheiten nur wenig zu tun.
Alternativ kenne ich noch Avalonia, dass läuft meine ich auch auf Mobile und mit Blazor, aber noch nicht sehr gut optimiert.

Eine Web-App läuft im Browser, nicht als eigenständige App, Du kannst aber auch eine PWA entwickeln. In beiden Fällen arbeitest Du mit Blazor und brauchst zwingend einen Web-Server dahinter.

Du siehst: Gemeinsame Technologie ist Blazor, daher rate ich auch zu Blazor - und ich mag Blazor ^^

Du kannst auch beides kombinieren, gemeinsam genutzten Blazor-Code, der dann für die Web-App oder für MAUI Hybrid genutzt wird. Auf diese Weise hast Du die größte Flexibilität, außerdem ist die Web-App einfacher zu debuggen, allerdings birgt MAUI Hybrid mehr Fehlerpotential, Du solltest also regelmäßig als App testen.
Die Web-App braucht dann natürlich einen Web-Server im Hintergrund, MAUI Hybrid braucht keinen Web-Server, kann aber natürlich trotzdem einen nutzen.

Blazor kann auf verschiedene Arten arbeiten. In der Web-App stellt Blazor sowohl das Frontend, als auch das Backend dar, Du brauchst dich also nicht um die Kommunikation dazwischen kümmern, das macht Blazor automatisch. Wenn Du Blazor WebAssembly (für eine PWA zwingend notwendig) nutzen möchtest, dann fällt das weg, und Du brauchst ein separates Backend, sowie die Kommunikation zwischen Frontend und Backend.
Für die meisten Mobile-Apps brauchst Du aber so oder so ein Backend auf einem Server, also kannst Du das auch direkt mit einplanen.

Du brauchst also:

  • C# für Backend und Frontend
  • HTML/CSS für das Frontend
  • Ganz wenig XAML für MAUI Hybdrid
  • JavaScript ist nicht nötig, aber nützlich, wenn Du z.B. Animationen willst

Und als Frameworks:

Wenn Du eine MAUI-App entwickeln möchtest, brauchst Du MAUI Hybrid, Blazor und ein ASP.NET Core Backend.
Wenn Du eine klassische Web-App entwickeln möchtest, brauchst Du nur Blazor und keinen separaten ASP.NET Core Server, da Blazor das automatisch übernimmt.
Wenn Du eine WebAssembly Web-App entwickeln möchtest, brauchst Du Blazor und ein ASP.NET Core Backend.

Zusätzlich hilfreich:

  • Microsoft.Extensions.*** (Configuration/DependencyInjection/Logging/Options/Hosting), das ist aber alles in ASP.NET Core (also auch Blazor) inkludiert.
  • ggf. ein eigenes Logging-Framework, ich bin ein Serilog-Fan
  • Wenn Du eine eigene Kommunikation zwischen Frontend und Backend brauchst, dann hilft dir Refit, oder Du baust auf gRPC.
  • Wenn Du eine MAUI-App entwickeln möchtest, brauchst Du natürlich MAUI, das XAML von MAUI brauchst Du aber fast gar nicht.
  • Entity Framework Core für die Datenbank, oder für High-Performance-Anforderungen Dapper, ggf. kombinierst Du auch beides: Entity Framework Core für Datenbank-Updates und Dapper für lesenden zugriff
  • ggf. MediatR oder Mediator.SourceGenerator (wie MediatR, nur als SourceGenerator), wenn Du eine CQS oder CQRS Architektur aufbauen willst
  • Wenn Du eine offene Web-API anbieten willst, ist eine OpenAPI-Definition sehr gerne gesehen, für ASP.NET Core kannst Du das mit Swashbuckle machen.
  • Wenn Du ein Mapper-Framework nutzen willst: AutoMapper (krass over engineered, aber beliebt), oder andere Mapping-Frameworks wie Mapster oder Mapperly
  • Wenn Du ein Validation-Framework nutzen willst: FluentValidation, ebenfalls krass over engineered, aber auch weit verbreitet und meines Wissens nach aktuell ziemlich alleine auf dem Markt
  • Microsoft.AspNetCore.Identity, ist nicht nötig, hilft aber ggf. bei Verwaltung von Benutzerdaten und Logins.
Woher ich das weiß:Berufserfahrung – C#.NET Senior Softwareentwickler