Haskell 웹 개발을위한 생태계는 무엇입니까? [닫은]


80

질문과 최근 사건 에서 영감을 받아 Haskell 웹 개발과 관련된 것이 무엇인지 궁금합니다.

  • Haskell 웹 프레임 워크 나 템플릿 엔진이 있습니까?
  • Haskell 사이트 호스팅은 어떻게 작동합니까? 적절한 웹 서버가 있습니까?
  • Haskell이 웹 개발에 자주 사용되는 일반적인 빠른 개발 및 프로토 타이핑 기반 워크 플로에 비해 너무 복잡합니까?
  • 기존 Haskell 웹 애플리케이션의 예가 있습니까?

11
나는 이것이 중복이라고 생각하지 않습니다. 다른 질문은 웹 개발을 위해 Haskell을 모국어로 배우는 것에 대해 묻는 것입니다. 이 질문은 특히 어떤 프레임 워크, 템플릿 엔진 및 웹 서버가 존재하는지 묻는 것입니다. 이 질문을 재 작업 할 수 있습니까?
Tom Lokhorst

2
그것이 바로 제가 다른 언어를 배우기위한 권장 사항과 함께 답변을 얻는 다른 질문에서 분기 한 이유입니다. 이 질문은 다른 초점, 특히 Haskell 생태계의 웹 중심 프로젝트를 가지고 있습니다. :-/
deceze

7
저는 이것을 열고 싶습니다
CiscoIPPhone

@deceze 질문을 조금 수정했습니다. 특히 다른 질문과는 좀 더 구별되는 제목을 만들었습니다.
Tom Lokhorst

@Tom 감사합니다! 이것이 조금 더 잘 구별되기를 바랍니다.
deceze

답변:


18

우선, 면책 조항 : 저는 Haskell 웹 개발을 한 적이 없기 때문에 경험으로 말하지 않습니다.

Hackage 의 웹 카테고리 를 살펴보면 웹 관련 패키지가 많이 있습니다.

대부분의 Haskell 웹 응용 프로그램은 사용자 지정 서버에서 실행됩니다 (아마도 Apache mod_proxy또는 IIS의 고급 요청 라우팅을 프런트 엔드로 사용). 그러나 일부 FastCGI 바인딩도 있습니다.

가장 눈에 띄는 Haskell 웹 서버 / 프레임 워크 / 데이터 스토리지 인프라는 Happstack으로 , 여러 가지 이유로 흥미로운 데, 가장 명백한 것은 모든 상태를 메모리에 저장하고 관계형 데이터베이스를 사용하지 않는다는 것입니다.

또 다른 최신 웹 서버 인터페이스는 hack 입니다. 1 분짜리 튜토리얼이 흥미로워 보인다는 점을 제외하면 제가 많이 알지 못합니다.

Haskell에는 더 많은 웹 서버 / 프레임 워크가 있지만,이 두 가지는 내 머리 꼭대기에서 내가 아는 것들입니다.


36

Haskell에서 실제 프로덕션 웹 애플리케이션을 수행했습니다. 내가 사용한 스택은 다음과 같습니다.

  • PostgreSQL 데이터베이스 백엔드
  • 연결할 HDBC Postgres
  • Html을 생성하는 XHTML . 약간 재미있는 구문이지만 최소한 람다 추상화가 있습니다.
  • Fastcgi 는 백엔드를 lighttpd 에 연결 하여 웹 서비스를 수행합니다.

전체 웹 애플리케이션은 네이티브 코드 ghc로 컴파일 된 단일 하스켈 프로그램입니다. 요청 라우팅 (및 역 라우팅)을 수동으로 수행하는 코드를 작성했습니다.


14

저는 Happstack을 사용하여 로컬 인트라넷을위한 간단한 webapp / webservice를 만들었습니다.

  • 복구를 위해 트랜잭션 로그와 함께 메모리에 데이터를 저장합니다 (Happstack 표준). 코드에서 SQL을 찾을 수 없습니다.
  • 템플릿이 없습니다. 일반적으로 템플릿으로 수행하는 작업은 Javascript로 수행합니다. JSON 형식으로 데이터를 가져 와서 DOM에 넣으면됩니다.

Main.hs서버를 정의하는 169 줄의 Haskell 코드가 모두에 있습니다. 나머지는 프레젠테이션 용 자바 스크립트이고 테스트 용 Python입니다.

오픈 소스이므로 GitHub 에서 확인 하고 시작점으로 사용할 수 있습니다.


1
82 행, 닫는 따옴표를 잊어 버렸습니다.
Rayne

10
Haskell은 식별자에 따옴표를 허용합니다. 슬프게도 그 github의 구문 강조는 그 이상입니다.
luntain 2009

9
  • 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 기반)에 대해 강연했습니다.


Tupil은 또한 많은 iPhone 앱 개발을 수행합니다 (Objective C에서). 그들은하지 않습니다 단지 하스켈 웹 응용 프로그램을.
Tom Lokhorst

7

첫째, 그 "외도"링크가 지금까지 가장 재미있는 것 중 하나가 아니었다면 젠장!

이제 다른 링크에 답변을 게시했지만 Haskell 웹 사이트에서 많은 일이 일어나고 있다고 생각하지 않습니다. Happstack과 아무데도 가지 않는 다른 프레임 워크도 있습니다. 그렇다면 FastCgi가 있습니다.

나를 좋아한다면 FastCgi는 아마도 대부분의 요구에 충분할 것입니다. 대부분의 고객은 실제로 확장 문제가 없습니다 (그리고 Ruby 사용자에게도 충분합니다).

FastCgi가 당신의 속도가 아니라면 ... 글쎄, 아마도 yaws 또는 lift (Erlang 및 Scala)를 살펴볼 가치가 있습니다.


미스터 본은 이것에 대해 열심히 갔다.
Daniel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.