[perl plack psgi] WebアプリをWebサーバから抽象化

WebアプリをWebサーバから抽象化する事により、

1. Webアプリ側ではどのWebサーバで実行するかを考える事なく
1つのインターフェースに対応させればよい

2.Webサーバ側でも抽象化された1つのインターフェースに対応すればよい


故に開発の負担が減り本来のアプリケーションの機能向上に専念できる。
などのメリットからWebサーバインターフェイスの統一化の流れが進んでいます。


まずPytonでPEP333 WSGIが定義されました。


次にRubyの世界で、
アプリケーションサーバMongrelやThin,Passengerなど多くのサーバに対し
WAFの対応を統一する為にRackが定義されました。
RailsがCGIに代えて、WebサーバインターフェースRackをサポートした事は有名です。


Perlの世界でも同じような潮流が起きています。
HTTP::Engineがその先駆けでした。
しかしWAFによっては対応が難しい場合もあり、

1.仕様 PSGI
2.実装 Plack

と分割し各サーバへの対応はアダプターで対応
としPlackが誕生しました。

以下のサイトで詳しく紹介されています。
Perl Superglue Web Frameworks and Web Servers

Plackの魅力は、WebアプリをWebサーバから抽象化だけに留まりません。


1. perlを使って簡単にwebミニアプリが作れるように作りました。

plackupを使えばwebサーバとしても機能するのでお手軽にperlでミニアプリが作成できます。

Plack::Requestとか使って小さなWebアプリを作ろう!

簡易GyazoサーバをPlackで実装したら27行くらいで書けた


2. リアルタイムAPI、リアルタイムWebに対応

psgi.streamingやpsgi.nonblockingでlongpollやMXHRと相性がよい
PSGIに対応してるTatsumakiフレームワークのサンプルを確認すると
簡単にNon-blocking webが実装できる事がわかります。

multipart/mixedなストリームをPlack/PSGIでpushする
Tatsumakiのdemoプログラム解析

参考サイト:
5分でわかるRack
CGI から Mongrel まで、Rack で Web アプリを Web サーバから抽象化する
Rack日本語リファレンス
Ruby Freaks Lounge 第25回 Rackとは何か(3)ミドルウェアのすすめ
Perl PSGI Plack | Webフレームワーク ウェブサーバの抽象化


PHPではrack-php
みたいなのが出来てますが、そもものWeb用の言語として始まったので
あまり必要性がないかもしれません。