【问题标题】:Grails as single app or different back-end and front end app [closed]Grails 作为单个应用程序或不同的后端和前端应用程序 [关闭]
【发布时间】:2014-09-28 22:20:36
【问题描述】:
我们是 grails 新手,担心以下问题:
可扩展性问题
对不同的应用程序使用相同的后端
所以坚持使用单一 grails 是个好主意,或者我们应该分离关注点,甚至使用其他框架(如 node.js)作为前端使用 rest。
其次我不太清楚,我们应该将业务逻辑放在圣杯应用程序中的哪个位置。我认为理想的位置应该是服务
我们正在研究 Angular.js,因为它似乎比 gsp 页面更快,前端的当前风格和与 grail 的集成也更容易。想检查这个选项是否正确。
【问题讨论】:
标签:
node.js
angularjs
grails
architecture
grails-orm
【解决方案1】:
Grails 非常适合快节奏的开发需求,当您对它有基本的了解时,您会喜欢上它。您可以使用任何框架/语言编写性能不佳的应用程序。我推荐的一件事是对底层持久性库 Hibernate 有一个很好的理解。如果您了解它的工作原理,它应该可以帮助您避免在数据库级别犯任何愚蠢的错误。
对于您问题的第一部分,您的网络应用程序的可扩展性实际上并不取决于您选择使用的语言/框架,而是取决于您的应用程序是如何构建的。您可以在 Grails 中构建一个可扩展的 Web 应用程序,就像您可以在 C++ 中构建一个非常慢的应用程序一样。如果 Grails 是您想使用的框架,请使用它;如果需要,您可以随时用 Java 或其他快速语言重写慢速部分。 (毕竟,这就是 Twitter 对 Scala 所做的。)
在我们公司,我们使用 grails 作为客户端交互/许可服务器,并使用多个 Node.js 服务器进行分析。因此,客户端提供的所有内容都存储在 grails 服务器上,然后将功能数据发送到 Node.js 服务器集群进行进一步处理。来自 Node.js 服务器的分析数据由 grails 服务器使用 http builder 获取,并用于在仪表板上绘制图表和数据。
//------------- 更新问题的答案 ----------
- Node.js 是服务器端技术,它不适用于前端,即客户端
- 在 grails 中,您将所有传入(到服务器)和传出(从服务器)的内容写入控制器。
- 当您的所有业务逻辑/计算/数据库查询进入您的服务方法时。完成后,通过 return 语句将计算数据发送回控制器,控制器将在 GSP 上发送/显示它。
附: - 一旦你掌握了 GSP 标签,你就会开始爱上 GSP,因为它很容易做很多事情。
【解决方案2】:
为了简单起见:您可以使用 Grails 构建整个应用程序堆栈。您可以以任何适当的方式拆分/合并您的服务。您可以使用任何疯狂的 JS 前端框架构建应用程序,或者仅使用 REST API 构建应用程序。或者将它们混合在一起。
此外,您可以使用plugins 轻松模块化您的应用程序。它们的好处是,它们可以独立运行,这意味着您可以将服务用作应用程序的一部分,或者在应用程序之外运行服务,这是您的决定,而不是框架限制!
更新:
Grails 有一个非常重要的观点:Groovy 是一种 JVM 语言。这意味着,您可以直接在项目中使用世界上任何 lava 库。此外,您的开发人员必须只学习 Groovy,因为它在整个应用程序中无处不在,无论是域类、服务还是 GSP。