Tomcatサーバーで実行する必要があるWebアプリケーションのプロジェクトを開始しようとしています。私はScala-私がGroovyで作業する他の代替手段-本質的に型安全のために行くことにしました。今、仕事に適したツールを選択するという課題に直面しています。
開発が必要なプロジェクトには、JSON APIを介してのみアクセスします。独自のデータベースと、それぞれJSONおよびXML APIを公開する2つの外部サービスの両方と対話します。また、アプリケーションがこれらの外部サービスとのさまざまな同期タスクを実行する定期的なジョブをスケジュールできるようにする必要もあります。
データベースの場合、モデルをScalaで定義し、スキーマを自動的に生成できるようにしたいと考えています。モデルを変更する必要が生じた場合は、それを処理するための移行を行いたいと思います。
このアプリケーションでは、Lift、Play!を評価しようとしています。 2とScalatra。
リフトは私の最初の選択でした。これは3つのプロジェクトの中で最も成熟しており、非常に安全であると考えられています(セキュリティについて妥協したくない)。さらに、Scalaで最高のJSON処理ライブラリと思われるものを備えています。それでも、少し手を加えた後、これが正しい選択になるかどうかはわかりません。ドキュメンテーションは私が見たものと全く同じではありません。さらに、Record + Squerylは、Mapperよりも抽象化が優れているように見えますが、この使用法のドキュメントはさらに不足しています。最後に、Liftは確かにWebサービスの作成に使用できますが、本当の強みは状態の処理にあると思われるため、プロジェクトにさらに複雑さが必要であるとは思いません。
Play!2の方がドキュメントがよく、見慣れているようです(私はDjango背景から来ました)。繰り返しますが、デフォルトのデータベース抽象化は実際には安心してください:ANORMはSQLに依存しているため、型チェックには役立ちません。とにかくSquerylを使用する必要があります。また、このユースケースのドキュメントが適切かどうかはわかりません。さらに、Play!2アプリケーションのデプロイは、思ったよりも複雑な瞬間です。実稼働サーバーにPlay!をインストールする必要がありますが、これが私が機能するオプションかどうかはわかりません。それ以外の場合は、サーブレットコンテナーで動作させるためのプラグインがありますが、は非常に新しく、どれほど安定/信頼できるかはわかりません。
最後にScalatraを使用するオプションがあります。 Scalatraのセットアップは非常に簡単で、Webサービスを作成するように設計されています。妥協点は、Scalatraが多くの機能を提供しないことです。これは、既存のORMと統合したり、アプリケーションのモデル部分を整理する方法を提案したりせず、cronまたはコマンドラインタスクの設計に役立ちません。プロジェクトの長期的な将来についてもわかりません。
私の仕事に最適だと思いますか?
あなたがMVCのバックグラウンドから来ているなら、Playは最も親しみを感じるでしょう。 LiftはMVCではなく、頭に巻き付けるのに時間がかかります。
Jersey、Spring MVC、 Dropwizard 、Restlet、RESTEasyなどのJavaベースのフレームワークでScalaを使用できない理由はありません。または、ScalaをGrailsで使用するには、GrailsでJavaを使用します。注-Groovyにはバージョン2.0以降のタイプセーフがあるため、検討する必要があります。
Scalatraについて考えている場合は、忘れないでください Spray 、 nfiltered 、 BlueEyes ...
Matt Raibleの Webフレームワークの包括的な比較 を必ずチェックしてください。そして、これらの他のSOの質問: Rest APIサーバーのScalaフレームワーク? 、 Akkaを使用してREST Webサービスを実装する方法? =
あなたはすでにいくつかの候補者を与えましたが、ティム・ペレット(Lift in Actionの作者)によるこの講演をお勧めします。彼はscala webframeworks: http://skillsmatter.com/ podcast/scala/scalable-language-web