我应该为GWT应用程序构建REST后端吗
问题内容:
我正在计划一个新的应用程序,并一直在尝试使用GWT作为可能的前端。我面临的设计问题是这个。
我应该使用选项A:GWT-RPC并快速构建应用程序吗
选项B:使用带有所有出色的@ Controller,@ Service,@ Repository批注的Spring MVC
3.0构建REST后端,并构建客户端库以使用GWT覆盖功能和GWT Request构建器与后端进行对话吗?
我对这种设计的利弊以及人们的经验感兴趣吗?
问题答案:
问自己一个问题:“我需要在非GWT前端重用服务器端接口吗?”
如果答案是 “否,我将只有一个GWT客户端” :您可以使用GWT-
RPC,并充分利用可以在服务器和客户端上使用Java对象这一事实。这也可以使通信更有效率,至少在与一起使用时<inherits name="com.google.gwt.user.RemoteServiceObfuscateTypeNames" />
,这会将类型名称缩短为较小的数值。您还将获得更好的错误处理(使用Exception),类型安全性等优点。
如果答案是 “是的,我将使我的服务可用于多种前端”
:您可以将REST与JSON(或XML)结合使用,非GWT客户端也可以理解。除了切换客户端之外,这还使您将来可以更轻松地切换到其他服务器实现(可能是非Java)。缺点是,您可能必须在GWT客户端编写包装程序(JavaScript覆盖类型)或转换代码,才能从JSON对象构建漂亮的Java对象。部署新版本的服务时,您必须格外小心,这使我们回到缺乏类型安全性的状态。
当然,第三个选择是同时构建两者。如果公共REST接口无论如何都应与GWT-RPC接口不同,我会选择此选项-也许仅提供易于使用的服务的子集。