web-dev-qa-db-ja.com

Haskell Web開発のエコシステムは何ですか?

this の質問と最近の affair に触発されて、HaskellのWeb開発には何が関係しているのだろうと思います。

  • Haskell Webフレームワークまたはテンプレートエンジンはありますか?
  • Haskellサイトのホスティングはどのように機能しますか?適切なWebサーバーはありますか?
  • Haskellは、Web開発でよく使用される通常の迅速な開発とプロトタイピングベースのワークフローには複雑すぎますか?
  • 既存のHaskell Webアプリケーションの例はありますか?
80
deceze

まず、免責事項:私はHaskellのWeb開発を行ったことがないので、経験から話すことはありません。

Hackageで Webカテゴリ を見ると、Web関連のパッケージがたくさんあります。

ほとんどのHaskell Webアプリケーションはカスタムサーバーで実行されていると思います(おそらくApacheのmod_proxyまたはフロントエンドとしてのIISのAdvanced Request Routing)。ただし、いくつかのFastCGIバインディングもあります。

最も顕著なHaskell webserver/framework/datastorageインフラストラクチャは Happstack です。これはいくつかの理由で興味深いですが、最も明白なのは、すべての状態をメモリに保存し、リレーショナルデータベースを使用しないことです。

最近のもう1つのWebサーバーインターフェイスは hack ですが、1分間のチュートリアルが面白そうなこと以外はあまり知りません。

Haskellにはもっと多くのwebservers/frameworksがありますが、これら2つは私が頭の中で知っているものにすぎません。

18
Tom Lokhorst

Haskellで実際の製品Webアプリケーションを作成しました。これが私が使ったスタックです:

Webアプリケーション全体は、ネイティブコードghcにコンパイルされた単一のhaskellプログラムです。リクエストルーティング(およびリバースルーティング)を手動で行うコードを記述しました。

36
Phil

私はHappstackを使用して、ローカルイントラネット用のシンプルなwebapp/webserviceを作成しました。

  • リカバリ用のトランザクションログ(Happstackでは標準)を使用してデータをメモリに保存します。コードのどこにもSQLはありません。
  • テンプレートはありません。テンプレートで通常行うことは、JavaScriptで行います。 JSON形式でデータを取得し、それをDOMに入れるだけです。

Haskellコードは169行で、すべて Main.hs 、サーバーを定義します。残りはプレゼンテーション用のJavaScriptであり、一部はテスト用のPythonです。

これはオープンソースであり、 GitHub で確認できます。また、開始点として使用することもできます。

14
luntain
  • Haskell Webフレームワークまたはテンプレートエンジンはありますか?

多くのWebフレームワークがあります。 Webカテゴリを見てください: http://hackage.haskell.org/packages/archive/pkg-list.html#cat:web

テンプレート化に関しては、HStringTemplateがブランドリーダーであるようです: http://hackage.haskell.org/package/HStringTemplate

  • Haskellサイトのホスティングはどのように機能しますか?適切なWebサーバーはありますか?

独自のWebサーバー(happstack-serverまたは他のHaskell Webサーバーの1つなど)を実行する静的にリンクされたバイナリ、Apacheと通信するHaskellバイナリ...考えられるほとんどすべての組み合わせ。

  • Haskellは、Web開発でよく使用される通常の迅速な開発とプロトタイピングベースのワークフローには複雑すぎますか?

いいえ。型システムのおかげで、アプリに欠陥がないことがより強力に保証されます。

  • 既存のHaskell Webアプリケーションの例はありますか?

hpasteはhappstackのシンプルなデモです。 Tupil.com全体のビジネスはHaskell Webアプリです。ドイツ銀行は昨年、CUFPで社内のHaskell Webフレームワーク(happstackベース)について講演しました。

9
Don Stewart

まず、その「不倫」リンクがこれまでで最もおもしろいものの1つではなかったのなら、いまいましい!

さて、私は他のリンクに回答を投稿しましたが、HaskellのWebランドではあまり起こっていないと思います。あなたはHappstackとおそらくどこにも行かないように見えるいくつかの他のフレームワークを持っています。次に、FastCgiを入手します。

あなたが私のようであれば、FastCgiはおそらくほとんどのニーズに十分対応できます。私が見つけたほとんどのクライアントは、実際にスケールの問題を抱えていません(それに加えて、Rubyの人々、そうです)には十分です)。

FastCgiがあなたの速度でない場合は、まあ、おそらく、あごやリフト(それぞれ、ErlangとScala)は一見の価値があります。

7
Shaun