Servant ist ein Webframework , das auf der funktionalen Programmiersprache Haskell basiert und besonderen Wert auf Datensicherheit legt . [ 2 ] [ 3 ] [ 4 ] [ 5 ] Es handelt sich um freie und Open-Source-Software, die unter einer BSD-3-Klausel-Lizenz veröffentlicht wird .

Überblick

Servant bietet eine domänenspezifische Sprache (DSL) auf Typenebene zur Beschreibung von Anwendungsprogrammierschnittstellen ( Web-APIs ) des World Wide Web ; verschiedene Interpretationen solcher Beschreibungen sind möglich: als Server , der Anfragen an Handler weiterleitet; als Dokumentation und Schemaspezifikationen für die API; und als Clientbibliotheken in verschiedenen Sprachen. [ 6 ]

Der typenbasierte Ansatz von Servant löst das Ausdrucksproblem , indem er die Erweiterbarkeit entlang der Daten- und Verhaltensdimensionen ermöglicht. [ 6 ] Neue Kombinatoren oder Terme in der domänenspezifischen Sprache (DSL) lassen sich modular einführen, ebenso wie neue Interpretationen derselben, und zwar als vollständig separate Pakete. Bis 2023 wurden weit über 100 Pakete im Zusammenhang mit Servant im Haskell-Paket-Repository veröffentlicht. [ 7 ]

Verwenden

Es wird von Unternehmen wie GitHub , [ 8 ] NoRedInk , [ 9 ] Klarna , [ 10 ] Input Output Global Inc. (im Cardano -Projekt), [ 11 ] und Wire [ 12 ] produktiv eingesetzt .

Siehe auch

Referenzen

  1. ^ „Servant-Lizenz“ . GitHub . Abgerufen am 10. Februar 2023 .
  2. ^ Bragilevsky, Vitaly (Mai 2021). Haskell in Depth . Manning. ISBN 978-1617295409Die
  3. ^ Putrady, Ecky (12. November 2018). Praktische Webentwicklung mit Haskell: Die wichtigsten Fähigkeiten erlernen, um schnelle und skalierbare Webanwendungen zu erstellen . Apress. ISBN 978-1484237380Die
  4. ^ Mazumder, Mark; Braje, Timothy (4. November 2016). „Sichere Client/Server-Webentwicklung mit Haskell“. 2016 IEEE Cybersecurity Development (SecDev) . S. 150. doi : 10.1109/SecDev.2016.040 . ISBN 978-1-5090-5589-0. S2CID  1953852 .
  5. ^ Mazumder, Mark; Braje, Timothy (4. November 2016). „Safe Client/Server Web Development with Haskell“ . GitHub . Massachusetts Institute of Technology : Lincoln Laboratory . Abgerufen am 7. November 2024 .Originale Diashow.
  6. ^ a b Mestanogullari, Alp; Hahn, Sönke; Arni, Julian; Löh, Andreas (2015). „Type-level web APIs with Servant: An exercise in domain-specific generic programming“. Proceedings of the 11th ACM SIGPLAN Workshop on Generic Programming . S.  1–12 . doi : 10.1145/2808098.2808099 . ISBN 9781450338103. S2CID  14512955 .
  7. ^ „Pakete durchsuchen und suchen“ . Haskell.org: Hackage .
  8. ^ Thomson, Patrick; Rix, Rob; Wu, Nicolas; Schrijvers, Tom (31. August 2022). „Fusing industry and academia at GitHub (experience report)“. Proceedings of the ACM on Programming Languages . 6 : 496–511 . arXiv : 2206.09206 . doi : 10.1145/3547639 . S2CID 249889460 . 
  9. ^ „Typsichere MySQL-Abfragen über Postgres“ . NoRedInk Blog . 5. November 2019. Abgerufen am 16. Februar 2023 .
  10. ^ Mulder, Felix. „Haskell in der Produktion: Dienste bei Klarna in Haskell geschrieben“ . Abgerufen am 16. Februar 2023 .
  11. ^ „Cardano Wallet Design“ . Abgerufen am 16. Februar 2023 .
  12. ^ „Servant“ . Wire-Dokumentation . Abgerufen am 16. Februar 2023 .