遠(yuǎn)程辦公”">國(guó)務(wù)院聯(lián)防聯(lián)控機(jī)制新聞發(fā)布會(huì),多次肯定“云辦公”、“遠(yuǎn)程辦公”
1013
2025-03-31
Scala是一種強(qiáng)大的語(yǔ)言,很快就成為許多開發(fā)人員的最愛。然而,語(yǔ)言只是一個(gè)起點(diǎn) - 并非每個(gè)函數(shù)都將由語(yǔ)言核心覆蓋。Scala還創(chuàng)建了一些厲害的框架。接下來(lái)看看Scala的4個(gè)強(qiáng)大框架以及其優(yōu)點(diǎn)和缺點(diǎn)。請(qǐng)記住,框架的最佳選擇總是應(yīng)符合您特定項(xiàng)目的要求——因此,請(qǐng)酌情考慮我們的推薦,根據(jù)您自己的項(xiàng)目要求決定最適合您的項(xiàng)目。
Play Framework
——Java和Scala的高速Web框架
Play Framework是一個(gè)開源的Scala框架,于2007年首次發(fā)布。它目前由Lightbend,Zengularity及其用戶開發(fā)人員社區(qū)開發(fā)。該框架的核心功能基于利用JVM及其相關(guān)庫(kù)來(lái)構(gòu)建RESTful應(yīng)用程序。它目前被一些相當(dāng)大的名稱網(wǎng)站使用,包括LinkedIn,三星的IoT Artik平臺(tái)和教育網(wǎng)站Coursera。在撰寫本文時(shí),Play 2.6是Play的當(dāng)前版本,已在開發(fā)中取代了Play 1。
優(yōu)點(diǎn)
1. 與JVM密切相關(guān),因此,Java開發(fā)人員會(huì)發(fā)現(xiàn)它很熟悉且易于使用。
2. 廣泛支持各種工具集和IDE系統(tǒng)。
3. 它完全基于函數(shù)式編程概念,并促進(jìn)了API優(yōu)先的RESTful設(shè)計(jì)實(shí)踐。
4. Play 2是被動(dòng)的,允許并行遠(yuǎn)程呼叫。這意味著它適用于WebSockets和其他相關(guān)的以服務(wù)器為中心的方法。
5. 它為資產(chǎn)匯編、格式處理、數(shù)據(jù)庫(kù)集成等提供了廣泛的框架支持結(jié)構(gòu)
6. Play是開源的,它使采取者獲得更高的安全性和持續(xù)審查的代碼庫(kù)。
缺點(diǎn)
1. 社區(qū)中有許多很棒的插件,當(dāng)然,但它們的穩(wěn)定性和實(shí)用性并不總能得到保證。
2. Play 2使用SBT構(gòu)建系統(tǒng)。雖然它非常強(qiáng)大,但有些人對(duì)使用implicits,通配符導(dǎo)入以及其他使基礎(chǔ)設(shè)施開發(fā)和集成極其困難的“怪癖”提出了擔(dān)憂。
Finch
——用于構(gòu)建Finagle HTTP服務(wù)的Scala組合器庫(kù)
Finch是一個(gè)HTTP原語(yǔ)的模塊化系統(tǒng),它協(xié)同工作以形成HTTP API。整個(gè)框架以可組合性的概念為中心,因此,它是一個(gè)高度模塊化、可定制的系統(tǒng)。 “Finch是Finagle頂層的一層純功能基本塊,用于構(gòu)建可組合的HTTP API。它的任務(wù)是為開發(fā)人員提供簡(jiǎn)單而強(qiáng)大的HTTP原語(yǔ),使其盡可能接近裸機(jī)Finagle API。”
優(yōu)點(diǎn)
1. Finch利用功能塊來(lái)構(gòu)建其框架,因此它非常模塊化。
2. 話雖如此,它提供了一些相當(dāng)強(qiáng)大的HTTP原語(yǔ),這使其非常適合快速開發(fā)和測(cè)試。因此,F(xiàn)inch非常適合小型項(xiàng)目和初創(chuàng)公司。
3. 由于其模塊化的性質(zhì),它對(duì)于各種系統(tǒng)來(lái)說(shuō)非常快速且功能強(qiáng)大。
缺點(diǎn)
1. 主要缺點(diǎn)在于,其結(jié)構(gòu)化更多是最小單位的實(shí)現(xiàn),雖然允許進(jìn)一步的實(shí)現(xiàn)和開發(fā)迭代,但不被視為全棧解決方案。
Akka HTTP
——Akka HTTP模塊在akka-actor和akka-stream之上實(shí)現(xiàn)完整的服務(wù)器和客戶端HTTP堆棧
Akka HTTP是Scala的高度模塊化和極其強(qiáng)大的Akka實(shí)現(xiàn)。它是在“框架”中發(fā)展創(chuàng)建的,其中預(yù)先形成的菜單和功能指引。 Akka HTTP被創(chuàng)建為“非框架”形式,提供了許多開發(fā)工具,而不會(huì)強(qiáng)迫開發(fā)人員做出任何選擇。正如文檔所描述的那樣,“它不是一個(gè)Web框架,而是一個(gè)更通用的工具包,用于提供和使用基于HTTP的服務(wù)。雖然與瀏覽器的交互當(dāng)然也在范圍內(nèi),但它并不是Akka HTTP的主要關(guān)注點(diǎn)。”
優(yōu)點(diǎn)
1. Akka HTTP的最大好處是它與Akka功能集成在一起。與Akka一樣,它支持許多可以執(zhí)行并行命令和高級(jí)計(jì)算處理的系統(tǒng)。
2. Akka HTTP擁有強(qiáng)大的開發(fā)人員和貢獻(xiàn)者支持,所有這些都在Lightbend下進(jìn)行。此外,它還具有出色的文檔和易于理解的支持中心。
缺點(diǎn)
1. Akka HTTP比這個(gè)前面2個(gè)實(shí)現(xiàn)方式都要慢,因此,雖然它可以有效擴(kuò)展,但它已經(jīng)開始落后了,可以這么說(shuō)。
2. Lightbend是一個(gè)偉大的社區(qū),但是相對(duì)于其他社區(qū)來(lái)說(shuō),陷入單一供應(yīng)商可能會(huì)令人十分擔(dān)憂。供應(yīng)商鎖定可能很昂貴且難以破解,因此在采用該解決方案之前應(yīng)考慮這點(diǎn)。
Chaos
——用于在Scala中編寫REST服務(wù)的輕量級(jí)框架
Chaos是Mesosphere的框架。它專為RESTful開發(fā)而設(shè)計(jì),也是開發(fā)人員之前在Java Framework空間中使用Dropwizard和Twitter Commons的經(jīng)驗(yàn)之談。他們將Chaos設(shè)計(jì)為Play的簡(jiǎn)化版。Chaos指的是在希臘創(chuàng)世神話中,宇宙創(chuàng)造之前的無(wú)形或虛無(wú)狀態(tài)。同樣,Chaos(框架)先于創(chuàng)建服務(wù)“宇宙”。
優(yōu)點(diǎn)
1. Chaos易于使用,特別是對(duì)于那些熟悉使用Scala的用戶來(lái)說(shuō)。
2. 它所使用的所有庫(kù)都經(jīng)過了充分測(cè)試和良好支持,提供了大量的文檔和知識(shí)庫(kù),可用于測(cè)試,迭代和開發(fā)。
缺點(diǎn)
1. 不幸的是,Chaos本質(zhì)上是一個(gè)輕量級(jí)框架,雖然它做了一些有趣的事情,但它從根本上受到這種方法的限制。
Scala API
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。
版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。