2009-08-10 2 views
78

Ispirato alla domanda this e un recente affair, mi chiedo che cosa implichi lo sviluppo web di Haskell.Qual è l'ecosistema per lo sviluppo web di Haskell?

  • Esistono framework web Haskell o motori di template?
  • Come funziona l'hosting di un sito Haskell, ci sono server web adatti?
  • Haskell è troppo complesso per il solito flusso di lavoro basato su sviluppo rapido e prototipazione, spesso utilizzato nello sviluppo web?
  • Esistono esempi di applicazioni Web Haskell esistenti?
+11

Non penso che sia un duplicato. L'altra domanda riguarda l'apprendimento di Haskell come prima lingua, per lo sviluppo web. Questa domanda richiede specificamente quali strutture, motori di template e server web esistono. Forse questa domanda può essere rielaborata? –

+2

Questo è esattamente il motivo per cui ho ramificato l'altra domanda, che era principalmente ottenere risposte con raccomandazioni per imparare altre lingue. Questa domanda ha un focus diverso, in particolare progetti focalizzati sul web nell'ecosistema di Haskell. : -/ – deceze

+4

Concordato. Votazione per riaprire. – skaffman

risposta

18

Prima di tutto, un disclaimer: non ho mai fatto uno sviluppo web Haskell, quindi non parlo per esperienza.

Se si guarda lo Web category su Hackage, ci sono molti pacchetti relativi al web.

Penso che la maggior parte delle applicazioni Web Haskell vengano eseguite su un server personalizzato (possibilmente utilizzando il servizio di richiesta avanzata di Apache mod_proxy o IIS come front-end). Tuttavia, ci sono anche alcuni collegamenti FastCGI.

La principale infrastruttura Haskell webserver/framework/datastorage è Happstack, che è interessante per diverse ragioni, la più ovvia è che memorizza tutto il suo stato in memoria e non utilizza un database relazionale.

Un'altra interfaccia di server Web più recente è hack, di cui non so molto, tranne che il tutorial di 1 minuto sembra interessante.

Ci sono molti altri webserver/framework in Haskell, ma questi due sono solo quelli che conosco in cima alla mia testa.

6

In primo luogo, dannazione se quel collegamento "affare" non era una delle cose più divertenti di sempre!

Ora, mentre ho postato una risposta sull'altro link, non penso che stia accadendo molto nella rete web Haskell. Hai Happstack e forse alcuni altri framework che non sembrano andare da nessuna parte. Allora hai FastCgi.

Se siete come me, allora FastCgi è probabilmente abbastanza buono per la maggior parte delle vostre esigenze. La maggior parte dei clienti, trovo, non ha davvero problemi di scala (e, inoltre, è abbastanza buono per la gente di Ruby, giusto).

Se FastCgi non è la tua velocità ... beh, forse imbardata o sollevata (Erlang e Scala, rispettivamente) valgono la pena dare un'occhiata.

8
  • Esistono framework Web Haskell o motori di template?

Ci sono molti framework web. Guarda nella categoria Web: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

Per template, HStringTemplate sembra essere il marchio leader: http://hackage.haskell.org/package/HStringTemplate

  • Come sarebbe che ospita un cantiere Haskell, ci sono server web adatti?

binari staticamente collegati in esecuzione un proprio server web (per esempio happstack-server o uno degli altri server web Haskell), i binari Haskell parlando con Apache, ... praticamente ogni combinazione si potrebbe pensare.

  • Haskell è troppo complesso per il solito flusso di lavoro basato su sviluppo rapido e prototipazione, spesso utilizzato nello sviluppo web?

No. E avrai maggiori garanzie che l'app non è difettosa grazie al sistema di tipi.

  • Esistono esempi di applicazioni Web Haskell esistenti?

hpaste è una semplice demo per happstack. L'intera attività di Tupil.com è l'app web Haskell. Deutsche Bank ha tenuto un discorso al CUFP l'anno scorso sui loro framework web Haskell interni (basati su happstack).

+0

Bene, Tupil fa anche un sacco di sviluppo di app per iPhone (nell'obiettivo C). Non eseguono _applicare le app Web Haskell. –

+0

Sì, ottimo punto, Tom. –

35

Ho fatto applicazioni web di produzione reali in Haskell. Ecco lo stack che ho usato:

  • PostgreSQL database back-end
  • HDBC Postgres di connettersi ad esso
  • XHTML per generare codice HTML. È un po 'una sintassi divertente, ma almeno hai un'astrazione lambda.
  • Fastcgi per collegare il backend allo lighttpd, facendo la pubblicazione web.

L'intera applicazione Web è un singolo programma haskell, compilato in codice nativo ghc. Ho scritto il codice per fare il routing delle richieste (e il routing inverso) a mano.

13

Ho usato Happstack per creare una semplice webapp/webservice per la nostra intranet locale.

  • Memorizza i dati in memoria con un log delle transazioni per il ripristino (standard con Happstack). Non troverai SQL nel codice ovunque.
  • Nessun modello. Quello che si farebbe di solito con i modelli, lo faccio in Javascript. Ottieni i dati in formato JSON e inseriscili nel DOM.

Ci sono solo 169 linee di codice Haskell, tutte in Main.hs, che definiscono il server. Il resto è Javascript per la presentazione e alcuni Python per i test.

È open source, è possibile verificarlo su GitHub e forse utilizzarlo come punto di partenza.

+1

Riga 82, hai dimenticato una citazione di chiusura. – Rayne

+10

Haskell consente le virgolette negli identificatori. Triste, l'evidenziazione della sintassi di Github cade su questo. – luntain