2012-06-05 10 views
6

Betrachten Sie Haskell und Web-Frameworks und fragen Sie, ob es sinnvoll wäre, Haskells großartige Threading-/Event-Funktionalität zu nutzen, um HTML5- und REST-Apps zu schreiben, die eine HTTP-API für Daten und einen WebSocket bereitstellen (mit möglicherweise SockJS-Unterstützung für) geeignete Fallback) API für Veranstaltungen? Es scheint nicht so, als ob die "großen" Web-Frameworks WebSockets als erstklassiger Bürger unterstützen, obwohl sie scheinbar eine Menge anderer Dinge für sie haben.Welches Haskell-Web-Framework würde man für eine HTTP/Websocket-Daten- und Messaging-Plattform verwenden?

Mein Anliegen ist es, verfügbare Cores zu nutzen, die Haskell gut kann, aber auch eine einfache Benutzerintegration auf der Serverseite zur Validierung und serverseitigen Logik bietet (vielleicht durch Einbetten von Lua o.ä.). Wenn man dies auf der JVM schreibt, könnte man mehrere serverseitige Sprachunterstützung und viele Bibliotheken für diese Art von Dingen verwenden.

Ich bin sicher, dass Leute solche Dinge in einer einmaligen Lösung für ihre eigenen Anwendungen tun, aber ich denke nach dem PaaS-Ansatz, wo man HTML5-Apps mit Daten schreiben kann (einschließlich korrekter Synchronisation) für die Offline-Nutzung) und "frei" als ein wesentlicher Teil der Plattform. Die meiste Logik würde im Browser liegen, aber einige könnten auf dem Server mit den entsprechenden Hooks und einer vernünftigen Einbettbarkeit ausgeführt werden (JavaScript scheint nicht in Frage zu kommen und ich bin mir nicht sicher, ob ich Haskell interpretieren könnte, da ich Haskell im Allgemeinen nur gefährlich kenne) .

Ein Teil des Problems, das ich bisher mit Haskell hatte, ist, dass ich kein Mathe-Typ bin. Ich habe CS in der Schule nicht studiert und bin ein kreativer Denker. Viele Tutorials und Dokumentationen haben mich ziemlich verloren, besonders im Umgang mit mathematischen Dingen.

Hat schon jemand diesen Weg beschritten? Bin ich zu spät zur Party? :)

+1

Haben Sie sich Jessod und Snap angeschaut? Sie beide unterstützen WebSockets ... und es sieht so aus, als ob jemand an SockJS-Unterstützung arbeitet: https://github.com/bitonic/sockjs-haskell –

Antwort

1

Ich glaube, dass alle wichtigen Frameworks einige Ebene von WebSockets unterstützen, so sollten sie alle eine faire Wahl basierend auf Ihren Anforderungen sein. Für Yesod, gibt es ein Beispiel für ein Chat-System zu schaffen (mit Eventsource, nicht WebSockets) in dem Buch:

http://www.yesodweb.com/book/wiki-chat-example

+0

Ich mag Jessod eigentlich schon ein bisschen so weit. Es scheint ziemlich schnell, wenn man den Benchmarks glauben soll. :) Während die eventsource Sachen okay funktionieren könnten, suche ich wirklich nach websocket oder vorzugsweise nach SockJS (die Rückfallunterstützung einschließt). –

+0

hast du irgendwo ein Warp Tutorial geschrieben? Ich bin nicht in der Lage, eine einfache Dokumentation darüber zu finden, wie man mit warp eine REST-App schreiben kann. Eine Art von "Warp for Dummies" Art der Sache ... –

+0

Die nächste ist die README.md für WAI: https://github.com/yesodweb/wai/blob/master/wai/README.md. Es gibt nicht viele Leute, die Web-Apps direkt gegen WAI schreiben (obwohl es einige gibt). –

4

Gregory Collins tutorial at CUFP last year über die Verwendung von Snap-gab eine interaktive Chat-Website mit Lang-Abfrage zu bauen (keine Websockets). Der Quellcode lautet here.

In der Abteilung Websockets schrieb Jasper Van der Jeugt einen Haskell websockets library. Es ist verfügbar unter hackage und kommt mit websockets-snap, die Snap Framework-Unterstützung bietet. Es gibt auch wai-websockets, die Integration mit Warp bietet.

+0

Ich bemerkte, dass die hackage-Bibliothek aber war nicht sicher über seine Produktionsqualität und wie es tatsächlich mit Snap integriert. Ich hatte wirklich gehofft, etwas zu finden, das ein wirklich erstklassiger Bürger eines Web-Frameworks ist und kein Zusatz, der vielleicht funktioniert, aber keine gute Integration bietet.Das heißt, ich werde Snap und Websockets (nochmal) genauer unter die Lupe nehmen. –

+0

Ich diskutierte [hier] (http://stackoverflow.com/questions/5645168/comarging-haskells-snap-and-yesod-web-frameworks/5650715#5650715) und [hier] (http: //softwaresimply.blogspot. com/2012/04/hoffentlich-fair-and-nützlich-comparison-of.html) wie Haskell Web-Frameworks sind sehr modular und austauschbar, und ich würde argumentieren, dass dieser Trend auf die Websockets-Bibliothek und darüber hinaus erstreckt. Ich denke, es sind Haskells extrem hohe Abstraktionsfähigkeiten, die dies in einem größeren Ausmaß ermöglichen als die große Mehrheit anderer Sprachen. Sie werden wahrscheinlich nicht so viel Backwaren brauchen, wie Sie es gewohnt sind. – mightybyte

Verwandte Themen