Scala 需要关于web应用程序的设计/架构的意见

Scala 需要关于web应用程序的设计/架构的意见,scala,push,lift,Scala,Push,Lift,我正在开发一个web应用程序,它需要从一些本地和一些非本地资源获取数据,然后显示出来。由于从这些资源获取数据可能需要任意的时间,因此我考虑使用actors概念,以便每个actor负责从各自的资源获取数据。请求线程将等待每个参与者完成其任务,然后使用ajax仅更新依赖于该数据的网页部分。这样,用户将在收到数据后立即开始查看数据,而不是等待所有数据都完成,然后第一次查看数据 我计划为此研究scala/lift框架。我在网上读了一些关于scala/lift的文章,想探讨一下这是否是解决这个问题的正确方

我正在开发一个web应用程序,它需要从一些本地和一些非本地资源获取数据,然后显示出来。由于从这些资源获取数据可能需要任意的时间,因此我考虑使用actors概念,以便每个actor负责从各自的资源获取数据。请求线程将等待每个参与者完成其任务,然后使用ajax仅更新依赖于该数据的网页部分。这样,用户将在收到数据后立即开始查看数据,而不是等待所有数据都完成,然后第一次查看数据

我计划为此研究scala/lift框架。我在网上读了一些关于scala/lift的文章,想探讨一下这是否是解决这个问题的正确方法,以及scala/lift是否是一个不错的选择平台。我以前在Java和C#工作过。欢迎提出任何意见、意见和建议

谢谢,
gary

看看Java的JMS之类的消息队列技术。消息队列允许您异步可靠地处理长时间运行的后台任务。这是Flickr和YouTube等网站用来异步进行媒体转码的技术。您可以使用javaee服务器,或类似Apache的JMS技术,然后在其上分层Scala/Lift代码

理查德·蒙森·海费尔的书涵盖得很好

有关网站扩展和构建的更多一般帮助,请查看Todd Hoff的优秀博客。对于使用消息队列以这种方式卸载长时间运行的任务,有一些很好的建议

顺便说一句,Twitter使用Scala来表示您正在考虑的内容。这里是一个与他们的一些开发人员;他们描述了使用Scala的一种方式:

robeypointer:我们的很多架构都是基于让Rails做它最擅长的事情,即AJAX、web前端、用户所看到的网站。我们可以从请求/响应周期中卸载任何东西。因此,我们将这些任务排队到消息传递系统中,并让后端守护进程处理它们


如果非本地资源来自其他服务或系统,那么事件驱动的体系结构可能适合您。您可以将此web应用程序设置为这些服务发布的事件的订户,而不是从非本地资源中提取。在收到关于其部分功能的消息后,它将在本地缓存它感兴趣的数据。这应该可以避免页面部分的异步更新问题(所有数据都可以在本地访问)


关于这种方法的博客很多,他也是一个.NET消息总线()的作者,该总线可用于此类场景。例如,请参见演员将是一种选择。实际上,您正在设置JMS的轻量级版本。而Lift对彗星的研究做得很好。
除了Scala演员和Lift演员,你也有。如果延迟的信息与需要立即显示的信息不同,那么使用Lift,您可以使用运行时间较长的计算(调用web服务)的LazyLoad代码段作为其逻辑的一部分。Lift将负责在页面准备就绪时将其插入页面