模块化大型Grails应用程序的最佳实践?

时间:2010-05-23 13:19:36

标签: design-patterns grails plugins module

我正在研究的Grails应用程序正在变得非常大,将它重构为几个模块会很好,这样我们就不必每次都重新部署整个程序。

在几个模块中拆分Grails应用程序的最佳做法是什么? 特别是我想创建一个域类+相关服务的包,并在应用程序中将其用作模块。这可能吗?是否可以使用插件进行此操作?

3 个答案:

答案 0 :(得分:9)

这就是插件的用途。如果将大型应用程序拆分为多个模块,使用“内联插件”功能极其有用。只需添加

 grails.plugin.location."<plugin-name>" = "<path to plugin dir>" 

到您应用的grails-app/conf/BuildConfig.groovy。通过这样做,您不再需要在插件内的每次修改后运行package-plugininstall-plugin

有关使用插件的详细信息,请参阅Grails参考文档或其中一本可用书籍:“Grails权威指南”或“Grails in Action”。两者都绝对物有所值。

答案 1 :(得分:4)

Grails的插件是跨应用程序的代码/设计/架构可重用性的良好打包机制,或用于澄清多个作者的代码所有权(这似乎可能适用于大型应用程序),但我认为它们不会为您节省在部署痛苦方面 - 毕竟,代码仍然在应用程序中,应用程序仍然需要配置插件等。

是的,由于部署目标上的插件缓存,您可以节省一点时间,但是您可以在代码,测试和管理插件本身的版本控制方面获得额外的复杂性。

那就是说,我认为放置一个域名+服务插件是一个很好的重用模块 - 我们刚刚完成了 - 但它比部署问题。

IMO,一个大型Grails应用程序的“最佳实践”是考虑将应用程序拆分为较小的应用程序,通过数据库或内存缓存或通过某种形式的消息进行通信 - 更清洁“没有重新部署整个事物“并倾向于更好的可扩展性。在每个应用程序中使用插件,您希望代码/设计重用或模式隔离,并且将获得足够的重用以证明各种开销的合理性。

答案 2 :(得分:0)

同意,插件是可以接受的方式。这将有助于管理代码依赖关系图并将应用程序拆分为更易于独立测试和理解的部分。但是,插件仍然意味着在部署时作为一个应用程序编织在一起。我不确定您正在寻找部署的模式。