Perl での優れた MVC フレームワークを提案してください [終了]
-
09-06-2019 - |
質問
Perl 用の優れた MVC フレームワークを提案していただけますか -- 私が知っているフレームワークの 1 つは、 触媒
必要なのは、Java/.Net アプリケーションからシームレスに呼び出すことができるサービスを Perl インフラストラクチャ上で公開できるようにすることです。
解決
今すぐに言っておきますが、Catalyst は、迅速なアプリケーション開発 MVC フレームワークという点で、Perl 開発者の間で断然最高の評判を得ています。
「純粋な」MVC に関して言えば、「成熟した」、または少なくとも本番環境に対応した代替品がそれほど多くあるのかどうかはわかりません。
Catalyst が適切ではないと思われる場合は、軽量フレームワークを基にして構築することもできます。 CGI::アプリケーション ニーズに合わせて、または次のようなあまり知られていない MVC フレームワークを検討してください。 ページキット そして メイポール.
他のヒント
この古いスレッドがポップアップしたので、Perl MVC の世界に新たに追加された 2 つのエキサイティングな点について触れておきます。
- 踊り子 (CPAN) これは、非常に軽量であることで知られる Ruby の Sinatra に多大な影響を受けています。
- モジョリシャス (CPAN)これは、Catalyst の元の開発者がそこで学んだことを使用するために書かれたもので、コア以外の依存関係はなく、非常に最新の組み込み(HTML5/CSS3/Websocket、JSON/XML パーサー、独自の UserAgent/テンプレート エンジン)を備えています。
(注意)私は Dancer よりも Mojolicious をよく使用しているため、Mojolicious 用にリストした Dancer の機能を見逃していた場合は、あらかじめお詫びします)
すでに述べたもの以外のもう 1 つの選択肢は継続性です。ただし、これは (名前が示すとおり) 一般的な意味での MVC ではなく継続ベースです。それでも、これはより優れた Perl Web フレームワークの 1 つであるため、言及する価値はあります。
そうは言っても、私はどの代替製品よりも Catalyst の方がずっと好きです。そしてそれは今も常に良くなり続けています!その欠点は、現在推奨されているコーディング アプローチがかなり急ピッチで進化し続けていることです。しかし、ここ数バージョンでは API の互換性が重視されてきたため、負担は管理上の負担というよりは主に精神的な負担になっています。特に今後の Moose への内部ポートは、いくつかの優れた利点を提供する準備ができています。
しかし、Catalyst (IMO) を支持する最大の議論は、連鎖ディスパッチ タイプです。これは、Web フレームワーク ダム全体でこのようなものを見たことがありません。これは、コードを可能な限り DRY に保つための最も優れたツールです。これは、Catalyst が提供するもう 1 つの優れた機能とうまく連携しています。 uri_for
– コントローラーと一連の引数を受け取り、その場所にディスパッチして返す URI を構築するメソッド。これらの機能を組み合わせると、適切と思われる方法で URI 空間を構造化できると同時に、ロジックの重複を避けるためにコントローラーを構造化できることになります。 そして テンプレートを URI 構造から独立させます。
まさに素晴らしいですね。
他の人によるコメントの二次利用:Catalyst (多かれ少なかれ Maypole から分岐したもの) は、その中で最も完全で堅牢です。ジョナサン・ロックウェイの本は、それを理解するのに間違いなく役立ちます。
「Chained」ディスパッチ タイプに加えて、:Regex (および :LocalRegex) ディスパッチ メソッドは非常に高い柔軟性を提供します。ここで構築した最新のアプリは、:LocalRegex を使用したほんの一握りのサブディレクトリを通じて、多くの異なる見た目の URL をサポートしています。
また、特定のテンプレート言語やデータベースに限定されないという事実も特に気に入っています。メーリング リスト (および書籍) ではどちらも Template::Toolkit (私も同様) と DBIx::Class (引き続き Class::DBI を使用します) を優先していますが、ほとんど何でも好きなものを使用できます。その点、Catalyst は驚くほど不可知論的です。
Catalyst では CPAN の半分が依存関係として必要なようですので、がっかりしないでください。一度立ち上げて稼働させると、十分に油が注がれたマシンになります。今では、一度理解すると「背景に消えてしまう」ほどの成熟度に達しています。使用するツールと格闘するのではなく、ビジネス ニーズの解決に時間を費やします。
それは缶に書かれていることを実行します。カタリスト++
CGI::Application もあります。これはフレームワークの本質に似ています。これは、基本的な CGI を作成し、それにビットを接着して好きなようにカスタマイズするのに役立ちます。したがって、ほとんどモジュールを使用しないようにすることも、太陽の下でほぼ全員だけを使用させることもできます。
触媒はその手段です。Jifty もありますが、(最後に見たときは) ドキュメントがひどいものでした。
Catalyst についてすでに知っている場合は、それに注目することをお勧めします。これは成熟しており、十分に文書化されており、非常に大規模なユーザーベース、コミュニティ、およびプラグインのコレクションを持っています。
あなたの問題については、さまざまな形式を使用してモデルやアクションにアクセスできるようにする Jifty::Plugin::REST を検討します。
ただ言っておきますが、Jifty にはひどいドキュメントはありません。ただし、含まれているドキュメントのほとんどは API ドキュメントですが、非常にノイズの少ないメーリング リストがあり、役立つヒントやアプリケーションへのリンクが含まれています。
ウィキ http://jifty.org/ は、役立つ情報が含まれる別のリソースです。
午後にビデオ ストア (4GL と CRUD フレームワークのお気に入りのベンチマーク) を作成することが目標であれば、一見の価値があります。
別のオプションは ガントリー BigTop モジュールと組み合わせて使用すると、単純な CRUD サイトの構築にかかる時間を短縮できます。
もあります クリアプレス これはデータベースを利用した便利なアプリケーションとして推奨できます。Catalyst より必要な依存関係が少なくなります。私たちはこれを使っていくつかの大規模なアプリケーションを作成し、それを使用してバドミントン ラダー Web サイトを運営しています。
いくつかのアプリケーションを構築しました 昆布, 、習得が簡単で非常に役に立ちます。