Ajax SmartGWT GWT客户机-服务器体系结构

Ajax SmartGWT GWT客户机-服务器体系结构,ajax,gwt,spring-mvc,smartgwt,gwt-platform,Ajax,Gwt,Spring Mvc,Smartgwt,Gwt Platform,我们计划在客户端富接口和SpringMVC中使用SmartGWT、GWT和相关框架,后者在服务器端返回JSON数据 作为调查的一部分,看看它是否符合我们的要求,以下问题需要一些答案: 在不使用任何框架的情况下从头开始构建GWT应用程序需要花费大量精力才能遵循标准MVP模式。但这更灵活,而且单元可测试,尽管耗时。GWT最佳实践建议使用MVP设计模式构建更大的应用程序 SmartGWT有自己的方法,您可以使用一个小部件,向其中引入一个数据源,然后就完成了。然而,要确定以模块化(或MVP)方式构建此类

我们计划在客户端富接口和SpringMVC中使用SmartGWT、GWT和相关框架,后者在服务器端返回JSON数据

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

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

  • 使用framework GWT平台和SmartGWT可以作为尝试MVP体系结构的一种选择,如本文所述。有什么建议吗

  • smart GWT的验证/消息/异常显示和其他通用功能支持有待研究

  • 客户机-服务器体系结构:在服务器端使用SpringMVC+SpringCore,在客户端使用GWT+SmartGWT可能是一个很好的开源技术堆栈,但是考虑到GWT默认使用RPC进行客户机-服务器交互,需要更好地评估这些技术的使用情况。(特别是身份验证/会话处理/安全性等)。有什么建议吗


  • 谢谢

    我目前正在开发一个智能GWT/GWT应用程序

    我目前对SmartGWT的看法是,它确实节省了很多时间,并且提供了一些好看、有用的小部件。也就是说,因为它是JavaScript库的包装器,所以它确实有一些警告,特别是在调试时。通常,与使用普通GWT(或带有非JavaScript包装器的库的GWT)相比,跟踪错误要困难得多

    尝试并评论您的问题:

  • 我还没有发现SmartGWT库在这方面存在问题。这可能与GWT推荐的方法不同,但这并不意味着您必须突然放弃所有最佳实践

  • 无法对此发表评论-尚未发现验证/消息/异常库是一个问题

  • 我们使用JAX-RS进行客户机/服务器通信,Smart GWT本机支持这种通信,并且很容易实现。它可能比GWT RPC更容易调试,因为它使用XML格式。我们只是使用Spring安全性来实现安全性,同样,没有任何问题

  • 我认为,对于我们来说,让我再次考虑使用Smart GWT的主要问题是可定制性:例如,当您使用它们的表单时,您无法在布局方面对它们做很多事情。Smart GWT有自己的处理方式,除非您想编写自己的组件(这并不理想,因为Smart GWT不建议混合使用Smart GWT和普通GWT组件),否则您几乎被锁定在这种方式中


    如果您愿意编写一个使用Smart GWT库且不需要太多定制的应用程序,那就好了。

    我从未使用过SmartGWT或任何其他丰富的库。我的观点可能有偏见,但我真的认为Gwt组件很容易定制和轻量级。这是我从没有过的感觉,来自SmartGwt的任何其他图书馆都是这种类型的

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

    使用framework GWT平台和SmartGWT可以作为尝试MVP体系结构的一种选择,如本文所述。有什么建议吗

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

    优点:您不必对视图进行单元测试,因为SmartGWT小部件应该已经过良好的测试。您只需在实际调用视图的位置测试presenter即可配置该小部件,并验证您是否正确调用它

    客户机-服务器体系结构:在服务器端使用SpringMVC+SpringCore,在客户端使用GWT+SmartGWT可能是一个很好的开源技术堆栈,但是考虑到GWT默认使用RPC进行客户机-服务器交互,需要更好地评估这些技术的使用情况。(特别是身份验证/会话处理/安全性等)。有什么建议吗

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

    RequestBuilder可用于HTTP获取JSON响应。无法帮助您实现智能GWT方法

    下面是一位使用Smart Gwt的Gwt平台用户,请阅读他的博客,它应该会启发您:


    在写这个答案的时候,博客已经停止了,但是很快就会回来。

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

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

    因此,您应该有一个非常具体、非常有说服力的理由来解释为什么要使用MVP并引入额外的代码:一个特定的设计目标,通常使用SmartGWT无法以更简单的方式实现

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

    追求MVP的一个有效理由可能是有两个完全独立的视图实现,一个在SmartGWT中,一个在普通GWT中。我知道,这不是一个很好的例子,很难想象有人需要这样做,但那是因为我们还没有任何开发人员来说明使用MV的原因