再谈谈Play!框架

Play!也一直在关注,包括最新的1.0.1和1.1 branch。

在View层、缓存、测试这三方面Douyu跟Play!要实现的东西和采用的套路都差不多,

比如Play!内置的模板引擎也是先把模板文本转化成Groovy代码然后再运行,
Douyu现在也是先转化成Java代码然后编译再运行(跟JSP一样)。

在开发阶段,这种先编译后运行的方式通常比Velocity或FreeMarker这种动态解析的方式要慢。
但是在部署阶段因为模板文本已经编译过了就比动态解析的方式要快一点。

Play!新加入了“Japid template engine ”,无非也是要提高view层模板的渲染速度,
具体实现技术我还没去研究。

Douyu现在也正尝试Velocity或FreeMarker动态解析的方式,
这在开发阶段很有用,如果熟悉JSP的话,只要JSP页面代码量稍大一点,
每次改JSP代码然后刷新浏览器一般需要1.5到2秒的响应时间,
1.5到2秒在开发阶段还是不能承受的,只有响应时间不超过1秒才不会感觉到有延迟。

缓存方面Douyu跟Play!现在也是直接整合一些流行的缓存框架
Douyu目前整合了Ehcache和OSCache,
Play!目前整合了Ehcache和Memcached

测试方面Play!现在要比Douyu强一些
Douyu只是整合了JUnit,可以进行单元测试和功能测试。

Play!除了能进行单元测试和功能测试外,还集成了selenium,
可以进行Selenium测试,这是Douyu目前未实现的。

老实说也曾想过看看能否把Douyu跟Play!整合一下,
但是除了上面说的三点相似外,内部的核心架构完全不同,
比如最简单的一个例子在Play!中每个控制器类要继承play.mvc.Controller,
而Douyu的控制器类不采用继承方式,
Play!的render是采用抛异常的方式来结束Action的执行的,
一个Action只能render一个模板,而且每个Action方法都是静态的,
而Douyu不抛异常,一个Action能render任意多的模板。

动态编译方面更加不同,Play!是从编译后的字节码下手,
而Douyu是先从Java源代码下手。

Play!目前在Modules开发方面比较活跃,
这些并不属于核心架构的东西,
在Play!上能运行的Modules,只要那个Module的开发者愿意,
其实很容易就能移植到Douyu。

Play!在1.1 branch中要加入对Scala语言的支持,
Douyu并不打算支持Scala语言,Scala语言学习门槛太高,
近期内要普及还是件难事,所以我想Douyu应该先把时间放在其他更实际的问题上。

另外,Play!还加入了Grizzly、Netty的支持,
我觉得这些都不是很大的亮点,中小规模的应用Tomcat足够了,
大点的应用Apache加Tomcat集群也能应付,

Grizzly、Netty这类http服务器处在一个不上不下的位置,
普及性也很低,所以Douyu目前也不打算支持Grizzly、Netty。

Play!在Model层还没看到什么大点的变化,跟Douyu的实现方案也很不同。

当然还有很多的不同,这里就不再细说了,
所以我想以后Douyu跟Play!应该不会走merb跟rails合并的路,
谁好谁坏就留给开发者去选择吧。

本文来源于"阿里中间件团队播客",原文发表时间" 2011-07-06   "

时间: 2024-10-02 01:15:07

再谈谈Play!框架的相关文章

“雷军,再谈谈净化器滤网的致命伤”一文完全是一场闹剧

近日,有媒体发表了一篇名为雷军,再谈谈净化器滤网的致命伤的文章,作者在文章中以大量截图为证,并且将小米推出的899元的净化器与瑞士售价高达万元的医用级净化器IQ air 进行比较, 得出结论 小米净化器的所用的H11滤网只不过是IQair所用滤网的初滤滤网,小米用自家最好的H11滤网和IQair最差的滤网一样,并不能去除Pm2.5等颗粒物.那么,作为IQair产品多年的使用者,笔者对此也很好奇,在仔细阅读了该文作者的文章后终于发现了作者所述并非事实,而是再一次偷换了概念,又一次愚弄了广大消费者.

谈谈NVMe,谈谈戴尔-EMC,再谈谈价值10亿美元的DSSD

目前行业最为关注的NVMe型阵列是戴尔-EMC所掌握的全闪存1000万IOPS D5产品,这款万众期待的解决方案由其以10亿美元收购DSSD而得来.   NVMe已经在共享式存储阵列生态系统当中产生涟漪 我们因此与DSSD软件副总裁Mike Shapiro进行了交流,询问其DSSD如何看待NVMe这一架构选项.而他作出了如下回应. 在此期间,戴尔旗下EMC事业部总裁接手了DSSD负责人一职,C J Desai以及原DSSD总裁Bill Moore则先后离职.这是否意味着DSSD的发展前景存在问题

