选择 Scala Web 框架 [关闭]

2024-04-17

我即将启动一个应在 Tomcat 服务器上运行的 Web 应用程序项目。我决定选择 Scala——我工作的 Groovy 的另一种选择——本质上是为了类型安全。我现在面临的任务是为工作选择合适的工具。

我需要开发的项目只能通过 JSON API 访问。它将与自己的数据库和两个外部服务交互,这两个服务分别公开 JSON 和 XML API。我还需要能够安排定期作业,我的应用程序将在其中与这些外部服务执行各种同步任务。

对于数据库,我希望能够在 Scala 中定义模型并自动生成架构。如果需要更改我的模型,我希望有迁移来处理它。

对于此应用程序,我正在尝试评估 Lift, Play! 2 和斯卡拉特拉。

  • Lift是我的第一选择。它是三个项目中最成熟的,并且似乎被认为是高度安全的(我不想在安全性上妥协)。此外,它还具有 Scala 中最好的 JSON 处理库。不过,在尝试了一下之后,我不确定这是否是正确的选择。该文档并不完全是我见过的最好的。此外,在我看来,Record + Squeryl 似乎是比 Mapper 更好的抽象,但这种用法的文档更加匮乏。最后,虽然 Lift 当然可以用来创建 Web 服务,但它的真正优势似乎在于状态处理,因此我不相信我的项目需要额外的复杂性。

  • Play! 2似乎有更好的文档,并且对我来说看起来更熟悉(我来自 Django 背景)。同样,它的默认数据库抽象并没有真正让我满意:ANORM 依赖于 SQL,这对类型检查没有帮助。无论如何我都必须使用 Squeryl,而且我不确定这个用例的文档是否同样好。此外,部署 Play! 2 应用程序目前比我想象的要复杂。必须安装 Play!在生产服务器上,我不确定这是否是我工作的一个选项。否则,有一个插件可以使其与 servlet 容器一起使用,但它非常新,我不确定它的稳定性/可靠性如何。

  • 最后有一个使用的选项Scalatra。 Scalatra 看起来非常容易设置,而且它的设计正是为了创建 Web 服务。妥协的办法是 Scalatra 不提供太多功能。它不与现有的 ORM 集成,也不建议如何组织应用程序的模型部分,并且对设计 cron 或命令行任务没有帮助。我也不确定该项目的长期未来。

您认为完成我的任务的最佳选择是什么?


如果您有 MVC 背景,那么 Play 会感觉最熟悉。 Lift 不是 MVC,您需要一些时间来理解它。

