Scala是一種強大的語言,很快就成為許多開發人員的最愛。然而,語言只是一個起點-並非每個函式都將由語言核心覆蓋。Scala還建立了一些厲害的框架。接下來看看Scala的4個強大框架以及其優點和缺點。請記住,框架的最佳選擇總是應符合您特定專案的要求——因此,請酌情考慮我們的推薦,根據您自己的專案要求決定最適合您的專案。
Play Framework
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中的預設庫可能不是您要求的最佳整合。