`
solonote
  • 浏览: 89993 次
  • 性别: 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君继续,作为一个先行者的勇气,望你能做出一个优秀的框架!




分享到:
评论
46 楼 koda 2009-12-03  
最烦丫的说“貌似”,“赞”...
45 楼 jssanshengshi 2009-12-03  
koda 写道
jssanshengshi 写道
貌似author全部列出了Douyu 的劣势吧...有做冷静的比较么?

你敢说你这么说话就冷静、就负责:)

个人用了貌似,疑问句的形式,应该比较冷静...
44 楼 koda 2009-12-02  
jssanshengshi 写道
貌似author全部列出了Douyu 的劣势吧...有做冷静的比较么?

你敢说你这么说话就冷静、就负责:)
43 楼 jssanshengshi 2009-12-02  
貌似author全部列出了Douyu 的劣势吧...有做冷静的比较么?
42 楼 netfishx 2009-12-02  
berlou 写道
helian 写道
Arden 写道
现在play! 1.1 可以用scala写,我发现以后说不定还可以用python写~~


这东西越来越玩具了。。。


搞不好越来越杯具了


不见得吧,他只是提供选择,不喜欢就完全不理他好了
41 楼 netfishx 2009-12-02  
lavakn 写道
打酱油,没有人反对吧。楼主这么牛X,还开个毛的贴子啊,自己写个胜过douyu的东西出来不就得了,人家又没有说叫你去用,你看看就行了。找个机会也看下。支持国产。


这叫什么话,框架这东西就是写出来给人用的,我自己写不出框架就不许提意见了?
40 楼 berlou 2009-12-02  
helian 写道
Arden 写道
现在play! 1.1 可以用scala写,我发现以后说不定还可以用python写~~


这东西越来越玩具了。。。


搞不好越来越杯具了
39 楼 helian 2009-12-02  
Arden 写道
现在play! 1.1 可以用scala写,我发现以后说不定还可以用python写~~


这东西越来越玩具了。。。
38 楼 willothe 2009-12-02  
“冷静”、“理智”....笑死人.
37 楼 lavakn 2009-12-02  
打酱油,没有人反对吧。楼主这么牛X,还开个毛的贴子啊,自己写个胜过douyu的东西出来不就得了,人家又没有说叫你去用,你看看就行了。找个机会也看下。支持国产。
36 楼 berlou 2009-12-02  
不管怎么说精神还是可嘉的, 不过精神可嘉的技术人员在中国其实不少。
但是对标准支持的欠缺会注定它的命运的。
Douyu的作者应该好好考虑下如何支持标准。
35 楼 Arden 2009-12-02  
现在play! 1.1 可以用scala写,我发现以后说不定还可以用python写~~
34 楼 sleets 2009-12-02  
不能因为douyu是中国人写的,是中国人就一定要喜欢douyu。 不喜欢都不能发帖了。

楼主站在开发者的角度,说出自己认为的douyu不足,如果douyu作者认为其意见正确,可以来谈谈douyu计划如何应对这些问题。 如果认为不正确,有工夫就反驳下。

一个好的创意和项目肯定会受到很多非难,作者也许知道解决办法只是不想说。 也有可能是作者视野不开阔没仔细考虑这些问题。 不管怎么样,认真对待这些不同意见才能搞出好东西。


为保护新生项目就不允许不喜欢它的人讨论它,这样能搞出好东西吗
33 楼 solonote 2009-12-02  
如果你能找到Douyu优秀的地方,你拿出来给大家看到就行了.
你们一条拿不出来,而一开始我就找到一条,而且这一条可能作为Douyu以后胜过Play的原因之一.
Play的硬伤,最大的隐患是在用了很多static方法上,而Douyu没有用static方法.
Play用static方法有它自己的原因,static对于Play来说是一把双刃剑.
请看文章的时候自己不要带有色眼镜,认真的看完,冷静的思考再发表看法,否则大家只能认为你是一个凑热闹的"伪球迷"
32 楼 ristaju 2009-12-02  
为什么看你的对比是明显的偏向play呢????

看得出来,你更喜欢play。
31 楼 smiletuna 2009-12-02  
那个啥 play..我听都没听过..java的框架 真的比应用多...
30 楼 aoliwen521 2009-12-02  
两种都没用过。不知道各位高人平时是做什么开发的?
怎么有机会用这么多东西来做?
还是平时自己练练的?
29 楼 caoyangx 2009-12-02  
ZHH2009 写道
caoyangx 写道
leon1509 写道
恰巧前两天刚看了一下douyu,我记得作者也是建议不要使用douyu做商业项目吧?

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


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

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

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


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


这个帖子我会回复,还会专门开一个新帖认真回复(同时比对Douyu与Play的差异),
我从来不当逃兵。


我只是在别人帖子中,说我想说的实话。
第一,我有没有诽谤你,我也有没有侮辱你,我说的是我的客观感受,如果你只是提供源码让大家学习,我大力支持你,如果你是为了withoutXXX而发布,我那么我保留我的意见,但是你做到了我会收回我的话。
第二,聊技术细节,可以呀,交流是对每个人都有好处的。但你为什么怕我不堪一击,交流还用刀吗?你内心的自满,会影响你的发展,小伙子。
28 楼 miaow 2009-12-02  
斗鱼的ORM动态生成类确实是败笔,只生成一次的东西在运行时生成会很奇怪。
哪怕用命令行生成都更合理一些,感觉有为了把服务器的特征用上而用的味道。

war包那点,斗鱼也可以打包。虽然他的操作方式不敢恭维。
27 楼 dennis_zane 2009-12-02  
xly_971223 写道
很明显楼主是带着有色眼镜来评论play和douyu的
通篇只说play的优点和douyu的缺点


也不能这样说,是我最后给的良好,因为有些疑问也是我的疑问,希望douyu作者来解答的。但是后面的人身攻击已经偏离讨论的本意,我实在不明白为什么一定要带着偏见看douyu,douyu本身是有创新的,需要肯定,就看后面怎么发展。

相关推荐

    斗鱼直播源数据的获取

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

    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