架构问题:GWT或Vaadin创建桌面应用程序?

架构问题:GWT或Vaadin创建桌面应用程序?,gwt,desktop-application,wicket,ria,vaadin,Gwt,Desktop Application,Wicket,Ria,Vaadin,我们计划创建一个feedreader,作为一个windows桌面和iPad应用程序。由于我们希望能够在这个应用程序中显示网站和运行(我们自己的)JavaScript,我们考虑将应用程序作为HTML/CSS/JavaScript交付,只需使用一些.NET控件或Cocoa Touch webbrowser组件包装即可。因此,手头的任务是找出使用哪个框架来创建要嵌入到应用程序中的HTML/CSS/JS文件 对于HTML/CSS/JavaScript的开发,我们很乐意使用Vaadin、GWT或其他框架,

我们计划创建一个feedreader,作为一个windows桌面和iPad应用程序。由于我们希望能够在这个应用程序中显示网站运行(我们自己的)JavaScript,我们考虑将应用程序作为HTML/CSS/JavaScript交付,只需使用一些.NET控件或Cocoa Touch webbrowser组件包装即可。因此,手头的任务是找出使用哪个框架来创建要嵌入到应用程序中的HTML/CSS/JS文件

对于HTML/CSS/JavaScript的开发,我们很乐意使用Vaadin、GWT或其他框架,因为使用Java比使用JS要好得多。经过短暂的头脑风暴后,我们倾向于使用Vaadin,因为UI组件非常好,但我担心大部分繁重的工作将在服务器上完成,而不是在客户机上完成(这也不太好)。我们也希望使用GWT,但是Java到JS的编译需要花费大量的时间和额外的步骤,并且在过去使用GWT时会减慢开发时间

问题是:您会选择哪种开发框架(考虑到您想要实现这个项目,并且到目前为止您主要使用Java)以及原因?如果有更好的框架选项(),请告诉我

编辑:应用程序需要不时地与我们的服务器通信(例如,同步已读取的内容),但主要应该获取xml提要本身。因此,我希望生成的大部分代码都可以嵌入到应用程序中,而不需要我们的服务器进行繁重的活动


Edit2:我们(即使你怀疑,事实上)预计至少有10000个用户。

Vaadin只是基于GWT的框架,但有两个非常重要的特性:

  • 不需要运行GWT编译器。它是纯java。当然,如果不添加插件,那么gwt编译器必须运行
  • 您不需要编写通信代码。因此,您不需要解决DTO问题,不可序列化的对象映射,也不需要编写servlet
我在工作中使用Vaadin已经一年了,我们还没有出现性能问题(有大约500个用户的桌面应用程序)。IMO非常好的解决方案是将Vaadin仅用于UI,将逻辑移动到独立的bean,并使用Spring或Guice连接这两个元素

在这种情况下,您应该使用MVP模式和域驱动开发

  • Bussines bean是使用视图接口发送响应的域对象和逻辑
  • 自定义Vaadin组件(可以扩展标准组件)实现视图接口
如果Vaadin不适合您,那么当您决定更改UI引擎时,这种方式是很好的。只需重写guice/spring映射并编写视图接口的新实现。

我的3美分:

如果您决定使用vaadin,您将受益于已经很好看的组件。因为你不想写(很多)CSS,vaadin已经是一个很好的开箱即用的东西了。然而,Vaadin是一个服务器端框架。即使不涉及获取任何数据(例如从一个选项卡移动到另一个选项卡),用户界面交互也会影响后端

如果您决定使用GWT,则必须至少对应用程序进行样式化(这并不难)。还有编译时间长的问题(但您可以在托管模式下进行测试和调试,该模式允许您在不编译的情况下运行应用程序,然后仅在部署时编译)。gwt的主要优点是,您可以控制发送到网络的内容,对于不需要从后端获取数据的UI交互,它将完全在客户端工作。开发人员将决定何时向后端发送请求。(在GWT中执行RPC请求非常简单)


希望这能帮助您做出决定。

根据我在Vaadin的经验,我愿意这样做,但您的要求有点倾向于纯GWT

  • Vaadin需要服务器和服务器连接。如果主要构建离线桌面应用程序,这可以通过嵌入式Jetty解决。(仅在需要时与在线服务同步),但对于iPad,您需要立即在线连接以启动Vaadin应用程序
  • GWT完全在客户端运行,您可以构建一个JavaScript浏览器应用程序,仅在需要时连接
因为Vaadin的开发速度要快得多,所以你可以先开发一个小型的Vaadin版本,看看这在iPad上是否真的是个问题

另一方面,如果可以假设立即联机,则可以完全跳过本地服务器安装。只需在线运行应用程序,并使用操作系统默认浏览器控件(即您建议的.NET控件)实现桌面版本。那么瓦丁就容易了