寒门再难出贵子(好好看一下,有很大收货的)

  [7哥导读]本文是一位银行的HR写的,他工作了10年,接待了一群到银行实习的实习生,然后观察他们发生的一系列的故事.像小说,但比我们看过的小说更精彩:像现实,但比我们了解的现实更残酷.文章来源天涯社区,作者:永乐大帝二世. 一看标题就吸引了我,<寒门再难出贵子>.因为我出生在寒门,深刻理解作者为什么说寒门再难出贵子,如果你一会儿看到文章中治国的故事,你就可以联想到我.当然,理解不代表认同. 文章中的寒门,还不是家庭贫困,而是小城市.小城镇的学生.讲述了好几个残酷故事,应该是真实的故事.否则

请听一个故事------&amp;gt;寒门再难出贵子

[7哥导读]本文是一位银行的HR写的,他工作了10年,接待了一群到银行实习的实习生,然后观察他们发生的一系列的故事.像小说,但比我们看过的小说更精彩:像现实,但比我们了解的现实更残酷.文章来源天涯社区,作者:永乐大帝二世. 一看标题就吸引了我,<寒门再难出贵子>.因为我出生在寒门,深刻理解作者为什么说寒门再难出贵子,如果你一会儿看到文章中治国的故事,你就可以联想到我.当然,理解不代表认同. 文章中的寒门,还不是家庭贫困,而是小城市.小城镇的学生.讲述了好几个残酷故事,应该是真实的故事.否则我不

柳俊谈谈交换友情链接的方法和技巧

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 交换友情链接对于一个站长来说是相当重要的,能够找到适合自己的友情链接对于自己网站的排名是有很大的帮助的,下面襄樊seo柳俊就来谈谈一写关于交换友情链接的方法和技巧. 首先要链接什么是友情链接,友情链接就是在自己的网站上做上对方关键词的链接,但是必须要注意的是这里的链接并不是说只要是人为的可以看见的链接,而是要让搜索引擎可以爬取的代码,比如你把

产品前端重构(TypeScript、MVC框架设计)

最近两周完成了对公司某一产品的前端重构,本文记录重构的主要思路及相关的设计内容. 公司期望把某一管理类信息系统从项目代码中抽取.重构为一个可复用的产品.该系统的前端是基于 ExtJs 5 进行构造的,后端是基于 Asp.net MVC 提供的 REST 数据接口.同时,希望通过这次重构,不但能将其本身重构至可用于快速二次开发的产品,同时还要求该前端代码要保证相对的独立,使得同时可以接入 .NET 和 JAVA 两个不同的后端平台所提供的数据接口.   旧代码的问题 老系统的前端代码如下图所示:

Backbone.js系列教程三:深入解析之框架,模型视图

Backbone下的框架设想 Backbone是用于开发SPA(AKA单页应用)环境.你可能想要知道这些是什么.简单的讲,SPA就是一个加载了一个页面 (index.html或者app.html)的web应用,整个应用通过自定义事件,自定义URL句柄,和异步HTTP检索,存储资源来发送到客户端, 这样避免了页面的重复加载.基本上,SPA框架只加载一个HTML页面,因此JavaScript可以用于仿写/重写/编排浏览器上传统web应用框架的 默认属性. 让我们检验Backbone SPA的框架假设

WebApp MVC 框架的开发细节归纳

  在前文<WebApp MVC,"不一样"的轻量级互联网应用程序开发框架>介绍了WebApp MVC的技术实现以及如何使用,而在本章进一步归纳了使用框架开发的一些细节,也给我们在开发具体功能的时候提供一个正确的方法:共归纳了三点,具体内容如下: 1.URL请求页面 1)使用Nvelocity显示页面 2)第一次页面加载中的Jqueryeasyui控件数据特殊处理   2.Form表单提交数据 1)action提交 2)action提交前进行数据验证 3)使用JQuerye

PHP 5.3为Yii PHP框架配置php pdo mysql失败的原因

因项目需要使用PHP Yii框架,有同事配置php和yii在Yii框架,访问Yii组件必要条件网页显示mysql pdo一直未加载: 经检查php.ini文件,组件已经设置为加载: extension_dir = "ext" cgi.force_redirect = 0 extension=php_mbstring.dll extension=php_mysql.dll extension=php_mysqli.dll extension=php_pdo_mysql.dll 经研究和试