2.1 KiB
2.1 KiB
#Modernes Web-Development in Haskell am Beispiel des Projektes mateamt
##Webentwicklung
- Typischerweise unterteilt in Frontend und Backend
- Typische Sprachen Backend:
- PHP
- Java
- Ruby
- Python
- Frontendentwicklung geschieht in:
- HTML
- CSS
- JavaScript
- Häufige Bibliotheken im Frontend:
- React
- Bootstrap
- jQuery
##Haskell
- Rein funktionale Programmiersprache
- Nicht-strikt evaluiert
- Stark statisch typisiert
- Volle Typinferenz
- Typische Einsatzgebiete:
- Big Data
- Banken- und Finanzsektor
- Wissenschaft (Simulationen, Hochparallele Berechnungen)
- Theoretisch: Überall, da Turing-Vollständig
###Hauptunterschiede zur imperativen Programmierung
- Vermeidung bzw. klare Trennung von Seiteneffekten (Disk IO, DB, Netzwerk, etc.)
- Unveränderliche Variablen
- Keine Schleifen
- Kein State
##Vorteile von Haskell in der Webentwicklung
- Serialisierung und Deserialisierung von Daten meist unkompliziert, da stark typisiert
- Datenverarbeitung kann einfach auf Korrektheit geprüft werden
- Webanwendungen sind i.d.R. stateless, Haskell auch
- Haskell kann sehr gut mit konkurrenten Berechnungen umgehen, welche bei Webanwendungen häufig auftreten
##Konventionen beim mateamt
und Unterschiede vom yammat
- Programmiert ist es (wieder) in Haskell
- Grundsätzlich ist das
mateamt
'nur' ein Backend - Microservice-Architektur (Im Gegensatz zum monolithischen
yammat
) ermöglicht klarere Trennung zwischen Daten- und Kundenseite (Separation of Concerns) - Es wird ein modifiziertes MVC-Architekturmodell verwendet:
- 'View' ist ausgelassen, da keine Anzeige erfolgt
- Vorteil ist auch hier eine Domänentrennung zwischen Datenbank und Controller.
- Kommunikation mit Frontend(s) läuft über eine definierte JSON-REST-API
##Das Frontend des mateamt
es
- Zukünftige Benutzer das
mateamt
es sind ausdrücklich eingeladen eigene Clients/Frontends für die API desmateamt
es in einer Sprache ihrer Wahl zu implementieren. - Zur Unterstützung der Entwicklung eigener Clients/Frontends werden angeboten:
- OpenAPI 3.0 beschreibung der API
- Swagger UI
- Ein Referenzclient (der
matebeamte
) ist bereits in Arbeit