`
solonote
  • 浏览: 89990 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

冷静的比较一下Douyu和Play Framework

阅读更多
刚刚用Play Framework做了一个小型项目,开发速度非常快.运行的速度也很不错,很稳定.
今天又看到了有同学开发了一个Douyu平台,下面评论一大堆,非常火爆,冷静下来再看一遍帖子,
没发现Douyu能在开发速度上比Play做的更好.

斗鱼作者ZHH:
引用

Play!框架除去与Douyu共有的动态编译之外,在我看来并没有多少值得我借鉴的思想。
我说Play!框架更像是个胶水框架也是有根据的:


我的分析:

1.动态编译
动态编译除了在开发模式下能够修改java文件而不重启服务器以外还有其他用处吗?(非常希望ZHH或者其他大侠能给我答案.)
从这一点出发,我不关心Play和Douyu的动态编译技术谁牛逼.
我认为Play在动态编译上已经做的很好,无论你修改Entity,Controller或者view,都无需重启服务器.

臆测:ZHH一直强调动态编译,我认为一部分原因是动态编译所用的技术比较深,值得炫耀.

2.ORM
Douyu:从数据库生成Entity
Play:遵循JPA标准,根据Entity生成表
这里我不想扯淡谈是否遵循标准的问题.我只想说,JPA模式相比较Douyu有以下优势:
a.Play可以在开发模式时用一个内存数据库,而Douyu必须你先安装一个数据库.在做原型程序的时候,这是很恶心的一件事情.
b.从数据库生成Entity与从Entity生成表在简单情况下是具有相同效率的,但是有以下需求时,明显的JPA要优于Douyu的ORM
b.1.Entity中有一些属性和方法不依赖数据库.这种情况从数据库生成Entity就很麻烦,生成了以后要手动去添加这些不依赖数据库的东西.
b.2.从数据库生成表依赖于特定的数据库,如果我换一个数据我必须要重新建表.

ORM上Douyu的方式完全败给JPA.

3.控制器
Douyu渲染一个试图参数是:
context.out("WhatTime.html", paramMap);

而Play的参数是:
render(param1,param2...);

Play的优势:
a.play不需要指明去渲染哪一个html,它根据方法名,Controller类去判定,Play定义的是一个规则.这种类似的规则在Play中还有很多,而且Play有一个特点,如果你不需要这种规则时,你往往可以去自定义.
而Douyu使用的方式是只能自定义.
b.play传给页面的参数不需要组织成一个map,更加自然.

4.视图
Play的页面模版有一套非常简单易用的tag机制,复用view非常的方便.Douyu当前的版本介绍里并没有提到如何复用view.

5.REST
因为ZHH没有实践过Play,其实Play的REST用一些pattern后会很简单的.
Play的REST做的是非常方便而且简单的,而Douyu没有这个功能.
在Play中REST只是作为route功能的一个子集,route功能还可以做其他的用处.

6.Testing
Play可以非常方便的做Unit Test以及FunctionalTest.
Play在Test上下了很多功夫,这一点大家实践一下就可以知道.
Play可以方便的组织测试数据,而这些数据是一个文本结构,不依赖于特定数据库.
也就是说即使你用的是一个内存数据库,你也可以很方便的组织测试数据.

7.关于第三方类库依赖以及大小
Douyu依赖的开源库很少,Play依赖了很多开源库,比如Hibernate等等.Douyu很小,Play下载下来需要90mb(其中还包含了python的解释器).
但我认为,作为一个非桌面应用程序来说大小和第三方类库的依赖完全不是评价一个framework的关键.

8.J2ee体系的支持
Play的应用程序发布以后会打包成一个war包,值得一提的是这个war包还是可以轻松的修改代码的.而且基本的程序结构也没发生什么变化.Play的war包可以运行在标准的J2ee容器中.
Douyu不支持原来的J2ee体系,只能运行在自己的服务器中.我不谈Douyu服务器和其他J2ee服务器的优劣.但是有一点
当前没有Douyu的Hosting提供商,你想用Douyu必须自己有一个服务器.而开发一个Play网站,仅仅租用一个tomcat空间就可以发布.
这会让Douyu陷入无人使用的境地,如果陷入这种境地,那么它就全无价值了.

9.其他的一些支持
Play对GAE也有支持,它还有很多的功能,比如Play的在运行出错时的报告非常的直观,你可以自己去了解和实践.

Play的"缺陷和问题":
Play有很多的静态方法,在Controller和Model中都有,静态方法带来的最大麻烦就是难以继承,这是很恶心的一件事情,这一点可能是Play框架的一个硬伤,不知道以后会不会有更正.

我用Play的感触是,这个框架是非常有经验的Web开发者所做的,非常的简单和方便,而且这个框架不像其他框架,当你进行真实开发时你会遇到很多难以达成的问题.就我的实践来说Play是非常易用和扩展的.

对于Douyu和Play,我的评价是Play是一个真正可以开发,而且我用过最方便的Java Web框架.我不知道用Play开发大型应用会不会遇到问题,这一点希望有实践经验的朋友来补充.
而Douyu就从当前发布的版本来说,除了它没有用静态方法以外,我看不到任何比Play有用的地方.

希望ZHH君继续,作为一个先行者的勇气,望你能做出一个优秀的框架!




分享到:
评论
26 楼 xly_971223 2009-12-02  
很明显楼主是带着有色眼镜来评论play和douyu的
通篇只说play的优点和douyu的缺点
25 楼 zdmcjm 2009-12-02  
天下将大任于框架也,必先劳其筋骨,饿其体肤,空乏其身,行拂乱其所为。
24 楼 guazi 2009-12-02  
楼主的目的值得商榷一下,我支持douyu的作者。十分同意一下观点,
SeanHe 写道
不说什么,先支持一下douyu的作者,作为刚诞生的框架douyu还有很多东西要做,但是没有人能断言douyu就只是个玩具。国人最缺的就是创新精神,而ZHH2009却迈出了一步,至少向我这样的很多人还徘徊在老的老套路上

23 楼 超级潜水员 2009-12-02  
太崇拜douyu了,作者太强了,希望好好发展.
22 楼 helian 2009-12-02  
国人啊,动不动就战。。。怨念啊

期待斗鱼作者的比较帖
21 楼 tangbo530 2009-12-01  
支持DOUYU的作者,,,
确实不错。。。
希望能看到更好的东东
20 楼 pipilu 2009-12-01  
楼主写的挺好。支持一下。
19 楼 zxc005 2009-12-01  
solonote 写道

冷静的比较一下Douyu和Play Framework……
……
臆测:ZHH一直强调动态编译,我认为一部分原因是动态编译所用的技术比较深,值得炫耀.



臆测:solonote强调自身的冷静,我认为这句话基本上能体现solonote的冷静,但冷静的背后却是蔑视,而蔑视的背后则是妒忌。
18 楼 solonote 2009-12-01  
madbluesky 写道
别忙着打压..能给建议的真诚的给点建议,给不了建议的鼓励下也好啊..
拿一个成熟的框架与一个 0.1版本的东西比较本来就不公平.


请问你什么叫做“真诚的给点建议?”,在后面跟帖说“很好很强大”“支持国产”这种叫做建议?
我想只要是一个做技术的,自己会去实践的人都能看的此文的用意,我想Douyu的作者也能看懂。
17 楼 madbluesky 2009-12-01  
别忙着打压..能给建议的真诚的给点建议,给不了建议的鼓励下也好啊..
拿一个成熟的框架与一个 0.1版本的东西比较本来就不公平.
16 楼 hhh041 2009-12-01  
helian 写道
楼主,这有啥好比较的。。。

我也是这么想的
15 楼 joeyhacker 2009-12-01  
caoyangx 写道
leon1509 写道
恰巧前两天刚看了一下douyu,我记得作者也是建议不要使用douyu做商业项目吧?

一个作品只是用来玩玩的,而扯到正题上,却避而不谈,那么没什么好说的,谁胜谁败每个人心里自然有数。
虽然只是起步阶段,但是很多框架的先天不足,注定它的命运会夭折,虽然大家嘴上都说一些鼓励和支持的话,其实你们谁敢用?谁敢把它用到项目中?
框架这东西,就是为了解决某些问题而产生的,只有行和不行,没有还行这个选择,都是输不起的项目,都是负不起的责任,谁敢用这还行的东西来做项目,谁敢把自己的命运寄托在一个评价还行或以后会行的框架上?

说的有点过了~
14 楼 SeanHe 2009-12-01  
不说什么,先支持一下douyu的作者,作为刚诞生的框架douyu还有很多东西要做,但是没有人能断言douyu就只是个玩具。国人最缺的就是创新精神,而ZHH2009却迈出了一步,至少向我这样的很多人还徘徊在老的老套路上
13 楼 ZHH2009 2009-12-01  
caoyangx 写道
leon1509 写道
恰巧前两天刚看了一下douyu,我记得作者也是建议不要使用douyu做商业项目吧?

一个作品只是用来玩玩的,而扯到正题上,却避而不谈,那么没什么好说的,谁胜谁败每个人心里自然有数。
虽然只是起步阶段,但是很多框架的先天不足,注定它的命运会夭折,虽然大家嘴上都说一些鼓励和支持的话,其实你们谁敢用?谁敢把它用到项目中?
框架这东西,就是为了解决某些问题而产生的,只有行和不行,没有还行这个选择,都是输不起的项目,都是负不起的责任,谁敢用这还行的东西来做项目,谁敢把自己的命运寄托在一个评价还行或以后会行的框架上?


我不知道caoyangx为什么对Douyu有那么多成见(已经不只一次了),当然我是不指望你去用的。
你想要跟我谈什么,要谈技术细节我非常乐意,就怕你不堪一击。

不了解我时,千万别随意像下面这家伙那样在Douyu的新闻中评判我:
ops2000 写道

不用说都能想到作者是一个没有经过正规计算机原理系统学习过的勤奋的编码人员,并且没有做过大型系统,顶多开发过网站的技术人员。


如果别人骂我是垃圾、SB之类的我肯定不会理睬(我才没这个闲情),
但是请千万不要随便侮辱我的专业水准,除非我技不如人,我甘受羞辱,我会知耻后勇。


这个帖子我会回复,还会专门开一个新帖认真回复(同时比对Douyu与Play的差异),
我从来不当逃兵。
12 楼 cloud21 2009-12-01  
caoyangx 写道
leon1509 写道
恰巧前两天刚看了一下douyu,我记得作者也是建议不要使用douyu做商业项目吧?

一个作品只是用来玩玩的,而扯到正题上,却避而不谈,那么没什么好说的,谁胜谁败每个人心里自然有数。
虽然只是起步阶段,但是很多框架的先天不足,注定它的命运会夭折,虽然大家嘴上都说一些鼓励和支持的话,其实你们谁敢用?谁敢把它用到项目中?
框架这东西,就是为了解决某些问题而产生的,只有行和不行,没有还行这个选择,都是输不起的项目,都是负不起的责任,谁敢用这还行的东西来做项目,谁敢把自己的命运寄托在一个评价还行或以后会行的框架上?



正解。
11 楼 caoyangx 2009-12-01  
leon1509 写道
恰巧前两天刚看了一下douyu,我记得作者也是建议不要使用douyu做商业项目吧?

一个作品只是用来玩玩的,而扯到正题上,却避而不谈,那么没什么好说的,谁胜谁败每个人心里自然有数。
虽然只是起步阶段,但是很多框架的先天不足,注定它的命运会夭折,虽然大家嘴上都说一些鼓励和支持的话,其实你们谁敢用?谁敢把它用到项目中?
框架这东西,就是为了解决某些问题而产生的,只有行和不行,没有还行这个选择,都是输不起的项目,都是负不起的责任,谁敢用这还行的东西来做项目,谁敢把自己的命运寄托在一个评价还行或以后会行的框架上?
10 楼 leon1509 2009-12-01  
恰巧前两天刚看了一下douyu,我记得作者也是建议不要使用douyu做商业项目吧?
9 楼 solonote 2009-12-01  
hetylei 写道
3.控制器
引用

a.play不需要指明去渲染哪一个html,它根据方法名,Controller类去判定,Play定义的是一个规则.这种类似的规则在Play中还有很多,而且Play有一个特点,如果你不需要这种规则时,你往往可以去自定义.
而Douyu使用的方式是只能自定义.

douyu实现这个应该很容易,毕竟Controller都是动态找的。
引用

b.play传给页面的参数不需要组织成一个map,更加自然.

douyu也不需要见例子。

4.视图
引用
Play的页面模版有一套非常简单易用的tag机制,复用view非常的方便.Douyu当前的版本介绍里并没有提到如何复用view.

douyu的视图作者说还需要整合,照现在的controller来看,整合freemarker之类是非常容易的



第一个问题,目前Douyu没有实现,空话就不说了,这样说来什么都是容易实现的.
第二个问题,如果不组织成map,就需要一个专门的view对象,更麻烦
第三个问题,目前没有,理由同一
8 楼 solonote 2009-12-01  
cloud21 写道
douyu是很有特点的,在这里并没有提出来。我觉得,是不完整的。

你可以进行补充,大家一起讨论它的价值
此贴只是想客观的比较一下Douyu和Play,也希望ZHH能获得一些有用的信息.
7 楼 hetylei 2009-12-01  
3.控制器
引用

a.play不需要指明去渲染哪一个html,它根据方法名,Controller类去判定,Play定义的是一个规则.这种类似的规则在Play中还有很多,而且Play有一个特点,如果你不需要这种规则时,你往往可以去自定义.
而Douyu使用的方式是只能自定义.

douyu实现这个应该很容易,毕竟Controller都是动态找的。
引用

b.play传给页面的参数不需要组织成一个map,更加自然.

douyu也不需要见例子。

4.视图
引用
Play的页面模版有一套非常简单易用的tag机制,复用view非常的方便.Douyu当前的版本介绍里并没有提到如何复用view.

douyu的视图作者说还需要整合,照现在的controller来看,整合freemarker之类是非常容易的

相关推荐

    斗鱼直播源数据的获取

    标题中的"斗鱼直播源数据的获取"是指通过特定方法抓取和解析斗鱼直播平台上的实时或历史数据。这通常涉及到网络爬虫技术,它是一种自动化程序,可以模拟用户行为,遍历网页并提取所需信息。 描述中提到的"已打包为...

    c#斗鱼直播弹幕实时获取_c#斗鱼直播弹幕实时获取_C#TCP_c#弹幕_c#斗鱼弹幕_kids7pg_

    4. 对斗鱼直播API和弹幕协议有深入理解,能够正确建立连接并解析弹幕信息。 5. 能够设计和实现用户界面,展示接收到的弹幕。 在压缩包文件"**C1**"中,可能包含了该项目的源代码文件,包括TCP客户端的实现、弹幕...

    斗鱼主页源代码

    斗鱼是中国知名的直播平台,其主页作为用户与平台交互的核心界面,承载了丰富的功能和精美的特效。在分析“斗鱼主页源代码”时,我们可以深入理解网页开发、前端技术、用户体验设计等多个IT领域的关键知识点。 1. ...

    斗鱼直播间增强插件(Tampermonkey).zip

    在斗鱼直播平台上,这款插件可能提供了如下的功能和知识点: 1. **JavaScript编程**:Tampermonkey的核心是JavaScript,这是一门广泛用于网页交互和动态内容处理的编程语言。用户通过编写或安装由他人分享的...

    python 斗鱼自动发送弹幕 图像匹配

    "斗鱼自动发送弹幕 图像匹配"这个项目是利用Python的图像识别和自动化功能来实现的一个具体应用。斗鱼是一个知名的直播平台,用户可以通过发送弹幕与主播和其他观众互动。在这个项目中,开发者创建了一个自动脚本来...

    斗鱼弹幕数据分析

    斗鱼弹幕数据分析是一种利用编程技术、统计方法和自然语言处理技术,对在线直播平台斗鱼上的用户产生的弹幕进行深入探究的过程。这种分析旨在揭示观众的行为模式、情感倾向以及对直播内容的反应,从而帮助主播优化...

    斗鱼第三方开放平台API文档v2.11

    斗鱼第三方开放平台API文档v2.11是武汉斗鱼网络科技有限公司提供的一个接口文档,主要服务于开发者,以便他们能够获取斗鱼直播平台的相关信息。这个文档包含了获取直播房间列表和详情、游戏分类等关键接口。 1. **...

    php - 斗鱼直播.rar

    在对接直播平台时,可能会频繁地获取房间信息,如果每次都直接从斗鱼服务器请求,会增加网络延迟和服务器负担。因此,使用缓存(如Redis或Memcached)来存储最近获取的房间信息,可以在短时间内快速响应用户请求,...

    斗鱼Html5播放器Chrome插件

    斗鱼Html5播放器Chrome插件,可自动取代斗鱼页面的Flash播放插件,使用html5进行播放。

    微信小程序源码-仿斗鱼直播小程序.zip

    微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播小程序.zip微信小程序源码-仿斗鱼直播...

    手机斗鱼图片爬虫

    最后,考虑到斗鱼网站可能会更新其网页结构,所以爬虫代码可能需要定期维护和更新,以适应网站的变化。同时,尊重网站的robots.txt文件和版权规定,确保合法、合规地进行数据抓取。 总的来说,"手机斗鱼图片爬虫"是...

    斗鱼获取实时弹幕/java代码

    为了实时获取这些弹幕,我们需要利用斗鱼提供的API接口,并通过编程实现数据的解析和处理。 首先,了解斗鱼API的基本概念是至关重要的。斗鱼提供了RESTful API,开发者可以通过HTTP请求与服务器进行交互。为了获取...

    斗鱼直播弹幕助手

    【斗鱼直播弹幕助手】是一款专为Windows操作系统设计的Java开发控制台应用程序,它的主要功能是实时获取并显示斗鱼直播平台上的观众发送的弹幕。作为一个专业的IT知识讲解,我们将深入探讨这款工具的工作原理、Java...

    斗鱼弹幕服务器第三方接入协议v1.6.21

    这个协议基于TCP服务,确保了数据传输的稳定性和可靠性,是斗鱼弹幕通讯的基础。 协议的核心内容包括以下几个方面: 1. **后台简介**: - **登陆授权**:第三方应用需要进行登陆授权,以便识别和验证身份,确保...

    斗鱼直播demo

    1. **直播技术**:斗鱼直播框架基于实时音视频传输技术,通过RTP(Real-time Transport Protocol)和RTCP(Real-time Transport Control Protocol)协议实现实时音视频数据的传输,确保用户能够流畅观看直播内容。...

    仿斗鱼app源码

    "仿斗鱼app源码"指的是开发者根据斗鱼APP的功能和界面设计,创建的一个类似的软件源代码。这种源码通常用于学习、研究或快速构建类似的直播应用。以下将对相关技术进行详细解析: 1. **前端界面设计**:仿斗鱼APP的...

    Swift仿斗鱼直播

    【Swift仿斗鱼直播】项目是一个使用Swift 4.0编程语言实现的iOS应用,旨在模仿斗鱼直播平台的功能和用户体验。这个项目对于学习iOS开发,特别是与视频流和直播技术相关的开发人员来说,是一个非常有价值的参考。下面...

    斗鱼 TV v1.6.9

    英雄联盟lol直播、穿越火线cf直播、dota2直播、激战2等各类热门游戏赛事直播随时观看,“斗鱼直播”打造全民游戏直播热潮! 【更新说明】 【注意】如遇到版本升级失败,请到斗鱼官网下载最新版本安装。 【优化】...

    仿斗鱼小程序

    【仿斗鱼小程序】是一个基于微信小程序开发的项目,旨在模仿知名的直播平台——斗鱼的界面和功能,供开发者学习和研究使用。这个项目的核心是通过编写小程序代码,实现类似斗鱼直播的用户体验,包括直播观看、用户...

Global site tag (gtag.js) - Google Analytics