我即将开始一个应该运行在Tomcat服务器上的Web应用程序的项目。 我决定去Scala–另一个我正在使用Groovy的替代scheme – 基本上是为了types安全。 我现在面临为工作select正确工具的任务。 我需要开发的项目只能通过JSON API访问。 它将与自己的数据库和两个外部服务交互,这两个服务分别公开一个JSON和XML API。 我还需要能够安排周期性的工作,我的应用程序将执行与这些外部服务的各种同步任务。 对于数据库,我希望能够在Scala中定义我的模型并自动生成模式。 如果有需要改变我的模型,我想有移民来处理它。 对于这个应用程序,我正在评估Lift,Play! 2和Scalatra。 电梯是我的第一select。 这是三个项目中最成熟的,似乎被认为是高度安全的(我不想在安全上妥协)。 此外,它具有什么似乎是在斯卡拉最好的JSON处理库。 尽pipe如此,我不确定这是否是正确的select。 这个文档并不是我见过的最好的。 而且,Record + Squeryl似乎比Mapper更好的抽象,但是这个用法的文档更加稀缺。 最后,Lift虽然可以用来创buildWeb服务,但它的真正优势似乎在于处理状态,所以我不相信我的项目需要额外的复杂性。 玩! 2似乎有一个更好的文档,看起来更熟悉(我来自Django的背景)。 同样,它的默认数据库抽象并不能使我安心:ANORM依赖于SQL,这对于types检查没有帮助。 无论如何,我将不得不使用Squeryl,我不确定这个用例的文档是否一样好。 而且,部署Play! 目前有2个应用程序比我想要的要复杂得多。 一个人必须安装Play! 在生产服务器上,我不知道这是我工作的一个选项。 否则,有一个插件可以使它与servlet容器一起工作,但它是非常新的,我不确定它是多么的稳定/可靠。 最后还有使用Scalatra的选项。 Scalatra似乎很容易build立,它的devise正是为了创buildWeb服务。 妥协是Scalatra不提供太多的function。 它不与现有的ORM集成,也不build议如何组织应用程序的模型部分,也不能帮助devisecron或命令行任务。 我也不确定项目的长远未来。 你认为什么是我的任务的最佳select?
最近我听到很多有关Scala和Lift Web框架的好消息,尤其是来自Foursquare的人,因此我可能会在下一个项目中使用这个技术。 你们是Scala / Lift开发者吗? 你在这个平台上开发的经验是什么?它比Ruby On Rails或Python / Django有什么优势? 你是否认为它是一种可行的技术,在接下来的几年中将会是“值得关注的东西”? 这值得么? 在Scala / Lift平台上分享您的经验。
我正在尝试使用JSON在浏览器和我的应用程序之间发送数据。 我正在尝试使用Lift 1.0创build和parsingJSONstring,但出于某种原因,我无法parsing刚刚构build的JSON: scala>import scala.util.parsing.json.JSON._ import scala.util.parsing.json.JSON._ scala> import net.liftweb.http.js._ import net.liftweb.http.js._ scala> import net.liftweb.http.js.JE._ import net.liftweb.http.js.JE._ scala> val json = JsObj(("foo", 4), ("bar", "baz")).toJsCmd json: String = {'foo': 4, 'bar': 'baz'} scala> parseFull(json) res3: Option[Any] = None 我如何以编程方式在Scala / Lift中构build一个有效的JSON消息,并且可以再次parsing?
我试图find“正确”的演员实施。 我意识到有一堆他们,挑一个有点混乱。 就我个人而言,我对远程演员特别感兴趣,但是我认为一个完整的概述会对其他人有所帮助。 这是一个相当普遍的问题,所以请随时回答你所知道的实现。 我知道下面的Scala Actor实现(SAI)。 请添加缺less的。 斯卡拉2.7(区别于) 斯卡拉2.8 Akka( http://www.akkasource.org/ ) 电梯( http://liftweb.net/ ) Scalaz( http://code.google.com/p/scalaz/ ) 这些SAI的目标用例是什么(轻量级与“重”的企业级框架)? 他们是否支持远程演员? 远程参与者在SAI中有什么缺点? 他们的performance如何? 社区有多活跃? 他们开始有多容易? 文档有多好? 他们有多容易延伸? 他们有多稳定? 哪些项目正在使用它们? 他们有什么缺点? 他们的devise原则是什么? 他们是基于线程还是基于事件(接收/反应)还是两者? 嵌套接收 热衷于演员的消息循环
我正在尝试在Lift / Record / Squeryl中创build一个EnumListField,类似于LiftMapper中的MappedEnumList。 存储types应该是Long / BIGINT。 我明白,如果我定义: def classOfPersistentField = classOf[Long] 然后Squeryl会知道它应该创build一个BIGINT列。 而且我知道它使用setFromAny()来设置值,传入Long。 我不明白的一件是: 它将如何读取该字段的价值? 如果它使用valueBox,它将得到一个Seq [Enum#Value],并且不知道如何将它变成一个Long。 如何告诉Squeryl将我的Seq [Enum#Value]转换为Long,或者定义一个返回Long的“getter”,并且不与“正常”getter(s)冲突?
我们正在考虑将Rest API服务器(它位于Web服务中,在Symfony PHP中)移到Scala,原因有几个:速度,没有开销,CPUless,代码less,可伸缩性等等。但是我一直在享受我最近在Scala书以及所有博客文章和问题中学到的东西(这不是太难看!) 我有以下select: 从头开始构buildRest API服务器 使用像Scalatra这样的小型Scala Web框架 使用电梯 有些东西,我将不得不使用:HTTP请求,JSON输出,MySQL(数据),OAuth,Memcache(caching),日志,file upload,统计(也许Redis)。 你会推荐什么?
我将现有代码从Rogue 1.1.8升级到2.0.0并将2.4-M5 to 2.5 lift-mongodb-record 2.4-M5 to 2.5 。 我很难编写包含scala枚举的MongoCaseClassField ,我真的可以使用一些帮助。 例如, object MyEnum extends Enumeration { type MyEnum = Value val A = Value(0) val B = Value(1) } case class MyCaseClass(name: String, value: MyEnum.MyEnum) class MyMongo extends MongoRecord[MyMongo] with StringPk[MyMongo] { def meta = MyMongo class MongoCaseClassFieldWithMyEnum[OwnerType <: net.liftweb.record.Record[OwnerType], CaseType](rec : OwnerType)(implicit mf […]
我知道这个问题有点儿开放,但我一直在寻找Scala / Lift作为Java / Spring的替代品,我想知道Scala / Lift有什么优势。 从我的angular度和经验来看,Java Annotations和Spring确实可以最大限度地减less您为应用程序执行的编码量。 Scala / Lift会改进吗?