2011-10-23 5 views
4

私たちの組織では、Grailsを使用して、複雑な アプリケーションをRESTインターフェイスで実現する予定です。Grailsは複雑なアプリケーションに適していますか?

  • ドメインクラスは必ずポリモーフィズムを多用するだろうために:私はことを考えると、フレームワークの拡張性 に懸念を持っています。私は、人々がGrailsでの継承に問題があると聞きました。たとえばbecause of this problem on JIRAです。

  • オブジェクトのツリーはデータベースに保存されます。 GORMでは、これはのような ものになるだろう:

    class Node 
    { 
        static def hasMany = [children: Node] 
    } 
    

    私たちは、依存関係を管理するための操作をカスケードの利益を得ることができると思ったが、私はそれがこのケースでどのように動作するかわかりません。

  • データベースは、数百万のオブジェクトを格納するように成長し、 という名前であり、Oracle、SQL Server、およびPostgreSQLで動作するはずです。この互換性を無料にするためにGrails DBマッピングを利用するのはどれほど現実的ですか?

  • カスタムドメインの制約を利用して、 ドメインオブジェクトの一貫性を確認する予定です。しかし、私はあなたがバリデーターでできることは限られていると感じています(例えば、他のオブジェクトのセットをロードできるかどうかわかりません)

  • ビジネスロジックはマルチスレッドになります

ほとんどの例の書籍とウェブでは、非常に単純な のアプリケーションが、独立したオブジェクトセットに対してCRUD操作を行っています。

私は、私は、アプリケーションが成長するとき のGrailsの特徴の非常に小さなサブセットを使用して終了することを怖い を正確に対応しなくてもよいのドメインクラスによって生成された足場、ウェブ・フロー、AJAX、または さえDBスキーマなど私のアプリケーションのニーズに合わせて

このような アプリケーションで誰かがGrailsを使って共有した経験がありますか?

+0

#3の場合は、3500万行のアプリと中程度の処理があります。最大の問題はgrailsではなく、データベースのチューニングでした。パフォーマンスについての壁に出くわしたときには、エグゼキュータとクォーツのプラグインが助けになるようなプラグインが1つありました。そして、ネット上で読んだことから、性能が賢明です。Grailsは非常にうまくやっています。あなたが次のtwitter/facebookを実行している場合を除き、あなたは気にする必要はありません。:) – Abe

答えて

8

ドメインクラスは、多形性を重視して使用します。例えば、 がGrailsの継承に問題があると聞きました。これは、JIRAのこの問題の です。

Grails 2.0では継承が改善されました。 Abstract Inheritanceのセクションを参照してください。報告されているJIRAバグに記載されている問題は、プロパティを一時的なものとして宣言することで回避できます。

オブジェクトのツリーはデータベースに保存されます。 GORMでは、これは次のようなものになります。

自己参照関係は問題ありません。詳細は、Grails in Actionの第3章を参照してください。

データベースは、何百万ものオブジェクトを格納するように成長し、Oracle、SQL Server、PostgreSQLで動作するはずです。この互換性を無料にするためにGrails DBマッピングを利用するのはどれほど現実的ですか?

Grailsは、さまざまな大規模なJ2EEアプリケーションで使用されるエンタープライズ品質のORMレイヤーであるHibernate上に構築されています。実行しているクエリのタイプに応じて、そのレベルで条件を使用して調整する必要があるかもしれませんが、Grailsはスケーリングを避けるための固有の制限はありません。

カスタムドメインの制約メカニズムを活用して、ドメインオブジェクトの一貫性をチェックする予定です。しかし、私はあなたがthisとクロスフィールド検証を行うことができます

(私はあなたが、例えば、他のオブジェクトのセットを読み込むことができるかどうかわからない)あなたがバリで何ができるか気持ちが限定されています。独自の custom validator classesを定義することもできます。サービスで実装

ビジネスロジックは、マルチスレッド

It is recommended not to store state in servicesになりますが、利用可能scopes異なるがあるとして、あなたは、マルチスレッド操作でそれらを使用することができます。もちろん、onusは同時アクセスを制御するためにあなたの上にあります。

私たちの組織では、Grailsを使用してRESTインターフェイスを備えた複雑なアプリケーションを実現する予定です。

GrailsではRESTインターフェイスがかなり楽しく簡単です。 Grails in Actionの第11章または第9/1313のBeginning Groovy and Grails from Novice to Professionalを参照してください。

Grailsは、SpringHibernateのような実績のあるJ2EEテクノロジで構築されています。 "すぐに使える"機能はこれまでのところあなたを惹きつけているかもしれませんが、フレームワークはあなたのニーズを満たすためにさまざまなレベルで構成可能です。したがって、本質的に、J2EEがうまくスケーリングできるかどうかを尋ねています。 Many people seem to say yes

+1

企業のPR部門の誰かが書いた回答のように聞こえますが、「お勧めです...」や「実績のある技術で構築されています」などの表現はどうですか?私は答えが質問の前に書かれているのか疑問に思っています。 –

7

TwitterはRuby on Railsで最初にリリースされました。最終的にはスケーラビリティーの問題があり、一部を置き換えなければなりませんでした(彼らはScalaでそれを行うことを選択しました)。最近、Ruby/Railsの残りの部分はすべてJavaに置き換えられており、効率が向上しているため、サーバの9/10を再利用することができました。

Ruby/Railsがニーズを満たしているかどうか尋ねますか?

地獄はい。彼らは、彼らがそこにいることを可能にするであろうと知っている言語を使用することができるスタッフと非常に迅速に商品を出しました。

後で問題に投げ込むお金のバケツがあったとき、彼らはしました。

私は、これがRuby on Rails、Java、そしてAgileの考え方の大きな成功事例であることを発見しました。

あなたはGrailsのと似たような話があります(それは少しもサポートかもしれませんが、あなたがする必要があるときに拡張することができますアーキテクチャ(J2EE)に近くなります)

6

(1)クラスで取り組むことができます。最適なソリューションではありませんが、複数の継承が必要になるまで機能する可能性があります。結局のところ、Grailsとの関係を処理する必要はありません。

(2)は、必要なものによって異なります。 GrailsとHibernate do support tree mapping。ちょっと振る舞うべきか分からなければ、後で何らかの複雑な振る舞いを後で工作する必要があります。

(3)です。 DB2、MySQL、hsql、Postgreには何十万ものレコードがあります。とにかく、時間によって証明された休止状態です。

(4)確かに、少なくともGORMを介して、バリデーターにDBへの問い合わせをしない方が良いでしょう。flush()は現在の一貫性のないセッションです。しかし、私はあなたがまだそこにSQLまたはwithNewSession{}を使用することができると信じています。

(5)サービスでのマルチスレッドやその他の問題はありません。リクエストスコープのサービスはシングルトンサービスを使用することができます(シングルトンが必要な場合)。後者は同時スレッドに完全対応しています。

はい、Grailsは市場投入が重要な場合にはすばらしいスタートです。

+0

市場投入までの時間が信頼性とパフォーマンスほど重要ではない場合、何をお勧めしますか? Groovyのためだけでなく、JVMのためのもの –

+0

それは主観的なものになるので、司会者は質問を閉じることができますが、私の場合はJava、Scala、Groovy for JVMしかありません。私の賭けはScalaになるでしょう。 –

0

この質問に対する最良の答えは、Grails Webアプリケーションフレームワークを使用して構築されたスタートアップの例を表示することです:Grails Startups

関連する問題