66 lines
2.1 KiB
Markdown
66 lines
2.1 KiB
Markdown
|
#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 des `mateamt`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
|