1

在过去的 2 天里,我一直在研究这个,现在差不多 3 天了。我觉得我已经在阳光下搜索了所有关于此事的内容(包括这些论坛),并且几乎都接受过教程。在我详细讨论这个问题之前,我只想快速概述项目的范围和计划,看看什么最适合它:

-大型应用程序,非平凡
-50+ 数据库表-庞大的
用户群 -
用户管理/身份验证/会话-事务 - 安全
-MVP (根据 GWT 推荐) -专注于性能和可伸缩性(自然 :),我在使用 GWT 之后all) - 更喜欢使用 Java 服务器端



我还阅读并观看了大型应用程序架构 (Google/GWT) 的所有最佳实践。在上一次关于涉及 GWT 的最佳架构实践的演讲中,我可以找到 Ray Ryan 在 2010 年发表的演讲,他在演讲中表示,他们认为 JavaBeans 和属性更改事件工作得不是很好,因此最好将 DTO 用于模型。

在我的搜索中,出现在最前沿的两个框架是 Seam 和 Spring。

坚持使用 MVP,我的领域大部分是具有胖客户端的数据服务。但是,我仍然希望服务器端具有安全性和会话功能,因为我希望用户能够保持状态,即使他们不使用 cookie 并且他们最终会刷新。我还希望有一个像 Hibernate 这样的 ORM 来管理很多事务方面。我想仍然使用 RequestFactory 并且一直在考虑使用 Spring。

我想我可以将我的问题缩小到:

考虑到上述情况,对于大型 GWT 应用程序,特别是服务器端和与 GWT 的集成,推荐的应用程序堆栈是什么?

这是我的第一个这种规模的项目,我最不想做的就是走上错误的道路,浪费大量的时间和精力。非常感谢您的帮助,我真的只是想弄清楚这一点,这样我就可以回到编码而不是谷歌搜索地球的尽头;)。

-赛斯

我还已经查看了 GWT 中应用程序的最佳架构,我发现它可能与此最接近,但它并没有真正回答我的问题,而且我觉得我的用例更具针对性

4

1 回答 1

3

我没有任何经验Seam,但是我正在做一个相对较大的项目GWT,在前端和Spring后端使用,到目前为止它工作得非常好(RequestFactory、JPA2/Hibernate、PostgreSQL)。顺便说一句,您还可以查看JBoss Erai

使用的好处Spring是,添加新功能非常容易。例如,我添加了对openid 身份验证的支持,我所要做的就是在 maven 中定义一个额外的依赖项,并在配置文件中定义一些额外的行,现在通过 google、facebook、twitter 帐户的身份验证可以开箱即用。
这种分层方法有很多优点。

但是如果你真的坚持开发 GWT 应用程序(MVP 等)的最佳实践,你最终会得到两个或多或少独立的项目。当您开发传统的 Spring MVC/Web Flow 应用程序时,这有点不同,您或多或少只有一个项目(顺便说一句:查看 Thomas Broyer 的gwt maven 原型,它可以帮助您提出一个好的项目结构)。

除此之外,当您在客户端使用 MVP 时,您的后端实际上只会充当数据服务,为您的 GWT 客户端提供数据。所有流同步都将在您的 GWT 应用程序中处理。
因此,您可能不会使用许多后端功能(即 的 MVC 部分Spring MVC)。
RequestFactory用于后端和前端之间的数据通信,并且对于CRUD应用程序来说效果非常好(它也支持 Android btw)。但是,如果您想支持更多的客户,您可能宁愿使用一种Restless方法。同样,通过Spring在后端使用,为您的应用程序添加支持相对容易,Restless并且有几个 3rd 方库支持 GWT 中的 RESTful 服务(RestyGWT,休息)。

以下是关于开发过程的一些想法:

  • 使用依赖管理系统,例如maven. 它使团队开发和将项目拆分为可管理的单元/模块变得非常容易(例如,GWT maven 应用程序可以拆分为前端部分(GWT)、后端(Spring)部分和共享(comong DTO,等)部分。
  • 尝试进行测试驱动开发(TDD 或 BDD)。例如,在您在 Spring 后端(即 getAllProducts())中创建服务函数之前,为它编写一个单元测试。这也有助于创建一个好的服务层,因为通过编写单元测试,您可以定义服务层应该做什么。
  • 过早的优化是万恶之源》:不要在早期优化上花太多时间。
  • 考虑购买/使用JRebel,特别是如果您使用Spring. 相对较大Spring的应用程序可能具有相对较大的启动时间。JRebel 可帮助您更改后端中的类,而无需重新加载/重新启动应用程序。它节省了很多时间。
  • 在域级别实现ACL并非易事。里面有ACLSpring Security,它们适用于简单的用例,但是如果你有复杂的用例(例如,根据 ACL 条目过滤项目列表),如果你想有效地做到这一点,这可能会非常复杂。另一方面,Spring使用另一个库(即 Apache Shiro)相对容易。此外,您必须确保在前端显示正确的控件(即,如果用户没有编辑权限,则没有编辑按钮等)。使用 JSP 很容易,因为您在后端创建 UI(HTML 页面)。在GWT你必须自己做。
于 2012-08-27T08:39:58.657 回答