2012-06-05 3 views
6

Wystarczy spojrzeć na Haskell i framework sieciowy i zastanawiasz się, czy sensowne byłoby korzystanie z funkcji Haskell do tworzenia wątków/zdarzeń w celu zasilania platformy do pisania aplikacji HTML5 i REST, które udostępniają interfejs API HTTP dla danych i WebSocket (z być może obsługą SockJS dla odpowiedni fallback) API dla wydarzeń? Wygląda na to, że "duże" frameworki internetowe nie obsługują WebSockets jako obywatele pierwszej klasy, choć wydaje się, że mają dla nich dużo innych rzeczy.Jakie środowisko sieciowe Haskell byłoby używane dla platformy danych i wiadomości HTTP/Websocket?

Moja troska polega na wykorzystaniu dostępnych rdzeni, które Haskell może zrobić dobrze, ale także zapewnia łatwą integrację użytkowników po stronie serwera do sprawdzania poprawności i logiki po stronie serwera (może przez osadzenie Lua lub podobnego?). Jeśli napisano to na maszynie JVM, można skorzystać z obsługi wielu języków po stronie serwera i wielu bibliotek dla tego typu rzeczy.

Jestem pewien, że ludzie robią takie rzeczy w jednorazowym rozwiązaniu dla własnych aplikacji, ale myślę, że jest to podejście typu PaaS, w którym można pisać aplikacje HTML5 z danymi (w tym odpowiednią synchronizację do użytku w trybie offline) i wydarzenie "za darmo" jako podstawowa część platformy. Większość logiki znajdowałaby się w przeglądarce, ale niektóre mogły być uruchamiane na serwerze z odpowiednimi hakami i rozsądną wbudowalnością (JavaScript wydaje się wykluczony i nie jest pewne osadzania interpreterów w Haskell, ponieważ jestem ogólnie niebezpiecznie zaznajomiony z Haskellem) .

Część problemu, jaki dotychczas miałem z Haskellem, to to, że nie jestem matematykiem. Nie studiowałem CS na studiach i jestem kreatywnym myślicielem. Więc wiele samouczków i dokumentacji bardzo mnie gubi, zwłaszcza gdy mamy do czynienia z rzeczami matematycznymi.

Czy ktoś już zdeptał tę ścieżkę? Spóźniłem się na imprezę? :)

+1

Czy spojrzałeś na Yesod i Snap? Oboje obsługują WebSockets ... i wygląda na to, że ktoś pracuje również nad wsparciem dla SockJS: https://github.com/bitonic/sockjs-haskell –

Odpowiedz

1

Uważam, że wszystkie główne ramy mają pewien poziom obsługi stron internetowych, więc wszystkie powinny być sprawiedliwym wyborem w oparciu o twoje wymagania. Dla jesod, jest przykładem tworzenia systemu czat (za pomocą EventSource, nie WebSockets) w książce:

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

+0

Właściwie tak naprawdę lubię Yesod. Wydaje się dość szybki, jeśli wierzyć punktom odniesienia. :) Podczas gdy źródła zdarzeń mogą działać poprawnie, naprawdę szukam wsparcia dla websocket lub najlepiej SockJS (w tym awaryjnego). –

+0

Czy napisałeś gdzieś poradnik warp? Nie byłem w stanie znaleźć wiele na drodze prostej dokumentacji, jak używać Warp do pisania aplikacji REST. Rodzaj rzeczy typu "osnowy dla manekinów" ... –

+0

Najbliższy jest plik README.md dla WAI: https://github.com/yesodweb/wai/blob/master/wai/README.md. Nie ma tylu osób, które piszą aplikacje internetowe bezpośrednio przeciwko WAI (choć niektóre istnieją). –

4

Gregory Collins wydał tutorial at CUFP last year temat korzystania Snap zbudować interaktywną stronę internetową czat używając długiej odpytywanie (nie websockets). Kod źródłowy to here.

W dziale websockets Jasper Van der Jeugt napisał Haskell websockets library. Jest dostępny pod numerem hackage i jest dostarczany z websockets-snap, który zapewnia obsługę ramek Snap. Jest też wai-websockets, który zapewnia integrację z Warp.

+0

Zauważyłem, że biblioteka hackage, ale nie był pewien co do jej jakości produkcji i jak faktycznie zintegrowany z Snap. Naprawdę miałem nadzieję znaleźć coś, co było prawdziwym obywatelem pierwszej klasy w ramach sieci, a nie dodatkiem, który może działa, ale nie zapewnia dobrej integracji.Powiedział, że z pewnością przyjrzę się bliżej Snapowi i sieciom internetowym (ponownie). –

+0

Omówiłem [tutaj] (http://stackoverflow.com/questions/5645168/comparing-haskells-snap-and-yesod-web-frameworks/5650715#5650715) i [tutaj] (http: //softwaresimply.blogspot. com/2012/04/hopefully-fair-and-useful-comparison-of.html), w jaki sposób platformy sieciowe Haskell są bardzo modularne i wymienne, i twierdzę, że ten trend rozciąga się na bibliotekę websockets i poza nią. Myślę, że to bardzo wysokie możliwości abstrakcji Haskella, które ułatwiają to w większym stopniu niż zdecydowana większość innych języków. Prawdopodobnie nie będziesz potrzebował rzeczy do upieczenia tak często, jak jesteś przyzwyczajony. – mightybyte

Powiązane problemy