12

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

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

谁能告诉我为什么我会遇到这些问题?

问题:

  1. 沟通问题?( http://dev.vaadin.com/ticket/8466 )
  2. 会话过期消息?(我将会话设置为 300 分钟后过期。但它发生在之前。但是,并非一直如此)
  3. 应用程序有时会冻结。(我可以点击按钮,但没有用..没有动作..唯一的方法是重新启动)
  4. 在 IE 中表现非常糟糕。(我知道它对所有网络应用程序都很常见。但是,与其他浏览器相比,我的应用程序;IE 完全烂透了。
  5. 树表中的延迟加载对我来说真的很有帮助。
  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();
4

2 回答 2

6

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

我已经开发了一个,也看到了三个在 Vaadin 6 中开发的 Web 应用程序。都失败了,原因多种多样,但我可以与您分享一些我的拙见:

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

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

于 2013-12-31T10:18:47.610 回答
5

瓦丁 8 和 10

在这期间发生了很多变化。


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

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

这是由于某些浏览器在使用 Tomcat 7 时的 cookie 处理导致的错误,并且在应用程序名称后面的地址中没有使用斜杠(即http://host/app而不是http://host/app/)。

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


会话过期消息?(我将会话设置为 300 分钟后过期。但它发生在之前。但是,并非一直如此)

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

该类的描述SystemMessages说:

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

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


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

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

近年来,Web 浏览器、Web 服务器、Java Servlet 容器(如 Tomcat 和 Jetty)等的实现有了显着的改进和发展。

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


在 IE 中表现非常糟糕。(我知道这对于所有网络应用程序都很常见。但是,与其他浏览器相比,我的应用程序;IE 完全糟糕。有人请与盖茨交谈以阻止 IE ...... :-(

是的,确实 IE 是一系列糟糕的浏览器,有很多问题。

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

请参阅CanIUse.com站点以了解哪些浏览器的哪些版本支持 HTML、CSS 等中的哪些功能。


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

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

另请参阅Hierarchical Data的手册页。它讨论了来自后端的延迟加载数据。

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


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

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

Vaadin 中的 Push 实现基于流行、健壮且经过充分验证的库Atmosphere

请参阅手册页,服务器推送

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


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

请参阅该票证的更新。似乎不是问题。

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


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

我不能说这个,只能说:

  • 关于那个线程有很多讨论。
  • 该组件现已集成为 Vaadin 框架的一部分。

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


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

不知道你在这里的意思。

如果您提到 Java 异常,我不确定您还想发生什么,如果应用程序对该用户出错。

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

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


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

当然,通过 Internet 维护会话可能会有问题。

我可以告诉你的是,Vaadin 对我来说效果很好,我的服务器部署在美国威斯康星州的一个科罗拉多州,用户从佛罗里达、西雅图、加拿大甚至香港成功运行,使用的应用程序使用 Push 每分钟更新显示的数据.

如果您的网络不可靠,那么像 Vaadin 这样的主动“健谈”架构是不合适的。

于 2018-08-05T04:08:16.080 回答