22

Scala 言語のさまざまな利点を考慮して、次の Web アプリケーションを Scala で作成することにしました。ただし、Wicket または Lift を使用する必要がありますか? 私は Wicket に精通しており、かなり気に入っていますが、Lift についてはほとんど知りません。この状況で Lift を学習することは努力する価値があるでしょうか?

つまり、Lift は Wicket と比べてどうですか? Web アプリが Scala で作成されることを考えると、Lift を使用すると、開発者としての作業が楽になるでしょうか?

4

3 に答える 3

30

Wicket が好きなら、自分が知っていて好きなものを使い続ける必要があります。Wicket は優れた Web フレームワークであり、Scala の特性を使用して Wicket でクラスを構成できるため、Scala と Wicket を実行することは非常に優れています。Java と比較してボイラープレートが大幅に削減されます。

Lift には、Wicket にはない強みがあります。

  • はるかに優れた Ajax サポート。Lift の Ajax サポートは、Wicket のものよりはるかに冗長ではありません。多くの Ajax を行う場合は、Lift を学習することは価値があるかもしれません。
  • コメットのサポート。アプリケーションにサーバー プッシュ コンポーネントがある場合、Lift は他のどの Web フレームワークよりも優れた comet サポートを提供します。
  • Lift はより Scala に似ています。Java から来た場合、Lift のパターン マッチングと関数の受け渡しの使用は学習曲線です。

このスレッドのコメントに関して、私はいくつかの発言に反対したいと思います。

  • Lift では、プレゼンテーションとビジネス・ロジックを混在させる必要はありません。コーディング スタイルに合わせてアプリケーションを適切に構築するためのオプションはたくさんあります。プレゼンテーションとロジックを完全に分離することから、この 2 つをワイルドかつ自由に混合することまであります。あなたの選択。
  • Lift は Rails と同じことをしません。Lift は別の MVC フレームワークではありません。また、Lift の CRUD の側面に多くの時間を費やしたこともありません。Lift は、セキュリティー、開発者の生産性、保守性、および高度にインタラクティブな (Ajax と Comet) Web アプリの構築に関するものです。Lift ライブラリには、多数の ORM モジュール、JSON サポートなどを含む多くのモジュールが含まれています。これは、2 ~ 3 年前に Scala でライブラリが不足していたことと、Lift コミュニティが素晴らしく、 Lift リリース プロセスは非常にうまく機能します (Foursquare を強化するのに十分なほど安定した毎月のマイルストーン リリース)。
  • Lift は、HTTP 要求/応答サイクルに重点を置いていません。Lift は、それらを抽象化することに重点を置いています。開発者は、パラメーターの命名について心配する時間が減り、ビジネス ロジックにより多くの時間を費やすことができます。

しかし、もう一度言いますが、Wicket が好きなら、Wicket を使い続けるのは素晴らしい選択です... Wicket は Scala でさらに優れています。

于 2010-07-13T20:05:56.630 に答える
15

ウィケットとリフトはまったく別物です。私は両方のフレームワークについてある程度の知識を持っています (ただし、ここで通常見られる専門家レベルとはかけ離れています)。

Wicket: Web サイトの各ページには、HTML テンプレート ページと Java/Scala バッキング クラスがあります。Wicket の魔法は、HTML テンプレート ページを対応するクラスに接続し、テンプレート内の各 Wicket ID をクラス内の正しいメソッドにマップして、クライアントに送信される生成された HTML ページにデータが表示されるようにすることです。それでおしまい。Wicket は純粋な Web であり、それ以上のものではありません。Wicket で独自のグラフィカル コンポーネントを構成し、それらを継承するのは非常に簡単です。

Lift: Lift は、David Pollak が Rails で抱えていた問題への対応として作成しました。彼が必要としていたのは、パフォーマンスとセキュリティでした。Lift は Rails よりも高速で安全です。実際には非常に安全で、SQL インジェクション、CRSF、XXS、リプレイ攻撃を自動的に処理します。

Lift は Rails と同じことを行います (DB にマップします) が、Rails とは大きく異なります。Lift の一部の API は Ruby 構文 (インスペクターにアンダースコアと疑問符を使用) を使用しているため、Rails からの精神的遺産が目に見えます。これは、Scala 開発者を驚かせる可能性があります。Lift は Wicket のような古典的な MVC フレームワークではなく、Model-ModelView-View です。実際には、Lift は要求と応答のサイクルにより重点を置いています。イベント ドリブンの GUI プログラミング (Java Swing や .NET GUI など) をシミュレートするためのものです。これは、HTML 要素とアクションが同じ場所に記述されていることを意味します。

var inputName = ""
SHtml.text(inputName,s => inputName = s)

このコードは、次のような入力 HTML タグを作成します。

<input type="text" value=""/>

関数を変数に接続して、入力が格納されるようにします。HTTP GET/POST の代わりに AJAX を使用しても構造は同じです。

Lift は表現力豊かで強力ですが、それほど簡単ではありません。

これが正確でない場合は、私を修正してください!

于 2010-07-13T07:53:21.727 に答える
10

Lift でいくつかの Web アプリケーションを作成しました。多くの Maven + JSF/Facelets + Spring + Hibernate を使用する従来の Java の背景を持つ私は、Scala が大好きですが、Lift のいくつかの弱点に不満を感じていることを認めなければなりません。特に、スニペットでは、ビジネス ルールとインターフェイスの詳細が混在していることが多いと思います。また、包括的な単体テストの実装は非常に困難です。

私は Wicket に詳しくありませんが、現在 Play Framework を使用してアプリを作成しています。Scala のサポートはほとんどうまく機能しており、Akka モジュールもあります。Akka は、スケーリングが必要なあらゆる種類の重要なアプリケーションに最適です。

Play は非常に有望に見えますが、まだ活発な開発が行われていますが、ドキュメンテーションも非常に優れているようです。CRUD フレームワークは、すぐに機能状態に移行したり、あまり頻繁に変更されないデータ用のシンプルな管理インターフェイスを構築したりするのに便利です。

于 2010-07-12T23:47:56.583 に答える