![]() |
1
113
让我们假设我们对Scala和Java同样满意,并且忽略(巨大的)语言差异,除非它们与Spring或Lift有关。 就成熟度和目标而言,Spring和Lift几乎截然相反。
一言以蔽之,弹簧重,升力轻。有了足够的决心和资源,你就可以扭转这种局面,但你需要一个
这两个框架都令人信服。有一个广泛的应用程序,你可以选择其中之一,并做好。 |
![]() |
2
229
电梯不是铁板一块的。它是由离散元素组成的。它不忽略J/EE元素,它支持JNDI、JTA、JPA等。事实上,您不必使用J/EE的这些元素,这是Lift模块化设计的有力标志。
我写道 Web Framework Manifesto 在我开始写作之前。在很大程度上,而且比我所知道的任何其他web框架都更大的程度上,Lift实现了这些目标。 Lift的核心是抽象出HTTP请求/响应周期,而不是在HTTP请求周围放置对象包装器。在实际层面上,这意味着用户可以执行的大多数操作(提交表单元素、执行Ajax等)都由浏览器中的GUID和服务器上的函数表示。当GUID作为HTTP请求的一部分显示时,将使用提供的参数应用(调用)该函数。由于guid很难预测,并且是特定于会话的,因此使用Lift进行重放攻击和许多参数篡改攻击要比大多数其他web框架(包括Spring)困难得多。这也意味着开发人员的工作效率更高,因为他们关注的是用户操作和与用户操作相关的业务逻辑,而不是打包和解包HTTP请求的管道。例如,接受或拒绝FourSquare好友请求的代码:
就这么简单。因为创建函数时friendRequest在作用域中,所以函数在作用域上关闭。。。无需公开好友请求的主键或执行任何其他操作。。。只需定义按钮的文本(可以本地化,也可以从XHTML模板中提取,也可以从本地化模板中提取)以及按下按钮时要执行的函数。Lift负责分配GUID、设置Ajax调用(通过jQuery或YUI,是的,您可以添加自己喜欢的JavaScript库)、通过后退进行自动重试、通过排队Ajax请求避免连接不足等。 因此,Lift和Spring之间的一大区别是Lift的GUID哲学与函数相关联,具有更好的安全性和更好的开发人员生产率的双重好处。GUID->功能关联被证明是非常持久的。。。同样的构造也适用于普通表单、ajax、comet、多页向导等。
使用Scala的内置模式匹配,我们匹配传入的请求,提取路径的第三部分并获取与该值对应的用户,甚至应用访问控制检查(当前会话或请求是否有权访问给定的用户记录)。所以,当用户实例点击应用程序逻辑时,它就被审查了。 Rasmus Lerdorg 谁为雅虎做了安全工作!关于FourSquare(电梯海报儿童网站之一):
当时,FourSquare有一位工程师在编写代码(并不是说@harryh不是一个超级天才),他的主要精力是重新编写FourSquare的PHP版本,同时应对每周流量翻倍的问题。
到目前为止,Lift的设计理念为您提供了baked-in访问控制、抵抗OWASP十大安全漏洞、更好的Ajax支持以及比Spring更高的开发人员生产率等好处。 但是Lift也为您提供了最好的Comet支持。这就是为什么诺维尔选择电梯来为他们提供动力 Pulse product
所以,Lift不仅仅是另一个metoomvc框架。这是一个框架,其背后有一些已经非常成熟的核心设计原则。这个框架提供了安全性和开发人员生产力的双重优势。Lift是一个分层构建的框架,它根据开发者的需求为开发者提供了正确的选择。。。视图生成选项、持久性选项等。 Scala和Lift为开发人员提供了比XML、注释和其他组成Spring的习惯用法的混合体更好的体验。 |
![]() |
3
11
|
![]() |
4
10
只是为了好玩。为了学习新的编程方法。 |
![]() |
5
10
在最近的一个web项目中,我强烈希望使用Lift,而不是SpringMVC的忠实粉丝。我没有使用最新的版本,但是springmvc的早期版本让您在运行web应用程序时经历了很多困难。我几乎卖电梯,直到我看到电梯可以非常会话依赖,将需要'粘性会话'正常工作。摘自 http://exploring.liftweb.net/master/index-9.html#sec:Session-Management
因此,一旦需要会话,用户就必须绑定到该节点。这就产生了对智能负载平衡的需求,并影响了可伸缩性,这使得Lift无法成为我的解决方案。我最终选择了 http://www.playframework.org/ 我非常高兴。到目前为止,Play一直稳定可靠,而且非常容易使用。 |
![]() |
6
7
我 没有 从Java的背景来看Lift和Scala,这不是个人经验,但是我知道很多Lift开发人员发现Scala比Java更简洁、更高效。 |
![]() |
7
3
扩展您的知识总是一个值得的努力:)我刚刚开始学习Scala,它影响了我编写普通Java的方式,我可以说到目前为止它非常有益。 |
![]() |
8
3
|
|
9
0
所以语言的选择很重要。框架也是如此。这里有很多聪明人会建议你选择什么,但最终,最能翻译你想象力的语言/框架应该是你的选择。所以你可以选择两者。 对我来说,我正在慢慢地学习Scala,并且喜欢它。 |
![]() |
10
0
|
|
user29759326 · 如何返回递归函数中的最后一个值? 5 月前 |
|
malife89 · 将java中的字符串读取为正确的日期格式 5 月前 |
![]() |
Tim · 在java中,有没有更快的方法将字节数组写入文件? 5 月前 |
![]() |
rudraraj · java中未声明最终变量 5 月前 |
![]() |
Bala Ji · 以下BFS的实施效率如何? 5 月前 |