SmartGWT GWT客户端服务器架构

时间:2011-02-28 09:15:33

标签: ajax gwt spring-mvc smartgwt gwt-platform

我们计划为客户端丰富的接口使用智能GWT,GWT和相关框架,并在服务器端返回JSON数据的Spring MVC。

作为调查的一部分,看它是否符合我们的要求,以下问题需要一些答案:

  1. 在不使用任何框架的情况下从头开始构建GWT应用程序需要花费大量精力来遵循标准MVP模式。但这是更灵活和单元可测试,虽然耗时。 GWT最佳实践建议使用MVP设计模式来构建更大的应用程序。
  2. SmartGWT有自己的方法,您可以使用窗口小部件,将数据源引入其中,然后就完成了。然而,要确定以模块化(或MVP)方式构建此类智能GWT组件的最佳实践。任何建议

    1. 使用框架GWT-platform和SmartGWT可以尝试MVP架构,如此处所述。有什么建议吗?

    2. 验证/消息/例外显示以及智能GWT的其他通用功能支持尚待研究。

    3. 客户端服务器架构:在服务器端安装Spring MVC + Spring核心,在客户端使用GWT + Smart GWT可能是一堆很好的开源技术,但鉴于GWT默认使用RPC作为客户端服务器交互,这些需求的使用需要更好地评估。 (尤其是身份验证/会话处理/安全性等)。有什么建议吗?

    4. 由于

3 个答案:

答案 0 :(得分:2)

我是使用SmartGWT或任何其他丰富的库。我的意见可能有偏见,但我认为Gwt组件易于定制和轻量级。这是我从未感觉到的来自SmartGwt的任何其他类型的图书馆。

话虽如此,这是我对你关注的两个问题的回答:

  

使用框架GWT平台和SmartGWT可以尝试MVP架构,如此处所述。有什么建议吗?

好吧,要保持MVP在这方面,只需从演示者设置数据源。在您看来,SmartGWT小部件应该是“被动的”并等待来自演示者的配置。

优点:您不必对视图进行单元测试,因为SmartGWT小部件应该已经过充分测试。您只需测试实际调用视图的演示者,以配置该窗口小部件并验证是否正确调用它。

  

客户端服务器架构:在服务器端安装Spring MVC + Spring核心,在客户端使用GWT + Smart GWT可能是一堆很好的开源技术,但鉴于GWT默认使用RPC进行客户端服务器交互,使用这些需要得到更好的评估。 (尤其是身份验证/会话处理/安全性等)。有什么建议吗?

RPC是一个选项,而不是默认通信。还有另外两种类型的通信(如果您尝试像DeRPC这样的实验功能,甚至更多):RequestBuilder和RequestFactory。

RequestBuilder可用于使用JSON Response进行HTTP GET。无法帮助您实现智能GWT方法。

这是使用Smart GWT的Gwt-Platform的用户,阅读他的博客,它应该启发你: http://uptick.com.au/blog

在撰写此答案时,博客已关闭,但很快就会回来。

答案 1 :(得分:0)

我目前正在开发Smart GWT / GWT应用程序。

我对Smart GWT的看法目前是它确实节省了大量时间,它提供了一些好看,有用的小部件。也就是说,因为它是JavaScript库的包装器,所以它确实有一些注意事项,特别是在调试时。通常情况下,跟踪错误要比使用普通GWT(或者不是JavaScript包装器的库的GWT)要困难得多。

尝试评论您的问题:

  1. 我没有发现Smart GWT库在这方面存在问题。它可能与GWT建议的方式不同,但并不意味着您突然不得不放弃所有最佳实践。

  2. 无法对此发表评论 - 未发现验证/消息/异常库存在问题

  3. 我们使用JAX-RS进行客户端/服务器通信,Smart GWT本身支持并且非常容易实现。调试可能比GWT RPC更容易,因为它使用XML格式。我们只是使用Spring Security来保证安全性,同样没有问题。

  4. 我认为让我对使用Smart GWT再次三思而后行的主要事情就是可定制性:例如,当您使用表单时,就布局而言,您不能对它们做很多事情。 Smart GWT有自己的做事方式,除非你想编写自己的组件,否则你几乎都会被锁定(这是不理想的,因为Smart GWT不建议混合使用Smart GWT和普通的GWT组件)。

    如果您很乐意编写一个使用Smart GWT库并且不需要太多定制的应用程序,那就没关系了。

答案 2 :(得分:0)

您应首先考虑使用MVP的目标。

如果您查看SmartGWT样本,您会发现它们已经拥有清晰且极少的代码。您不能通过引入MVP来简化或澄清任何示例,您只能添加其他代码和复杂性。

因此,您应该有一个非常具体,具体,非常令人信服的理由,为什么要使用MVP并引入额外的代码:通过正常使用SmartGWT以更简单的方式无法满足的特定设计目标。

很难找到这种有效的目标,因为SmartGWT非常灵活,已经支持通过Selenium进行测试,甚至还有Selenium IDE扩展和对Selenium RC的支持。

追求MVP的有效理由的一个可能示例可能是两个完全独立的视图实现,一个在SmartGWT中,一个在简单GWT中。我知道,这不是一个很好的例子,很难想象有人需要这样做,但那是因为我们还没有让任何开发人员出现并明确表示将MVP与SmartGWT一起使用,而不是非常模糊的灵活概念。 / p>

如果您要承担使用MVP的任务,我认为您应该充分理解这种情况,以便说“我们需要做X,如果我们正常使用SmartGWT需要6个月,如果我们添加MVP,需要3“。据我所知,没有人确定过这样的情景。