2009-08-10 12 views
78

Zainspirowany przez this pytanie i ostatnie affair, zastanawiam się, co jest związane z tworzeniem stron internetowych Haskell.Jaki jest ekosystem rozwoju sieci Haskell?

  • Czy są jakieś frameworki lub silniki szablonów Haskell?
  • Jak działa hosting witryny Haskell, czy są odpowiednie serwery WWW?
  • Czy Haskell jest zbyt skomplikowany, aby zapewnić szybki obieg pracy oparty na prototypowaniu, często wykorzystywany w tworzeniu stron internetowych?
  • Czy istnieją przykłady istniejących aplikacji internetowych Haskell?
+11

Nie sądzę, że jest to duplikat. Drugie pytanie dotyczy nauki Haskella jako pierwszego języka, do tworzenia stron internetowych. Pytanie to w szczególności pyta, jakie ramy, silniki szablonów i serwery WWW istnieją. Może to pytanie może zostać przerobione? –

+2

Właśnie dlatego wybrałem to z innego pytania, które polegało głównie na uzyskiwaniu odpowiedzi z zaleceniami do nauki innych języków. To pytanie koncentruje się na innych kwestiach, w szczególności na projektach internetowych w Haskell. : -/ – deceze

+4

Uzgodnione. Głosowanie w celu ponownego otwarcia. – skaffman

Odpowiedz

18

Przede wszystkim zrzeczenie się: Nigdy nie robiłem żadnego programowania w sieci Haskell, więc nie mówię z doświadczenia.

Jeśli spojrzeć na Web category na Hackage, istnieje wiele pakietów związanych z WWW.

Myślę, że większość aplikacji internetowych Haskell działa na niestandardowym serwerze (możliwe, że używa Apache'a w wersji mod_proxy lub zaawansowanego routingu usług IIS jako interfejsu). Jednak istnieją również pewne powiązania FastCGI.

Najbardziej widoczną infrastrukturą serwera/infrastruktury/magazynu danych Haskell jest Happstack, co jest interesujące z kilku powodów, z których najbardziej oczywistym jest fakt, że przechowuje on cały swój stan w pamięci i nie korzysta z relacyjnej bazy danych.

Kolejnym nowszym interfejsem serwera WWW jest hack, o którym nie wiem zbyt wiele, z wyjątkiem tego, że 1-minutowy samouczek wygląda interesująco.

Istnieje wiele innych webserver/frameworków w Haskell, ale te dwie są tylko tymi, które znam na czubku mojej głowy.

6

Po pierwsze, do cholery, jeśli ten link do "romansu" nie był jedną z najzabawniejszych rzeczy w historii!

Teraz, gdy opublikowałem odpowiedź na drugi link, nie wydaje mi się, żeby działo się w sieci Haskell. Masz Happstack i może kilka innych frameworków, które nie wydają się nigdzie nigdzie. Masz FastCgi.

Jeśli tak jak ja, to FastCgi jest prawdopodobnie wystarczająco dobre dla większości potrzeb. Większość klientów, jak sądzę, nie ma problemów ze skalą (a poza tym jest wystarczająco dobra dla osób z Ruby, tak).

Jeśli FastCgi nie jest twoją szybkością ... cóż, być może odchylenie lub podniesienie (odpowiednio Erlang i Scala) są warte obejrzenia.

8
  • Czy są jakieś frameworki lub silniki szablonów Haskell?

Istnieje wiele frameworków internetowych. Spójrz w kategorii Web: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

Dla szablonów, HStringTemplate wydaje się być liderem marka: http://hackage.haskell.org/package/HStringTemplate

  • Jak będzie gospodarzem prace site Haskell, istnieją odpowiednie serwery WWW?

Statyczne pliki binarne z własnym serwerem sieciowym (np. Serwer happstack lub jeden z innych serwerów Haskell), pliki binarne Haskell rozmawiające z Apache, ... prawie każda kombinacja, którą można wymyślić.

  • Czy Haskell jest zbyt skomplikowany, aby zapewnić szybki obieg pracy oparty na prototypach i często stosowany w tworzeniu stron internetowych?

Nie. Dostaniesz silniejsze gwarancje, że aplikacja nie jest wadliwa dzięki systemowi typów.

  • Czy istnieją przykłady istniejących aplikacji internetowych Haskell?

hpaste to proste demo dla happstack. Całym biznesem Tupil.com są aplikacje sieciowe Haskell. Deutsche Bank wygłosił przemówienie na CUFP w zeszłym roku na ich wewnętrznych frameworkach internetowych Haskell (opartych na happstacku).

+0

No cóż, Tupil również zajmuje się rozwojem aplikacji na iPhone'a (w Objective C). Nie robią one takich aplikacji internetowych Haskell. –

+0

Tak, bardzo dobrze, Tom. –

35

Zrobiłem prawdziwe aplikacje sieciowe w Haskell. Oto stos użyłem:

  • PostgreSQL bazie backend
  • HDBC Postgres się z nim połączyć
  • XHTML generować html. To trochę zabawna składnia, ale przynajmniej masz abstrakcję lambda.
  • Fastcgi podłączyć serwer pocztowy do lighttpd, wykonując obsługę sieci.

Cała aplikacja internetowa jest jeden program Haskell, skompilowane do kodu natywnego GHC. Napisałem kod, aby ręcznie wykonać routing żądań (i odwrotnego routingu).

13

Użyłem Happstack do stworzenia prostego webapp/webservice dla naszego lokalnego intranetu.

  • Przechowuje dane w pamięci za pomocą dziennika transakcji do odzyskania (standardowo z Happstack). Nie znajdziesz nigdzie kodu SQL w kodzie.
  • Brak szablonów. Co zwykle robimy z szablonami, robię w JavaScript. Po prostu pobierz dane w formacie JSON i umieść je w DOM.

Jest tylko 169 linii kodu Haskella, wszystkie w Main.hs, które definiują serwer. Reszta to JavaScript do prezentacji i trochę Pythona do testowania.

Jest to open source, możesz to sprawdzić na GitHub, a może używać go jako punkt wyjścia.

+1

Linia 82, zapominasz o zamknięciu oferty. – Rayne

+10

Haskell pozwala na cytowanie w identyfikatorach. Smutne, że podświetlanie składni Githuba upada. – luntain

Powiązane problemy