47

以前はJavaでplay2を使用していました。akka を Java で使用する場合は特に、ボイラープレートのように感じました。しかし、それはフレームワークのせいではありません。

昨日、「せっかちな人のための Scala」を読みましたが、この言語をとても楽しんでいます。

ここで、Lift 2.5 と Play 2.0.3 の両方のフレームワークを調べました。Lift の学習曲線は高く、lift だけで何かを行うことはできませんでした。これは私にとって短所ではありません。私が見た限りでは、Lift はとてもすっきりとしたデザインです。

しかし、私にとって、主な違いが何であるかを伝えるのは難しい. どちらのフレームワークも素晴らしいと思います。

  • Views First アプローチでは、テンプレートにコーディングすることはできません。代わりに、スニペットにコーディングする必要があります。より整理されているように見えるので、私はこれがとても好きです。また、通常の html エディターを使用することもできます。 (経験が少ないので第一印象です)

  • セキュリティについては、それがフレームワークの仕事だとは思いません。

  • ステートレス/ステートフル : 主な違いがどこにあるかを判断するのは困難です。Web ソケットを使用する場合、play にも状態があることだけは知っています。

  • F5 キーを押すと、どちらのフレームワークもコンパイルできます。私はこの機能がとても気に入っています。

  • どちらのフレームワークも sbt を使用しています

  • Lift には認可が付属していますが、同じことを行う play2 scala プラグインがあると思います

  • Lift には mongoDB 用の ORM マッパーがあります。私はnoSQLを使いたいので、これは私にはきれいに見えます。(これもあまり経験がありません) 編集play2 に scala mongodb 用の ORM マッパーがあります https://github.com/leon/play-salat

  • Async - Play 2 は Akka を使用します。リフトの用途はわかりませんが、似たようなものがあります。

  • CSRF をサポートするリフト船。Play2 には CSRF 用のモジュールがありますが、これによりコードにボイラープレートが追加されます。

  • ステートレス認証にはセキュリティ上の脆弱性があるようです。どちらのフレームワークにもステートフル認証があります。(play2 ステートフル/ステートレス、リフト ステートフル)



  • 各フレームワークの強みは何ですか?
4

2 に答える 2

77

Lift で 1、2 週間過ごした後にこれを投稿しても、誰の利益にもなりません。しかし、間違いや誤解を正すために時間を費やしたいと思います。

  • セキュリティについては、それがフレームワークの仕事だとは思いません。

あなたは完全に間違っています。セキュリティはフレームワークの仕事です。各開発者がすべてのセキュリティの脆弱性を理解し、コードのすべての行がそれを考慮に入れていることを確認することに頼るのではなく、セキュリティがデフォルトで行われることが重要です。

私たちがしなければならないことは 、よく知られているテクノロジを使用する最高のコーダーでさえ重大な間違いを犯す可能性があることを理解するために、 GitHubに何が起こったのかを確認することだけです。

Lift はその上に堅固なセキュリティ層を提供するため、デフォルトでは XSS や CSRF などはありませんが、開発者は HTTP リクエストを好きなだけ掘り下げて、ネットワーク上のバイトを処理できます。

  • ステートレス/ステートフル : 主な違いがどこにあるかを判断するのは困難です。Web ソケットを使用する場合、play にも状態があることだけは知っています。

Lift は、状態が必要な場所と必要でない場所を明確に示します。Lift は、ステートレス、部分的にステートフル、および完全にステートフルなアプリをサポートできます。ページごとおよびリクエストごとに、Lift アプリはステートフルまたはステートレスにすることができます (たとえば、Foursquareでは、ベニュー ページは検索エンジンのクロールではステートレスですが、ログインしているブラウザーではステートフルです)。状態に関する設計上の決定の詳細については、リフト、状態、およびスケーリングを参照してください。

  • どちらのフレームワークも sbt を使用しています

Lift は Maven、sbt、Buildr、さらには Ant を使用します。Lift は、ビルド環境やデプロイ環境 (Java EE コンテナー、Netty など) にとらわれません。Lift を他の環境と統合しやすくするため、これは重要です。

  • Lift には承認が付属していますが、同じことを行う play2 scala プラグインがあると思います

