13

ドメインクラスを共有する2つのGrailsアプリケーションを想像してみてください。たぶんBookドメインクラス。

1つのアプリケーションがデータの所有者として識別され、1つはドメインデータにアクセスする必要があります。アマゾンやアマゾンウェブサービスのようなもの。

所有しているアプリケーションが通常のドメインクラスを使用し、Webサービスを介してデータを公開することは簡単だと思います。Grailsでは問題ありません。

しかし、他のアプリケーションにドメインを実装するためのベストプラクティスは何でしょうか?

  • サービスを使用してリモートドメインにアクセスし、ローカルドメインクラスをまったく実装しませんか?
  • ローカルドメインクラスを実装し、リモートデータをフェッチしてローカルデータベースをキャッシュとして使用するためにget()-メソッドを上書きしますか?
  • 他にどのような解決策が思い浮かびますか?
4

3 に答える 3

7

Ryan Geyerが、この問題の3つの解決策をリストした非常に興味深い記事「Grailsアプリケーションドメインクラスのモジュール化」を公開しています。

  1. RESTful JSONサービスとして-Grailsでこの設定を簡単に取得できますが、自動GORM機能が失われます。

  2. ドメインクラスをライブラリJARファイルに分離し、他の両方のアプリケーションでそのライブラリを参照します。これは最初に聞こえるほど簡単ではありません

  3. Grailsプラグインを作成します。ドメインオブジェクトをプラグインに入れます。その後、各アプリケーションはこのプラグインをインポートできます。その後、必要に応じて、さまざまな機能を備えたさまざまなコントローラーを作成できます。このためのサンプルコードは、次の場所で入手できます。

    git clone git://ec2.nslms.com/grails/blog_example_modular

Ted Naleidは、投稿の後半ですばらしいヒントを提供し、推奨しています...

"grails-app / conf / BuildConfig.groovyファイルを作成し、プラグイン名とソースへのパスをその中に入れます。...これを行うと、アプリケーションはドメイン/コントローラー/サービスなどへのライブ変更を確認します。クラスは実際に現在のアプリにあるかのように使用され、変更を加えるときにプラグインを再パッケージ化して再インストールする必要はありません。」

memcacheを使用すると、両方のアプリケーションがデータの一貫したビューを持つことができ、個々のアプリケーションが独自の一貫性のないキャッシュを持つことを回避できます。

于 2012-05-18T14:38:06.493 に答える
4

ドメインクラスのJARファイルを作成し、他のgrailsアプリケーションへの参照を追加できると思います。

于 2012-05-25T05:42:47.980 に答える
2

別の興味深い解決策を見つけました:

Riakは、ファーストクラスのRESTAPIを備えたキー/値データベースです。ほとんどのGORM機能(リレーション、動的ファインダーなど)をriakのREST APIにマップするriak用のgrailsプラグインがあります:http://grails.org/plugin/riak

ここで、まだテストしていない部分があります。grails2.0のデータソース機能を使用する場合、これらの「リモート」ドメインのみをriakデータベースに接続できるはずです。

その結果、riakデータベースにドメインが保存され、いくつかのアプリケーションがクリーンなRESTAPIを介して手間をかけずにドメインにアクセスできるようになります。

わかった。これは、私の質問がいかにばかげているかも示しています。同じSQLデータベースを介して複数のアプリを接続しても同じです。しかし、Webサービスのようなもっとファンキーなものが欲しい場合もあります。

于 2012-05-24T07:36:33.607 に答える