首页 文章

将Lift与Play2进行比较[关闭]

提问于
浏览
47

我之前使用过play2和java . 它感觉有点像样板文件,特别是如果你使用带有java的akka . 但这不是框架的错 .

昨天我读了“Scala for the greatient”,我真的很喜欢这种语言 .

现在我查看了两个框架Lift 2.5和Play 2.0.3 . 我认为电梯有更高的学习曲线,我不能只用电梯做一些事情 . 这不适合我 . 从我看到的,Lift有一个非常漂亮和干净的设计 .

但对我来说,很难说主要的区别是什么 . 我认为这两个框架都很棒 .

  • Views First方法不允许您在模板中进行编码,而是必须使用代码段进行编码 . 我非常喜欢这个,因为它看起来更有条理 . 它还允许您使用普通的html编辑器 . (我的经验不多,这只是我的第一印象)

  • 为安全起见,我认为这不是框架的工作 .

  • 无国籍/有状态:很难说主要区别在哪里 . 我只知道如果你使用网络套接字,播放也有一个状态 .

  • 按F5后,两个框架都能够编译 . 我非常喜欢这个功能 .

  • 两个框架都在使用sbt

  • Lift附带授权,但我认为有一个play2 scala插件可以做同样的事情

  • Lift有一个用于mongoDB的ORM映射器 . 因为我想使用noSQL,这对我来说看起来更干净 . (再次没有多少经验) Edit 在play2中有一个用于scala mongodb的ORM映射器https://github.com/leon/play-salat

  • 异步 - Play 2使用Akka . 不知道电梯使用什么,但他们也有类似的东西 .

  • 电梯附带CSRF支持 . Play2有一个CSRF模块,但这为你的代码增加了一个样板 .

  • 无状态身份验证似乎存在一些安全漏洞 . 两个框架都具有状态身份验证 . (play2有状态/无状态,举起状态)



  • 每个框架的优势是什么?

2 回答

  • 77

    在使用Lift一两个星期之后发布此消息并不能真正满足任何人的利益 . 但是,我想花点时间纠正一些错误和错误观念 .

    为安全起见,我认为这不是框架的工作 .

    你错了 . 安全性是框架的工作 . 默认情况下完成安全性至关重要,而不是依靠每个开发人员来理解每个安全漏洞,并确保每行代码都考虑到这一点 .

    我们所要做的就是看看GitHub发生了什么,以便了解即使是使用众所周知的技术的最佳编码人员也会犯一个严重的错误 .

    Lift在顶部提供了一个可靠的安全层,因此默认情况下,没有XSS,CSRF等,但开发人员可以深入挖掘他想要的HTTP请求并处理线路上的字节 .

    无国籍/有状态:很难说主要区别在哪里 . 我只知道如果你使用网络套接字,播放也有一个状态 .

    电梯非常清楚你需要什么状态和你不需要的地方 . Lift可以支持无状态,部分状态和完全有状态的应用程序 . 在逐页和逐个请求的基础上,Lift应用程序可以是有状态的或无状态的(例如,在Foursquare中,场地页面对于搜索引擎爬网是无状态的,但对于已登录的浏览器是有状态的 . )有关州周围设计决策的更多信息,请参阅Lift, State, and Scaling .

    两个框架都在使用sbt

    Lift使用Maven,sbt,Buildr甚至Ant . Lift与构建环境和部署环境(Java EE容器,Netty等)无关 . 这很重要,因为它使Lift更容易与您的其他环境集成 .

    Lift附带授权,但我认为有一个play2 scala插件可以做同样的事情

    Lift已经存在了5年,并且有很多模块和东西 . Lift Web框架(与模块不同)与持久性,身份验证等无关,因此您可以使用Lift的任何内容 .

    Async - Play 2使用Akka . 不知道电梯使用什么,但他们也有类似的东西 .

    Lift已经拥有超过5年的Async支持 . 它是's baked into the framework. Lift'的Comet支持是the best of any web framework,因为除了其他方面,它通过单个请求将所有"push"请求多路复用到服务器,避免了连接不足 . Lift如何使异步变得不那么重要,因为Lift的核心理念之一就是我们从中移除了管道开发人员因此开发人员可以专注于业务逻辑 .

    但对于那些关心的人来说,Lift拥有Scala-land中任何框架中最优秀,最轻量级的演员 . 我们是第一个脱离Scala Actor库的人,并努力为不同的Actor库开辟道路,让Akka和ScalaZ Actors蓬勃发展 .

    通过CSRF支持提升船舶 . Play2有一个CSRF模块,但这为你的代码增加了一个样板 .

    这是Lift 's commitment to security. It' s important的一部分 .

    无状态身份验证似乎存在一些安全漏洞 . 两个框架都具有状态身份验证 . (play2有状态/无状态,举起状态)

    提升应用程序可以是您想要的有状态或无状态 . 这是您的选择,Lift非常清楚如何做出决定 .

    另外,正如我在Lift,State和Scaling中指出的那样,让开发人员弄清楚如何以安全,可扩展,高效的方式序列化状态(因为几乎每个Web应用程序上识别特定用户的请求都是有状态的)应该由框架以可预测,安全的方式完成,并为开发人员提供合理的覆盖 .

    分手记

    Play很像Rails:很快就会把网站打成一团,而且它基于MVC,所以很多开发人员都理解它 . 但Play缺乏Rails(社区,插件,专业知识,才能等)的深度和广度 . 如果你想要快速,简单的MVC,那么请使用Rails和JRuby并在Scala中编写你的后端(他们的工作非常好 . )

    电梯是一种不同的野兽 . 有一个重要的学习曲线(停止思考MVC并开始考虑用户体验首先流向业务逻辑 . )但是,一旦你达到了学习曲线,Lift网站就更安全,高度可扩展,超级互动,更容易保持一段时间 .

  • 20

    要了解Play可以做些什么(可能很酷),请查看TypeSafe Console

    要快速使用Lift,请使用template project .

    有关使用Mongo with Play的示例,请查看Factile .

    总而言之,我认为升降或游戏都不会出错 . 两者都是活跃的项目,拥有良好的社区和作者的良好支持 . 这真的取决于您的业务问题 . 如果工具支持对您很重要,那么您可能希望使用Play(它在IntelliJ Idea上得到很好的支持) .

    请注意,作为TypeSafe技术堆栈的一部分,Play将构建最新版本的Scala,因此如果使用Scala 2.10功能对您很重要,那么您可能需要牢记这一点 . Lift目前正在使用Scala 2.9.2,这也很好 .

    对于我目前的项目,我使用lift-mapper进行ORM(非常棒且坚如磐石),使用Spray for REST(这简直太棒了) . 这种方法完全避免了框架,但这取决于你想要做什么 . 框架通常是要走的路 .

相关问题