背景
我正在使用GWT、Java和EclipseLink开发一个web应用程序。这些选择中的每一个都是我为实现这个计划所做的选择。GWT是唯一的选择,因为与Spring这样的东西相比,GWT没有确切的把握。现在,我使用GWT小部件实现客户机,使用GWT RequestFactory实现来自EclipseLink的实体的服务器-客户端通信。
视图
因此,我认为GWT主要是一个具有简单的服务器-客户端通信框架的小部件库。这与我看待Spring的方式是一样的,Spring是一个小部件库,它有一个更高级和更复杂的框架来控制服务器--客户机通信--可能它不像GWT那样方便地实现AJAX。
因此,考虑到这些,我认为GWT是理解并最终使用Spring的垫脚石。然而,在这个话题上,我再次遇到了几个主题,比如这个一和那个一,它们似乎违背了最初关于Spring是什么以及它对GWT意味着什么的概念。
问题
发布于 2012-12-05 09:03:30
这取决于您计划如何在应用程序中使用GWT。
GWT最适合用于单个主页的web应用程序。
这意味着所有的流同步和业务逻辑都是使用GWT在客户端完成的。
这就是GWT真正闪耀的地方(更多细节请参见这里 )。
然而,如果您沿着这条路走下去,您将最终得到两个截然不同的应用程序。例如,您将使用GWT开发前端,并使用Spring开发后端。后端(Spring或您使用的任何东西)只会充当一个“数据存储”,为您提供要在GWT前端显示的数据。因此,您可能不会使用任何Spring MVC's功能。
当然,您也可以使用Spring MVC并只使用GWT向站点添加Web2.0ish功能,但对于该用例,我建议使用jQuery、闭包或其他javascript框架。
对你的问题:
对GWT和Spring的观点是否存在误解?如果是这样的话,一些简短的指导意见将是非常感谢的!
如果您按预期使用GWT (单个主机页web应用程序),那么就不会使用Spring的MVC部分。您仍然可以使用authorization,authentication,ORM和Spring框架的许多其他组件,但是GWT处理所有视图。
Spring或多或少只是作为GWT前端应用程序的数据存储。这就像有两个独立的应用程序,通过通信协议(RequestFactory、REST、RPC等)连接在一起。
在Spring框架中,GWT小部件的对立面是什么?
在Spring框架中,GWT小部件没有真正的对立面(可能对一些扩展JSF)。Spring是关于服务器端的,所以所有视图都是在服务器端创建的。而GWT完全是关于客户端的。
在Spring框架中,GWT RequestFactory的反部分是什么?
RequestFactory是前端应用程序(GWT)和后端应用程序(Spring)之间的通信协议。当您使用Spring MVC时,您不需要任何通信协议,因为视图是在您已经拥有数据的服务器端生成的。
发布于 2012-12-05 09:05:49
GWT不是一个小部件库,而是一个完整的框架,用于生成在客户端而不是服务器端运行的完整web应用程序。其基本区别在于spring (MVC模式)以服务器为中心,因此它连接到ddbb,执行业务逻辑并生成视图发送到客户端,因为GWT (MVP模式)在生成视图的浏览器中运行演示器,而它只是连接到服务器以获取结果或对象(远程方法)。
说,根据您的GWT应用程序,您可能需要或多或少的逻辑在服务器端,以及其他元素,如ddbb,spring等。
何时选择GWT或任何其他框架的决定取决于您是否需要运行在浏览器中的富应用程序(类似桌面)。
从逻辑上讲,您可以将GWT和spring混合到任何复杂程度,但逻辑方法是让spring负责数据模型及其业务逻辑,而GWT负责其余的工作。
学习这种组合的最好方法是探索一个用春袋鼠生成的小项目。它可以创建一个完整的项目,所有设置为maven,spring,gwt,mvp和rf。只需安装ro1.2.2并在roo控制台中运行这组命令:
project --topLevelPackage com.project.contacts
persistence setup --provider ECLIPSELINK --database HYPERSONIC_PERSISTENT
database properties set --key database.url --value jdbc:hsqldb:/var/tmp/contacts.db
entity jpa --class com.project.contacts.domain.Contact --testAutomatically
field string name --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string surname --notNull --sizeMin 1 --sizeMax 30 --class ~.domain.Contact
field string phone --notNull --sizeMin 1 --sizeMax 15 --class ~.domain.Contact
web gwt setup
web gwt all --proxyPackage ~.client.proxy --requestPackage ~.client.request
quit然后执行
mvn gwt:run我在roo中看到的主要问题是,当您修改模型时,它使用' aspectj‘更新托管类,但是您可以在项目设置后使用eclipse删除roo依赖项和aspectj文件。
发布于 2013-07-23 15:10:24
查看你的后端的Objectify。简单多了。
https://stackoverflow.com/questions/13714018
复制相似问题