只是想知道是否有人有三个经验.我已经使用了一些RoR读取并使用了Django.它们看起来相当容易使用.电梯"容易"就像这两个一样吗?我知道简单是主观的,在这里没有背景.我的意思是在一个非常高的水平和一般意义上.
我最近听到了很多关于Scala和Lift Web框架的好东西,尤其是来自Foursquare的人,因此我可能会在我的下一个项目中使用这项技术.
这值得么?在Scala/Lift平台上分享您的经验.
我之前使用过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,这对我来说看起来更干净.(再次没有多少经验) 编辑在play2中有一个用于scala mongodb的ORM映射器https://github.com/leon/play-salat
Async - Play 2使用Akka.不知道电梯使用什么,但他们也有类似的东西.
通过CSRF支持提升船舶.Play2有一个CSRF模块,但这为你的代码增加了一个样板.
无状态身份验证似乎存在一些安全漏洞.两个框架都具有状态身份验证.(play2有状态/无状态,举起状态)
我正在开发标准的Lift平台(maven和jetty).我反复(每隔几天一次)得到这个:
Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space
2009-09-15 19:41:38.629::WARN: handle failed
java.lang.OutOfMemoryError: PermGen space
Run Code Online (Sandbox Code Playgroud)
这是在我的开发环境中.这不是问题,因为我可以继续重启服务器.在部署中我没有遇到这些问题所以这不是一个真正的问题.我只是好奇.
我不太了解JVM.我认为我认为永久代内存适用于类和内部字符串之类的东西是正确的吗?我记得有点混淆了.NET内存模型......
出现这种情况的原因是什么?默认值是否疯狂低?是否与Scala必须为Function对象和类似的FP事物创建的所有辅助对象有关?每当我用新编写的代码(每隔几分钟)重新启动Jetty时,我想它会重新加载类等等.但即便如此,它也不能用很多可以吗?JVM是否应该能够处理大量的类?
干杯
乔
我即将为一个应该在Tomcat服务器上运行的Web应用程序启动一个项目.我决定去Scala - 我工作的另一个替代方案是Groovy - 主要是为了类型安全.我现在面临着为工作选择合适工具的任务.
我需要开发的项目只能通过JSON API访问.它将与自己的数据库和两个外部服务进行交互,这两个服务分别公开JSON和XML API.我还需要能够安排定期作业,我的应用程序将使用这些外部服务执行各种同步任务.
对于数据库,我希望能够在Scala中定义我的模型并自动生成模式.如果需要更改我的模型,我希望有迁移来处理它.
对于这个应用程序,我试图评估Lift,Play!2和Scalatra.
电梯是我的第一选择.它是三个项目中最成熟的,似乎被认为是高度安全的(我不想在安全性上妥协).此外,它具有Scala中最好的JSON处理库.不过,在尝试了一下之后,我不确定这是不是正确的选择.文档并不是我见过的最好的文档.此外,Record + Squeryl在我看来比Mapper更好的抽象,但这种用途的文档更加稀缺.最后,尽管Lift当然可以用于创建Web服务,但它的真正优势似乎在于状态处理,因此我不相信我的项目需要额外的复杂性.
玩!2似乎有更好的文档,我看起来更熟悉(我来自Django背景).同样,它的默认数据库抽象并不能让我安心:ANORM依赖于SQL,这对类型检查没有帮助.无论如何我不得不使用Squeryl,我不确定这个用例的文档是否同样好.而且,部署Play!目前有2个应用程序比我想要的更复杂.一个人必须安装Play!在生产服务器上,我不确定这是我工作的选项.否则,有一个插件可以使它与servlets容器一起使用,但它是非常新的,我不确定它是多么稳定/可靠.
最后,可以选择使用Scalatra.Scalatra似乎很容易设置,它的设计完全是为了创建Web服务.折衷方案是Scalatra不提供太多功能.它不与现有ORM集成或建议如何组织应用程序的模型部分,它无助于设计cron或命令行任务.我也不确定该项目的长期未来.
您认为什么是我的任务的最佳选择?
框架Lift,Play和Wicket有哪些优缺点?哪些特征最好或仅受每个特征支持?
谢谢
我正在使用LiftWeb,XML和bind方法.
这有效:
scala> val id = "test"
id: java.lang.String = test
scala> <a href={id}>link</a>
res4: scala.xml.Elem = <a href="test">link</a>
Run Code Online (Sandbox Code Playgroud)
但如果我想要<a href="page?param=test">link</a>怎么办?
这不起作用:
scala> <a href="page?param={id}">link</a>
res5: scala.xml.Elem = <a href="page?param={id}">link</a>
Run Code Online (Sandbox Code Playgroud) 我最近在个人时间学习Scala.在工作中,我一直在学习C#/ .NET(4.0).我不是非常熟悉,要么能够最低限度地评估Lift或ASP-MVC 3.我正处于十字路口.鉴于我的时间非常有限,我必须在接下来的3-6个月内选择其中一个来学习和构建应用程序.
我今天遇到了这篇Lift文章,我立刻很感兴趣.我尝试过文章中概述的大部分内容,这让我感到无尽的沮丧和头痛.其中一些我最终放弃并实施原始的不安全的简单版本只是为了完成项目.因此,本文使Scala/Lift非常具有吸引力.
然后在午餐时,我的团队成员(和朋友)正在讨论他在.NET 4.0上使用C#进行ASP-MVC 3的工作.听起来学习和使用它会非常愉快.他谈到了足够多的东西,这些东西似乎与我早上读到的关于Lift的文章重叠.
我的问题是:鉴于我的时间有限,选择Scala/Lift而不是C#/ ASP-MVC 3有什么优点和/或缺点?与#Scala/Lift相比,C#/ ASP-MVC 3有哪些优势?
为了降低评估的复杂性:请假设每种技术的最新版本; Scala 2.8.1(2010/Dec),Lift 2.2(2011/Jan),C#/.NET 4.0(2010/Apr)和ASP-MVC 3(2011/Jan).
感谢您在这个关键架构决策点帮助我.
更新2011/Mar/19 12:25 CDT:
我曾经偶然发现了一些似乎对Scala/Lift方面非常有帮助的资源:
1.免费电子书(PDF和HTML),标题为"Exploring Lift(基于Scala) web-framework)"
2.由Lift的创建者发表的题为"View First"的 Wiki文章
电子书的第一章非常有用.我真的很喜欢Lift设计原则和实现的重点是"关注点分离"(将代码保留在显示片段之外)和"约定优于配置".
从我到目前为止看到的情况来看,虽然ASP-MVC 3使用了相同的"强大指南",但仍然依赖于代码和表示被"混合"的层.这是网站设计师和软件工程师在起源后都不敢踩的地方.IOW,在发起之后,有维护龙.我很想有人告诉我这里错了.
我有以下XML文字:
<input type='radio'
name={funcName}
value='true' />
Run Code Online (Sandbox Code Playgroud)
我想包括checked='checked'if cond是否属实.
我试过这个,
<input type='radio'
name={funcName}
value='true'
{ if (cond) "checked='checked'" else "" } />
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
(我真的很想避免重复整个标签.)