如何实现"远程"域?

rdm*_*ler 13 grails groovy grails-domain-class

想象一下两个共享域类的Grails应用程序.也许是一个Book域类.

一个应用程序被识别为数据的所有者,必须访问域数据.像亚马逊和亚马逊的网络服务.

我想拥有的应用程序将使用普通的域类并通过Web服务公开数据是微不足道的 - 在grails中没有问题.

但是在其他应用程序中实现域的最佳做法是什么?

  • 使用服务访问远程域而不是实现本地域类?
  • 实现一个本地域类,覆盖get() - 方法以获取远程数据并使用本地数据库作为缓存?
  • 您还有什么其他解决方案?

Chr*_*ris 7

Ryan Geyer有一篇非常有趣的文章模块化您的Grails应用程序域类,其中列出了3个解决此问题的方法:

  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应该使两个应用程序都能够拥有一致的数据视图,并避免每个应用程序拥有自己的不一致缓存.