在Scala中构建Web API的4大框架

3,316 阅读5分钟

  Scala是一种强大的语言,很快就成为许多开发人员的最爱。然而,语言只是一个起点-并非每个函数都将由语言核心覆盖。Scala还创建了一些厉害的框架。接下来看看Scala的4个强大框架以及其优点和缺点。请记住,框架的最佳选择总是应符合您特定项目的要求——因此,请酌情考虑我们的推荐,根据您自己的项目要求决定最适合您的项目。

  Play Framework

  ——Java和Scala的高速Web框架

  Play Framework是一个开源的Scala框架,于2007年首次发布。它目前由Lightbend,Zengularity及其用户开发人员社区开发。该框架的核心功能基于利用JVM及其相关库来构建RESTful应用程序。它目前被一些相当大的名称网站使用,包括LinkedIn,三星的IoT Artik平台和教育网站Coursera。在撰写本文时,Play 2.6是Play的当前版本,已在开发中取代了Play 1。

  优点

  1.与JVM密切相关,因此,Java开发人员会发现它很熟悉且易于使用。

  2.广泛支持各种工具集和IDE系统。

  3.它完全基于函数式编程概念,并促进了API优先的RESTful设计实践。

  4.Play 2是被动的,允许并行远程呼叫。这意味着它适用于WebSockets和其他相关的以服务器为中心的方法。

  5.它为资产汇编、格式处理、数据库集成等提供了广泛的框架支持结构

  6.Play是开源的,它使采取者获得更高的安全性和持续审查的代码库。

  缺点

  1.社区中有许多很棒的插件,当然,但它们的稳定性和实用性并不总能得到保证。

  2.Play 2使用SBT构建系统。虽然它非常强大,但有些人对使用implicits,通配符导入以及其他使基础设施开发和集成极其困难的“怪癖”提出了担忧。

  Finch

  ——用于构建Finagle HTTP服务的Scala组合器库

  Finch是一个HTTP原语的模块化系统,它协同工作以形成HTTP API。整个框架以可组合性的概念为中心,因此,它是一个高度模块化、可定制的系统。“Finch是Finagle顶层的一层纯功能基本块,用于构建可组合的HTTP API。它的任务是为开发人员提供简单而强大的HTTP原语,使其尽可能接近裸机Finagle API。”

  优点

  1.Finch利用功能块来构建其框架,因此它非常模块化。

  2.话虽如此,它提供了一些相当强大的HTTP原语,这使其非常适合快速开发和测试。因此,Finch非常适合小型项目和初创公司。

  3.由于其模块化的性质,它对于各种系统来说非常快速且功能强大。

  缺点

  1.主要缺点在于,其结构化更多是最小单位的实现,虽然允许进一步的实现和开发迭代,但不被视为全栈解决方案。

  Akka HTTP

  ——Akka HTTP模块在akka-actor和akka-stream之上实现完整的服务器和客户端HTTP堆栈

  Akka HTTP是Scala的高度模块化和极其强大的Akka实现。它是在“框架”中发展创建的,其中预先形成的菜单和功能指引。Akka HTTP被创建为“非框架”形式,提供了许多开发工具,而不会强迫开发人员做出任何选择。正如文档所描述的那样,“它不是一个Web框架,而是一个更通用的工具包,用于提供和使用基于HTTP的服务。虽然与浏览器的交互当然也在范围内,但它并不是Akka HTTP的主要关注点。”

  优点

  1.Akka HTTP的最大好处是它与Akka功能集成在一起。与Akka一样,它支持许多可以执行并行命令和高级计算处理的系统。

  2.Akka HTTP拥有强大的开发人员和贡献者支持,所有这些都在Lightbend下进行。此外,它还具有出色的文档和易于理解的支持中心。

  缺点

  1.Akka HTTP比这个前面2个实现方式都要慢,因此,虽然它可以有效扩展,但它已经开始落后了,可以这么说。

  2.Lightbend是一个伟大的社区,但是相对于其他社区来说,陷入单一供应商可能会令人十分担忧。供应商锁定可能很昂贵且难以破解,因此在采用该解决方案之前应考虑这点。

  Chaos

  ——用于在Scala中编写REST服务的轻量级框架

  Chaos是Mesosphere的框架。它专为RESTful开发而设计,也是开发人员之前在Java Framework空间中使用Dropwizard和Twitter Commons的经验之谈。他们将Chaos设计为Play的简化版。Chaos指的是在希腊创世神话中,宇宙创造之前的无形或虚无状态。同样,Chaos(框架)先于创建服务“宇宙”。

  优点

  1.Chaos易于使用,特别是对于那些熟悉使用Scala的用户来说。

  2.它所使用的所有库都经过了充分测试和良好支持,提供了大量的文档和知识库,可用于测试,迭代和开发。

  缺点

  1.不幸的是,Chaos本质上是一个轻量级框架,虽然它做了一些有趣的事情,但它从根本上受到这种方法的限制。

  2.正如创作者所说,它确实做得很好-REST。如果您没有构建RESTful服务,或者您正在构建一个必须集成一些“怪癖”设计的服务,那么Chaos中的默认库可能不是您要求的最佳集成。