Lift は 5 年以上前から存在しており、多くのモジュールや機能があります。Lift Web フレームワーク (モジュールとは区別される) は、永続性、認証などにとらわれないため、Lift では何でも使用できます。

  • Async - Play 2 は Akka を使用します。リフトの用途はわかりませんが、似たようなものがあります。

Lift は 5 年以上にわたって Async をサポートしてきました。フレームワークに焼き付けられています。Lift の Comet サポートは、どの Web フレームワークよりも優れています。とりわけ、サーバーへの単一の要求を通じてページ上のすべての「プッシュ」要求を多重化し、接続不足を回避するためです。Lift がどのように非同期処理を行うかはそれほど重要ではありません。Lift の中心的な哲学の 1 つは、開発者から配管を取り除き、開発者がビジネス ロジックに集中できるようにすることだからです。

しかし、気になる方のために説明すると、Lift には、Scala ランドのどのフレームワークよりも軽量かつ最高のアクターがあります。私たちは最初に Scala Actor のライブラリから脱却し、Akka および ScalaZ Actor の繁栄を可能にするさまざまな Actor ライブラリへの道を切り開くために取り組みました。

  • CSRF をサポートするリフト船。Play2 には CSRF 用のモジュールがありますが、これによりコードにボイラープレートが追加されます。

これは、Lift のセキュリティへの取り組みの一環です。重要です。

  • ステートレス認証にはセキュリティ上の脆弱性があるようです。どちらのフレームワークにもステートフル認証があります。(play2 ステートフル/ステートレス、リフト ステートフル)

Lift アプリは、必要に応じてステートフルまたはステートレスにすることができます。それはあなたの選択であり、Lift は決定を下す方法を非常に明確に示します。

また、Lift、State、および Scaling の投稿で指摘したように、安全でスケーラブルでパフォーマンスの高い方法で状態をシリアル化する方法を開発者に理解させる必要があります (特定のユーザーを認識する Web アプリ上のほぼすべての要求がステートフルであるため)。開発者にとって合理的なオーバーライドを使用して、フレームワークによって予測可能で安全な方法で実行されます。

別れのメモ

Play は Rails によく似ています。サイトをすぐに完成させることができ、MVC に基づいているため、多くの開発者が理解しています。しかし、Play には Rails の深さと幅 (コミュニティ、プラグイン、専門知識、才能など) が欠けています。迅速で簡単な MVC が必要な場合は、Rails と JRuby を使用して、バックエンドを Scala で記述します (これらは非常にうまく連携します)。

リフトは別の獣です。かなりの未学習曲線があります (MVC を考えるのをやめて、ビジネス ロジックにつながるユーザー エクスペリエンスについて最初に考え始めます)。時間をかけて維持します。

于 2012-09-14T16:16:35.460 に答える
20

Playで何ができるか(クールな場合もあります)を確認するには、TypeSafeコンソールをご覧ください。

Liftをすばやく使用するには、テンプレートプロジェクトを使用します。

PlayでMongoを使用するサンプルについては、Factileを参照してください。

要約すると、LiftまたはPlayのどちらでも問題が発生することはないと思います。どちらも活発なプロジェクトであり、優れたコミュニティと作者からの優れた支援があります。それは本当にあなたのビジネス上の問題に依存します。ツールのサポートが重要な場合は、Playの使用を検討することをお勧めします(IntelliJ Ideaで十分にサポートされています)。

TypeSafeテクノロジースタックの一部であるPlayは、最新バージョンのScalaまでビルドされることに注意してください。したがって、Scala 2.10の機能を使用することが重要な場合は、それを覚えておくとよいでしょう。Liftは現在Scala2.9.2を使用していますが、これも問題ありません。

私の現在のプロジェクトでは、ORM用のリフトマッパー(これは素晴らしく、堅実です)とREST用のスプレー(これは単純に素晴らしいです)を使用しています。このアプローチはフレームワークを完全に回避しますが、何をしたいかによって異なります。フレームワークは、多くの場合、進むべき道です。

于 2012-09-14T13:04:58.560 に答える