99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

卷2:第22章 Yesod

2018-02-24 15:55 更新

Preface:

這篇文章是在圖靈社區(qū)中接受的第一份翻譯工作 ---- 翻譯AOSA(The Architecture of Open Source Application),目的是:

  • 在翻譯文檔的過程中深入學習開源軟件架構,同時進行知識共享
  • 認識更多的人

以下是AOSA的第2卷的第22章,關于Yesod這個Web框架的(由),Yesod的簡單介紹可以參照Wiki,及其官網(wǎng). 由于是初稿翻譯,今后也將不斷完善,歡迎指正。

Yesod?是用Haskell語言編寫的Web框架。目前流行的眾多Web框架得益于其宿主動態(tài)語言的某些特性,而Yesod則不同----其得益于Haskell的靜態(tài)語言的特性,使得代碼更高效,也更安全。

Yesod的開發(fā)從兩年前起至今,一路不斷地發(fā)展,也使之變得越發(fā)地強大。Yesod被創(chuàng)造伊始,便是為了滿足解決實際項目問題的需要,同時其也在實際項目經(jīng)驗積累中不斷地完善起來。起初,該框架的開發(fā)以及維護完全就是“個人秀”的行為,而緊接下來的一年里,在源自于社區(qū)不斷開發(fā)以及維護努力之下,終于使得Yesod一躍成為了非?;钴S的一個開源項目。

Yesod處于萌芽階段時,并沒有很好的定義、設計,有哪個實際項目組愿意嘗試其進行開發(fā)是一件讓人想都不敢想的事。后來,Yesod的變更使之逐漸進入穩(wěn)定階段,并且也被應用到了一些實際項目中,這時候我們也開始著手對設計決策的不足進行重新考察。那時起,我們將改善項目的主要精力投放于如何讓面向用戶的API更易用 ---- 很快我們有了穩(wěn)定的1.0發(fā)行版。

你可能會問:為什么要再開發(fā)一個Web框架呢? 或者讓我們換一種提問方式:為什么要用Haskell呢? 一般看來,目前世界上大多數(shù)開發(fā)者都圍繞以下兩類語言風格:

  • 靜態(tài)類型語言,比如Java,C#和C++。這些編程語言提供高效的代碼執(zhí)行以及類型安全,但開發(fā)起來總讓人覺得比較笨重

  • 動態(tài)類型語言,比如Ruby和Python。這些編程語言極大地提升了生產(chǎn)效率(至少短期來說是這樣),但是卻難掩執(zhí)行效率的相對低下以及編譯器對程序正確性驗證支持不足的特點(對于最后這點而言,解決方案是進行一定的單元測試。我們一會兒會談到。)

這是對語言的一種錯誤的二分法。靜態(tài)類型語言沒有理由變得這么愚蠢。Haskell在作為強類型語言的同時,也兼顧了許多Ruby和Python中的表達特性。事實上,Haskell的類型系統(tǒng)比Java及其語言家族更加嚴謹,能在編譯期糾正更多的錯誤:空指針異常被排除了;不可變的數(shù)據(jù)結(jié)構簡化了代碼推理的同時,也簡化了并行與并發(fā)編程。

那么為什么選擇Haskell? 它是一門高效的,對開發(fā)者友好的編程語言,它也提供了許多編譯時期程序正確性的檢查。

Yesod的目標就是Haskell的強大特性引入到Web開發(fā)中去。Yesod努力讓你的代碼更加緊湊,盡最大可能讓你的每一行代碼在編譯器都完成正確性檢查。換句話說,與需要大型庫去單元測試程序基本屬性相對地,編譯器都為你做好了。

從深層面來說,我們在Yesod中運用了盡可能多的高級性能優(yōu)化技術,有了它們的幫助,你的高層次代碼運行起來便能如虎添翼。

22.1 與其他Web框架的比較

總的來說,Yesod與其他主流框架(Rails,Django之流)大同小異。其主要采用了MVC范式----通過一個模板系統(tǒng)將邏輯與表現(xiàn)分離,同時提供了一個對象關系映射(ORM)系統(tǒng),以及一個用于完成路由的前端控制器。

Yesod強大的地方在于一些細節(jié)之處。Yesod盡可能在編譯階段捕獲錯誤或者異常,而非延遲到運行時,并且通過類型系統(tǒng)提供自動化捕捉bug以及保證安全性缺陷。盡管Yesod的目標是維護一系列用戶友好,高層的API,但其采用了許多函數(shù)式編程世界的新技術來提升程序的性能的同時,也不懼對開發(fā)者暴露這些內(nèi)部細節(jié)。

Yesod在架構上的主要挑戰(zhàn)來自于如何平衡這兩個看上去相互沖突的目標。舉例來說,Yesod路由方式(稱為類型安全的路由)并沒有格外標新立異。從歷史上來看,實現(xiàn)類似問題的解決方案總是一個乏味,伴隨錯誤叢生的過程。應對類似的問題,Yesod的解決方案在于采用了模板Haskell(Template Haskell,代碼生成的一種形式)使得一些中間步驟實現(xiàn)了自動化,從而加速了解決方案實現(xiàn)的過程。

類型安全的HTML已經(jīng)存在好一段時間了,在這個方面,Yesod既保證類型安全的威力得到充分發(fā)揮,也保持了對于開發(fā)者友好的通用模板語言所應有的特點。

22.2 Web應用接口(WAI)

待續(xù)..

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號