没有理由不能将 Scala 与基于 Java 的框架(如 Jersey、Spring MVC、空投向导 http://dropwizard.codahale.com/、Restlet、RESTEasy 等。或者您可以将 Scala 与 Grails 一起使用,就像将 Java 与 Grails 一起使用一样。注意 - Groovy 从 2.0 版开始具有类型安全性,因此这是需要考虑的事情。

如果您正在考虑 Scalatra 那么不要忘记Spray https://github.com/spray/spray/wiki/, 未过滤 http://unfiltered.databinder.net/Unfiltered.html, BlueEyes https://github.com/jdegoes/blueeyes...

一定要看看马特·雷布尔的Web框架综合比较 http://www.slideshare.net/mraible/comparing-jvm-web-frameworks-jfokus-2012。还有其他这些问题:Rest API 服务器的 Scala 框架? https://stackoverflow.com/questions/3678795/scala-framework-for-a-rest-api-server, 如何使用 Akka 实现 REST Web 服务? https://stackoverflow.com/questions/6668999/how-to-implement-a-rest-web-service-using-akka

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择 Scala Web 框架 [关闭] 的相关文章

  • 如何在我的 play2.0 框架 Web 应用程序中集成短信和电子邮件提醒。

    我正在 play2 0 框架中创建一个 Web 应用程序 在这个应用程序中 我需要集成短信和电子邮件提醒 通过从数据库获取详细信息来在特定日期和时间发送短信和电子邮件 为此 是否有任何免费的 API 调度程序 网络服务或应用程序 如果有的话
  • formFactory.form() 不存在!游戏框架

    我有一个小问题 我想创建一个网络应用程序 并且我通过 java 文档学习 PlayFramework 这个示例代码 public Result hello DynamicForm requestData formFactory form b
  • Either 相当于受检查的异常吗?

    从 Scala 开始并阅读有关Either我很自然地将新概念与我所知道的东西 在本例中来自 Java 进行比较 与之前有什么区别吗concept检查异常和Either 在这两种情况下 失败的可能性在方法中明确注释 throws或返回Eith
  • Spark - Scala - 用另一个数据帧中的查找值替换数据帧中的值

    我正在 Databricks 上使用 Spark 编程语言是Scala 我有两个数据框 主要数据框 见截图 1 https i stack imgur com EShir png 查找数据框 见截图3 https i stack imgur
  • Scalaz 7 Iteratee 处理大型 zip 文件(OutOfMemoryError)

    我正在尝试使用 scalaz iteratee 包在恒定空间中处理大型 zip 文件 我需要对 zip 文件中的每个文件执行一个长时间运行的进程 这些进程可以 并且应该 并行运行 我创建了一个EnumeratorT使每个膨胀ZipEntry
  • 如何从 Scala repl 中取消导入隐式?

    是否可以从 repl 中取消导入隐式内容 说我做这样的事情 scala gt import scala math BigInt import scala math BigInt scala gt implicits 2 implicit m
  • 将无形状 HList 转换为 TupleN,其中元组形状不需要与 HList 形状完全匹配

    我想创建相当于 def toTupleN A1 AN L lt HList l L TupleN A1 AN 代码使用toTupleN仅当恰好有一个时才应该编译N中的值的组合l可以从中创建元组 其他任何内容都应该生成编译时错误 应考虑可用的
  • Play框架2:如何在路由、视图和控制器之间传递对象?

    我正在尝试将书籍对象从视图传递到路线 然后将其发送到控制器中进行计算 我的代码如下 bookList scala html books java lang Iterable Book main BookList div class row
  • 为什么调用 take() 方法时 Slick 会生成子查询

    I use Slick http slick typesafe com 1 0 0 RC1 我对表对象有这样的定义 object ProductTable extends Table Int String String String Dou
  • Java / Scala Future 由回调驱动

    简洁版本 我怎样才能创建一个Promise
  • 宏:knownDirectSubclasses 被嵌套类型破坏?

    我有一个宏 它枚举密封特征的直接子类型 import scala reflect macros Context import language experimental macros object Checker def apply A U
  • 如何发现 Scala 远程 Actor 已死亡?

    在 Scala 中 当另一个 远程 actor 终止时 可以通过设置 trapExit 标志并以第二个 actor 作为参数调用 link 方法来通知一个 actor 在这种情况下 当远程参与者通过调用 exit 结束其工作时 第一个参与者
  • 使用 Spray-json 解析简单数组

    我正在尝试 但失败了 了解 Spray json 如何将 json feed 转换为对象 如果我有一个简单的 key gt value json feed 那么它似乎可以正常工作 但是我想要读取的数据出现在如下列表中 name John a
  • 通用特征的隐式转换

    我正在实现一个数据结构 并希望用户能够使用任何类型作为密钥 只要他提供一个合适的密钥类型来包装它 我有这个关键类型的特质 这个想法是进行从基类型到键类型的隐式转换 反之亦然 实际上 只使用基类型 该特征看起来像这样 trait Key T
  • Scala 如何忽略 Java 的检查异常?

    例如如果调用 JavaThread sleep这会抛出一个已检查的InterruptedException来自 Scala 源文件 然后不需要将调用包含在 Scala 中try catch Scala 如何删除将调用包围在 a 中的规则tr
  • Java 表达式树 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有相当于 net的 LINQ 下的表达式树JVM 我想实现一些类似 LINQ 的代码结构Scala
  • 在 Scala 和 SBT 中调试较长的编译时间

    在我的 Scala SBT 项目中 我有一个文件需要 5 分钟才能编译 所有其他的都可以在几秒钟内编译 这使得开发非常痛苦 我确信我滥用了一些 Scala 构造 但我不知道如何调试它 如何在 Scala 中调试较长的编译时间 我正在使用 S
  • Play Framework 2.3 (Scala) 中的自定义 JSON 验证约束

    我设法使用自定义约束实现表单验证 但现在我想对 JSON 数据执行相同的操作 如何将自定义验证规则应用于 JSON 解析器 示例 客户端的 POST 请求包含用户名 username 我不仅要确保该参数是非空文本 而且还要确保该用户确实存在
  • Scala Tuple2Zipped 与 IterableLike zip

    两种实现有什么区别 这个比那个好吗 有一篇博客文章说 Tuple2Zipped 性能更好 但没有提供原因 并且查看源代码我没有看到差异 val l1 List 1 2 3 val l2 List 5 6 7 val v1 l1 zip l2
  • 类型级编程有哪些示例? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我不明白 类型级编程 是什么意思 也无法使用Google找到合适的解释 有人可以提供一个演示类型级编程的示例吗 范式的解释和 或定义将

随机推荐

  • 是否可以在具有 $elemMatch 投影的同一集合上使用查询投影?

    我知道您可以使用以下方法限制子集合数组中的项目 elemMatch http docs mongodb org manual reference operator projection elemMatch 作为投影 当这样使用它时 它会返回
  • 分割视图控制器必须是根视图控制器

    每当我尝试以模态方式呈现 UISplitViewController 时 应用程序就会崩溃 因此它必须始终是根视图控制器 谁能证实这一点吗 来自Apple iPad 编程指南 http developer apple com iphone
  • ROracle dbWriteTable 为 R DATE 列创建 Oracle TIMESTAMP 列

    我正在尝试在 Windows 7 64 位上使用 64 位 R3 0 0 中的 ROracle 包 1 1 10 将一些数据上传到我的 Oracle 11g 数据库 ROracle 帮助dbWriteTable states 日期和 POS
  • 在 Pandas 图中添加图例

    我正在使用 Pandas Plot 绘制密度图 但我无法为每个图表添加适当的图例 我的代码和结果如下 for i in tickers df pd DataFrame dic 2 i mean np average dic 2 i std
  • Telegram (Telesharp) - 海量请求(讨论防洪限制)

    我在用着TLSharp https github com sochix TLSharp用于连接到 Telegram 服务 我想搜索 400 000 个频道 请致电服务人员搜索用户异步40万次 我每 15 秒调用一次此服务 但我得到了 1 天
  • Python 读取命名为 PIPE

    我在 linux 中有一个命名管道 我想从 python 中读取它 问题在于 python 进程连续 消耗 一个核心 100 我的代码如下 FIFO var run mypipe os mkfifo FIFO with open FIFO
  • 如何解决 Heroku 上部署的 python 应用程序上的“500 内部服务器错误”?

    基本上 我有一个即将到来的学校项目 任何计算机科学主题 我决定构建一个元数据查看器 我不是程序员或编码员 我的编码课程今年开始 这个项目只是为了介绍 我可以使用在线资源 所以 我刚刚看到了这个GitHub 存储库 https github
  • 如何 git 推送 reflog?

    有没有办法将引用日志推送到远程 这似乎是一件非常有用的事情 但我不知道如何做到这一点 我正在设想类似的事情git push include reflogs 最后 我希望遥控器在推送时有一份引用日志的逐字副本 我尝试使用 mirror 但是
  • 如何使用 Qt 使用鼠标更改网格布局单元格的大小?

    我使用网格布局 水平和垂直 我喜欢这样一个事实 调整窗口大小时会填充整个窗口内容 但这个扩展管理不善 我经常想只改变网格布局中一列的大小而不改变窗口的大小 例如在 Windows 资源管理器中 有两列 左侧的目录列表及其从左侧到右侧的内容
  • 将 pandas groupby 结果合并回 DataFrame

    我有一个看起来像这样的数据框 idn value 0 ID1 25 1 ID1 30 2 ID2 30 3 ID2 50 我想在此框架中添加另一列 即按 idn 分组的最大 值 我想要一个看起来像这样的结果 idn value max va
  • SD卡传输(存储空间不足)

    我试图让我的应用程序能够移动到 SD 卡 到目前为止 我已将属性 android installLocation auto 添加到我的清单文件中 当我尝试在手机上将应用程序的存储选项从内部移动到外部 75MB 时 可以选择移动它 但在完成
  • 通过 HTTPS 的 Ajax GET 请求

    我怎样才能发送ajaxGET请求结束HTTPS get抛出这个 XMLHttpRequest cannot load https Origin null is not allowed by Access Control Allow Orig
  • 让人们在电影院就座

    这是基于我读到的一篇关于大型软件公司提出的谜题和面试问题的文章 但它有一个转折 一般问题 有一种算法可以让人们在电影院就座 让他们直接坐在朋友旁边 而不是敌人旁边 技术问题 给定一个 N M 网格 用 N M 1 项填充网格 每个项目都有一
  • 作业计划程序未在 Android N 上运行

    作业计划程序在 Android Marshmallow 和 Lollipop 设备上按预期工作 但在 Nexus 5x Android N 预览版 上未运行 安排作业的代码 ComponentName componentName new C
  • Chrome 堆快照——分离节点没有颜色

    我正在跟进本教程 https developers google com web tools chrome devtools memory problems 在 使用堆快照发现分离的 DOM 树内存泄漏 下 当我搜索分离节点时 我看到一堆
  • 如何在 Spring 中将对象添加到应用程序范围

    我们可以使用设置请求属性Model or ModelAndViewSpring 中的对象 我们可以用 SessionAttributes将属性保留在会话范围内 那么我怎样才能将属性放入applicationSpring中的作用域 sprin
  • 四叉树和Kd树

    我有一组不同位置的纬度和经度 也知道我当前位置的纬度和经度 我必须找出距离当前位置最近的地方 Kdtree 和四叉树中哪种算法最适合从纬度和经度集合中找出邻居位置 一种相对于另一种有什么优势 我们如何在 C 中将这些实现到算法中以实现上述目
  • 可以集成到 C# 应用程序中的 Diff 工具 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Swift - 从 ISO8601 日期字符串检索时区

    我以这种格式保存在数据库中的日期 yyyy MM dd T HH mm ssZ 例如 2018 05 17T11 15 00 0330 时区有所不同 以用户本地时区为准 我想检索并显示日期 如 2018 年 5 月 17 日上午 11 点
  • 选择 Scala Web 框架 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi