Tomcat サーバーで実行する Web アプリケーションのプロジェクトを開始しようとしています。私は Scala (Groovy として働いているもう 1 つの代替手段) を使用することに決めました。私は今、仕事に適したツールを選択するという課題に直面しています。
私が開発する必要のあるプロジェクトには、JSON API を介してのみアクセスします。独自のデータベースと、それぞれ JSON と XML API を公開する 2 つの外部サービスの両方と対話します。また、アプリケーションがこれらの外部サービスとのさまざまな同期タスクを実行する定期的なジョブをスケジュールできる必要もあります。
データベースについては、Scala でモデルを定義し、スキーマを自動的に生成できるようにしたいと考えています。モデルを変更する必要が生じた場合は、それを処理するための移行が必要です。
このアプリケーションでは、Lift, Play! を評価しようとしています。2とスカラトラ。
リフトは私の最初の選択でした。これは 3 つのプロジェクトの中で最も成熟しており、安全性が高いと考えられているようです (セキュリティについては妥協したくありません)。さらに、Scala で最高の JSON 処理ライブラリと思われるものを備えています。それでも、少し試してみると、これが正しい選択かどうかわかりません。ドキュメントは、私が見た中で最高のものではありません。さらに、Record + Squeryl は Mapper よりも優れた抽象化のように思えますが、この使用法に関するドキュメントはさらに不足しています。最後に、Lift は確かに Web サービスの作成に使用できますが、その真の強みは状態の処理にあるようです。そのため、私のプロジェクトに追加の複雑さが必要であるとは確信していません。
遊ぶ!2の方がドキュメントが充実しているようで、私にはなじみがあるように見えます (私は Django のバックグラウンドを持っています)。繰り返しますが、デフォルトのデータベースの抽象化は私を満足させるものではありません。ANORM は SQL に依存しているため、型チェックには役立ちません。いずれにしても Squeryl を使用する必要があり、このユース ケースのドキュメントが適切かどうかはわかりません。さらに、Play! 2 アプリケーションは、現在のところ、私が望むよりも複雑です。Play! をインストールする必要があります。実稼働サーバー上で、これが私が働いているオプションであるかどうかはわかりません。それ以外の場合は、サーブレット コンテナーで動作させるためのプラグインがありますが、これは非常に新しく、安定性と信頼性がどの程度かはわかりません。
最後に、Scalatraを使用するオプションがあります。Scalatra は非常に簡単にセットアップでき、Web サービスを作成するために正確に設計されています。妥協点は、Scalatra が多くの機能を提供しないことです。既存の ORM と統合したり、アプリケーションのモデル部分を編成する方法を提案したりしません。また、cron やコマンド ライン タスクの設計にも役立ちません。また、プロジェクトの長期的な将来についても確信が持てません。
私の仕事に最適な選択は何だと思いますか?