Rails、Grails などの Web フレームワークを見てきました。Spring Framework で Hibernate を使用してアプリケーションを実行することに慣れていて、もっと生産的なものが必要です。
私が気づいたことの 1 つは、Grails には魅力的な機能もある一方で、深刻な問題もいくつかあるということです。Grails のコントローラー:
1) ひどく実装されています。実行時にスーパークラスから拡張できないようです。ベース アクションとヘルパー メソッドを追加するためにこれを試しましたが、これにより grails が爆発するようです。
2) 廃止されたリクエスト パラメータ モデルに基づいています (フォーム バッキング オブジェクトではなく、はるかに優れています)。
3) テストが難しい。コマンド オブジェクトの扱いはまったく異なります...そして実際には、コントローラ コードを記述するよりもテストを記述する方がはるかに困難です。
4) コマンド オブジェクトの動作はまったく異なります。それらは事前に検証されてバインドされているため、基本的なパラメーター モデルよりも多くの矛盾が生じます。
5) コマンド オブジェクトは再利用できず、制約やフィールドなど、ドメイン クラスのほとんどのものを再利用するのは面倒です。これは、基本的なSpringで行うのは簡単です。Grails で行うのが簡単ではなかったのはなぜですか?
6) 生成される足場はまったくのがらくたです。挿入と更新を一般化するのではなく、実際には、create.gsp と edit.gsp の 2 つのビューで大量のコードをコピー/貼り付けします。ビュー自体は、わんわんやることの巨大な山です。これは、オブジェクトではなく低レベルのパラメーターを使用するという事実によってさらに悪化します。
統合テストは、Spring 統合テストよりも 30 倍遅くなります。それは嫌です。
一部のモッキング テストは、作成が非常に難しく、展開されたときに動作することが保証されていないため、高速な tdd テスト サイクルが妨げられていると思います。
taglibの追加など、ほとんどのことは、実行中にgrailsを台無しにするように見えます。サーバーの再起動の問題はまったく解決されませんでした。
Spring/Hibernate/Java を使用することが唯一の方法だと考え始めています。スタートアップにはかなりのコストがかかりますが、最終的には平準化されることを私は知っています。
Scala のような言語を使用できないのは残念です...慣用的に、Hibernate と互換性がないためです。
このアプリは、データベースに対するありふれた UI でもありません。それはいくらかありますが、前かがみになることはありません。Grails がコントローラー層にあるので、今は死ぬほど怖いです。
私ができることについての提案はありますか?