复合Web API Play Framework评估

近日,来自LinkedIn的首席软件工程师Yevgeniy Brikman发表了一篇文章,谈到了他对Java Web框架——Play Framework的评价与看法。

Play最吸引我眼球的是对异步编程的支持,这有助于并行地从多种后端服务器中获取数据并且支持comet风格的交互。

Play旨在处理响应时间不定的极短请求。Play可以临时“挂起”处于连接状态的HTTP请求。这样在处理等待时就可以将所需的资源降到最低限度,特别地,Play使用了一个微型的线程池(通常数量为机器上的处理器个数加上1)。这与现在大行其道的“一个请求一个线程”有着很大的差别。

根据服务器负载的不同,其事件处理方式所支持的并发数要比线程模型多很多;对于comet中的持续连接来说,该事件模型是唯一可行的方式。

Play提供了几个模型来异步处理请求。你可以定义“Promise”值(它可以纳入到“waitall”语句中),在这种情况下,直到所有请求都已返回后执行才会继续,这对于从多个Web API中获取数据的情况来说是非常便捷的。Play还通过Java匿名内部类来支持回调模型。此外,你还可以通过Play设定一个固定的时间,只有在这个时间后才会处理请求。

Play的社区非常活跃,大家热火朝天的工作就是最好的宣传,Play确实做到了DRY(Don't Repeat Yourself),并且对异步I/O的支持也被认为是JVM世界中做得最好的。当然了,Play的文档/JavaDoc还需要改进,但我们会进一步评估Play,看看它是否适合于LinkedIn的生态系统。

随着(移动)复合应用与Web API的日渐兴起,介于(移动)客户端与Web API之间薄薄的一层复合中间层逐渐涌现出来。Play或是Node.js这样的框架是否会成为移动解决方案架构的关键呢?你对此有何看法?

查看英文原文:Evaluating Play for Composing Web APIs

你可能感兴趣的:(复合Web API Play Framework评估)