답변
우선, 면책 조항 : 저는 Haskell 웹 개발을 한 적이 없기 때문에 경험으로 말하지 않습니다.
Hackage 의 웹 카테고리 를 살펴보면 웹 관련 패키지가 많이 있습니다.
대부분의 Haskell 웹 응용 프로그램은 사용자 지정 서버에서 실행됩니다 (아마도 Apache mod_proxy
또는 IIS의 고급 요청 라우팅을 프런트 엔드로 사용). 그러나 일부 FastCGI 바인딩도 있습니다.
가장 눈에 띄는 Haskell 웹 서버 / 프레임 워크 / 데이터 스토리지 인프라는 Happstack으로 , 여러 가지 이유로 흥미로운 데, 가장 명백한 것은 모든 상태를 메모리에 저장하고 관계형 데이터베이스를 사용하지 않는다는 것입니다.
또 다른 최신 웹 서버 인터페이스는 hack 입니다. 1 분짜리 튜토리얼이 흥미로워 보인다는 점을 제외하면 제가 많이 알지 못합니다.
Haskell에는 더 많은 웹 서버 / 프레임 워크가 있지만,이 두 가지는 내 머리 꼭대기에서 내가 아는 것들입니다.
답변
Haskell에서 실제 프로덕션 웹 애플리케이션을 수행했습니다. 내가 사용한 스택은 다음과 같습니다.
- PostgreSQL 데이터베이스 백엔드
- 연결할 HDBC Postgres
- Html을 생성하는 XHTML . 약간 재미있는 구문이지만 최소한 람다 추상화가 있습니다.
- Fastcgi 는 백엔드를 lighttpd 에 연결 하여 웹 서비스를 수행합니다.
전체 웹 애플리케이션은 네이티브 코드 ghc로 컴파일 된 단일 하스켈 프로그램입니다. 요청 라우팅 (및 역 라우팅)을 수동으로 수행하는 코드를 작성했습니다.
답변
저는 Happstack을 사용하여 로컬 인트라넷을위한 간단한 webapp / webservice를 만들었습니다.
- 복구를 위해 트랜잭션 로그와 함께 메모리에 데이터를 저장합니다 (Happstack 표준). 코드에서 SQL을 찾을 수 없습니다.
- 템플릿이 없습니다. 일반적으로 템플릿으로 수행하는 작업은 Javascript로 수행합니다. JSON 형식으로 데이터를 가져 와서 DOM에 넣으면됩니다.
Main.hs
서버를 정의하는 169 줄의 Haskell 코드가 모두에 있습니다. 나머지는 프레젠테이션 용 자바 스크립트이고 테스트 용 Python입니다.
오픈 소스이므로 GitHub 에서 확인 하고 시작점으로 사용할 수 있습니다.
답변
- Haskell 웹 프레임 워크 나 템플릿 엔진이 있습니까?
많은 웹 프레임 워크가 있습니다. 웹 카테고리를보십시오 : http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web
템플릿의 경우 HStringTemplate이 브랜드 리더 인 것 같습니다 : http://hackage.haskell.org/package/HStringTemplate
- Haskell 사이트 호스팅은 어떻게 작동합니까? 적절한 웹 서버가 있습니까?
자체 웹 서버 (예 : happstack-server 또는 다른 Haskell 웹 서버 중 하나)를 실행하는 정적으로 연결된 바이너리, Apache와 통신하는 Haskell 바이너리, … 생각할 수있는 거의 모든 조합.
- Haskell이 웹 개발에 자주 사용되는 일반적인 빠른 개발 및 프로토 타이핑 기반 워크 플로에 비해 너무 복잡합니까?
아니요. 유형 시스템 덕분에 앱에 결함이 없음을 더 강력하게 보장 할 수 있습니다.
- 기존 Haskell 웹 애플리케이션의 예가 있습니까?
hpaste는 happstack의 간단한 데모입니다. Tupil.com 전체 비즈니스는 Haskell 웹 앱입니다. Deutsche Bank는 작년에 CUFP에서 내부 Haskell 웹 프레임 워크 (happstack 기반)에 대해 강연했습니다.
답변
첫째, 그 “외도”링크가 지금까지 가장 재미있는 것 중 하나가 아니었다면 젠장!
이제 다른 링크에 답변을 게시했지만 Haskell 웹 사이트에서 많은 일이 일어나고 있다고 생각하지 않습니다. Happstack과 아무데도 가지 않는 다른 프레임 워크도 있습니다. 그렇다면 FastCgi가 있습니다.
나를 좋아한다면 FastCgi는 아마도 대부분의 요구에 충분할 것입니다. 대부분의 고객은 실제로 확장 문제가 없습니다 (그리고 Ruby 사용자에게도 충분합니다).
FastCgi가 당신의 속도가 아니라면 … 글쎄, 아마도 yaws 또는 lift (Erlang 및 Scala)를 살펴볼 가치가 있습니다.