什么技术&用于显示板的架构

时间:2011-02-06 19:27:17

标签: design-patterns gwt architecture

他对大家说,

我实际上有两个问题:)我即将开始一个新项目,它基本上是一个显示板(类似于你在机场或证券交易所看到的但是出于其他目的)。它应该有许多文本项,价格标签和按钮供选择。整个过程应该在浏览器中运行并反映实时更改(例如频繁更新价格和重新排列项目)。

技术

首先想到的技术选择是GWT,它有助于保持低流量并允许有针对性地更新显示区域(因为渲染发生在客户端)。根据我的经验,这个选择有一些缺点:从静态布局移植HTML和CSS在GWT中更耗时,因为你只能在运行时看到生成的HTML(UiBinder使得更方便,但问题在于在Linux下,DevMode的速度极慢,编译单个部署的排列可能需要几分钟。与JSP或JSF相比,这些都有助于缩短开发时间。

是否有一些其他技术或方法在流量方面非常低调,并且能够实时显示数据变化?如果某些价格标签在显示屏上更改其值或位置,我们显然不想保存整个新页面。更快的开发时间将是一种享受:)

建筑

对于这种情况采用什么样的适当模式。我已经尝试过一个索引对象,它包含对其他price和item对象的引用。因此,如果价格标签的排列在屏幕上发生变化,则新标签会到达,旧的标签会更新,新的索引对象会被创建并发送给客户端。客户端知道应该更新显示并重新呈现它。积极的是,它为您提供了许多可重用的组件(价格和项目对象),但从负面来看,如果添加新项目,整个屏幕的重新渲染会随着更多更新而变得CPU密集。索引对象和页面布局之间也没有一对一的对应关系:因此,如果设计者选择了基于表格的布局,并且在第1项和第2项之间有一个空行,则无法映射索引位置item对象在拥有的表上的位置,没有一些额外的处理。

我将很快关注GWT上的一个Google视频中的活动总线模式。感觉这可能也会在正确的道路上提供指导。

非常感谢您的建议!

更新:措辞&式

1 个答案:

答案 0 :(得分:1)

  

在Linux下,DevMode极其缓慢

最近有几个人的DevMode性能问题,我真的不确定,为什么会这样。根据我的经验,特别是在Linux上,DevMode非常快(事实上,我目前主要使用Mac,而且它的速度要慢得多。)只是为了给你一个类似的数字:重新加载官方StockWatcher教程在我的Linux机器上进行代码更改需要大约一秒。即使我的最大项目在一个页面上使用了极少量的小部件,重新加载时间仍然非常好。

我真的很感兴趣,在这种情况下你会看到缓慢:在浏览器中重新加载页面时,重新启动服务器时(顺便说一下几乎总是不必要),重新部署服务器端时(可以很快完成, as explained here)?我绝对推荐的一件事是使用原始的Sun / Oracle JVM而不是GCJ(这通常是Linux上的默认设置。)还尝试使用不同的浏览器。

  

是否有一些其他技术或方法在流量方面非常低调,并且能够实时显示数据变化?

是的,任何使用AJAX和JSON传输数据的东西。

  

对于这种情况采用什么样的适当模式。

实际上,官方StockWatcher教程应该与您想要做的相对类似,即它主要显示经常更新的数据。如果您的更新不定期到达,您可能需要考虑使用Comet减少请求数量,但我会从频繁轮询开始(如StockWatcher),然后再进行微调。

  如果添加了新项目,则整个屏幕的重新渲染会随着更多更新而变得CPU密集。

UiBinder使用innerHTML而不是DOM操作来修改UI,并将其与特定于浏览器的优化结合起来 - 因此它可能和它一样快。如果这些更新的性能是您的关注点,那么GWT确实是一个非常好的选择。 如果您的UI实际上变慢,可以在"What should I do to speed up a slow GWT app using MVC"中找到一些可能有用的其他指示。

  

如果没有一些额外的处理,你不能将项目对象的索引位置映射到它在拥有表上的位置。

这取决于您使用的型号。也许与您的设计人员一起设计一个小部件(例如MyTable.ui.xml),然后在Java类中实现相应的逻辑(如果需要复杂的映射,则不必直接在MyTable.java中)。 如果您需要针对该映射的特定问题的解决方案,最好打开一个单独的问题。