问题 Vaadin 7 - 良好的框架但不适合我的项目[关闭]


Vaadin是一个很棒的框架,开发丰富多彩的Web应用程序非常有用。然而,我对其中发生的一些意想不到的事情感到非常沮丧。我知道很难创建这样一个框架,其中客户端和服务器端组件可以同时编码。它节省了我的时间。

但是,我不知道为什么我收到通信错误,会话过期通知,应用程序有时在服务器环境中冻结。但是,Everything在我的本地环境中运行得非常好。

谁能告诉我为什么我要面对这些问题?

问题:

  1. 沟通问题? (http://dev.vaadin.com/ticket/8466
  2. 会话过期消息? (我将会话设置为在300分钟后过期。但它发生在之前。但是,并非所有时间)
  3. 应用程序有时冻结。 (我可以点击按钮,但没有用..没有动作..唯一的办法就是重启)
  4. 在IE中表现非常糟糕。 (我知道这对所有网络应用程序都很常见。但是,与其他浏览器相比,我的应用程序; IE完全糟透了。
  5. 在treetable中加载延迟对我来说真的很有帮助。
  6. ICEPush附加组件,完美地完成其工作。但是,过了一段时间它在控制台中给了我异常。(https://vaadin.com/forum#!/thread/234493/4528542
  7. 如果我在浏览器中执行任何操作。它反映在另一个浏览器中(应用程序的另一个实例。)http://dev.vaadin.com/ticket/10208
  8. 上下文菜单插件:易于实现且非常棒。但是,在慢速网络上多次右键单击时,我会例外。https://vaadin.com/forum#!/thread/119996/4455717
  9. 恼人的异常消息。有什么需要在UI上显示它?

我已经把大部分时间都花在了论坛上。我真的得到了你们的支持。但是,我不想。

一世 疑似 以下是导致上述问题的原因。

  1. 我的Vaadin服务器在英国,API服务器在美国,这是通信问题的原因吗?
  2. 我从Util类的函数构建组件。这是我列表中没有问题7的原因。喜欢这个, ComponentsBuilder.buildVerticalLayout();

2128
2017-12-09 05:09


起源

对于您的疑问编号1:您可以考虑在您的vaadin服务器上创建代理服务,该服务异步地将请求转发到您的API服务器。 - Atmocreations
您的vaadin应用程序是否在群集上运行?这可能是问题#2的原因。由于会话复制问题,可能会发生这种情况。 - Andrew


答案:


瓦丁8和10

在这几年中,很多事情发生了变化。


沟通问题? (http://dev.vaadin.com/ticket/8466

该票证已迁移到 问题2178 GitHub。现在标记为关闭。似乎是Tomcat和浏览器中的错误,现在已修复。

这是使用Tomcat 7时某些浏览器的cookie处理导致的错误,并且在应用程序名称后的地址中没有使用尾部斜杠(即 HTTP://主机/应用 代替 HTTP://主机/应用/)。

您可以通过将context属性sessionCookiePathUsesTrailingSlash设置为false来解决此问题。


会话过期消息? (我将会话设置为在300分钟后过期。但它发生在之前。但是,并非所有时间)

我没有试过这个,我只是在这里猜测,但看起来我们在这里向用户显示会话过期消息的getter, com.vaadin.server.SystemMessages 类,方法 getSessionExpiredCaption()getSessionExpiredMessage()

对此的描述 SystemMessages 上课说:

使用VaadinService.setSystemMessagesProvider(SystemMessagesProvider)进行自定义。

所以也许我们可以通过实现来覆盖会话过期的消息 SystemMessagesProvider 接口。 (我不确定这一切是如何运作的。)


应用程序有时冻结。 (我可以点击按钮,但没有用..没有动作..唯一的办法就是重启)

我不知道这个。我发现Vaadin 7在生产中非常稳定,一次运行无数个月而没有失败。 Vaadin 8在我目前的开发工作中似乎也完全可靠。

近年来,Web浏览器,Web服务器,诸如Tomcat和Jetty等Java Servlet容器的实现已经得到了显着的改进和发展。

如果用户的Web浏览器与Vaadin服务器失去联系,他们应该会看到一条消息。


在IE中表现非常糟糕。 (我知道这对所有网络应用程序来说都很常见。但是,我的应用程序与其他浏览器相比; IE完全糟透了。有人请大家跟门阻止IE ... :-(

是的,确实IE浏览器是一系列糟糕的浏览器,存在许多问题。

幸运的是,有人确实与盖茨/鲍尔默/纳德拉谈过。 Internet Explorer产品线已结束。换成了 Microsoft Edge。一个巨大的进步。他们似乎有一种新的精神,并且衷心地赞同并遵循网络标准。

CanIUse.com 网站,以查看哪些版本的浏览器支持HTML,CSS等功能。


在treetable中加载延迟对我来说真的很有帮助。

TreeTable 小部件被取代 TreeGrid 在Vaadin 8.这个新的小部件共享技术在惊人的新 Grid 小部件。

另请参见手册页 分层数据。它讨论了后端的延迟加载数据。

这是 关于延迟加载的文章 在Alejandro Duarte的Vaadin 8中。


ICEPush附加组件,完美地完成其工作。但是,过了一段时间它在控制台中给了我异常。(https://vaadin.com/forum#!/thread/234493/4528542

推技术 现在,Vaadin支持内置功能。令人惊讶的是,基本上你需要做的就是添加一个 @Push 您的应用程序的注释。

Vaadin中的Push实现基于流行,强大且经过充分验证的库, 大气层

参见手册页, 服务器推送

请注意,Push技术近年来已经有了显着改善,尤其是 的WebSocket。新的 HTTP / 2 标准进一步推进了进步。请务必使用更高版本的Web容器,如Tomcat和Vaadin,以及Web浏览器。


如果我在浏览器中执行任何操作。它反映在另一个浏览器中(应用程序的另一个实例。)http://dev.vaadin.com/ticket/10208

请参阅更新 那张票。似乎不是问题。

看起来像在页面中传递:new Notification(message).show(ui.getPage())解决问题...


上下文菜单插件:易于实现且非常棒。但是,在慢速网络上多次右键单击时,我会例外。 https://vaadin.com/forum#!/thread/119996/4455717

我不能说这个,除非说:

  • 有很多讨论 那个帖子
  • 该组件现已作为Vaadin框架的一部分进行了整合。

我建议再试一次。 (我还没用过。)


恼人的异常消息。有什么需要在UI上显示它?

不确定你的意思。

如果您引用Java异常,我不确定如果应用程序对该用户有错误,您还希望发生什么。

如果您提到会话通信问题,您应该知道最新版本的Vaadin会更积极地尝试维护和重新建立问题连接。

我目前找不到链接,但已记录在案。也许在他们的博客中。


我的Vaadin服务器在英国,API服务器在美国,这是通信问题的原因吗?

当然,通过互联网维护会话可能会有问题。

我可以告诉你的是,我在威斯康星州的一个colo中部署了我的服务器,并且用户在佛罗里达州,加拿大西雅图甚至香港成功运行,使用Push来每分钟更新显示的数据。

如果您的网络不可靠,那么V​​aadin等积极“健谈”的架构就不合适了。


5
2017-08-05 04:08



非常高兴看到Vaadin的这么多改进。 Upvoting,所以答案对其他人有用。 - Gugan


这是很多问题。我没有答案,但对你有一些见解。

我已经开发了一个并且看到了在Vaadin 6中开发的三个Web应用程序。所有失败,原因各不相同,但我可以与您分享我的一些不起眼的见解:

  • 一些Vaadin行为(至少6.x)很难定制,例如会话到期。
  • 结果HTML非常繁重,也很难定制。通常我的团队不可能达到理想的视觉效果。
  • 我发现Vaadin的设计很差(大量的铸造/使用 Object 而不是泛型)。在我的拙见中,源代码也不是高质量的。
  • 由于缺陷和缺乏真实示例,内置小部件有时难以使用。
  • 浏览器之间的可移植性是一个神话(尤其是IE,但你已经发现了)
  • 简单的Vaadin应用程序可占用大量CPU资源

还要记住Vaadin以错误的方式使用(不是 单页应用)成为一场噩梦 - 但不是框架本身的错。这同样适用于任何其他工具。


5
2017-12-31 10:18