天天看點

探讨後端選型中不同語言及對應的Web架構JavaScriptPythonJavaPHPRuby其他

  不得不指出的是,當我們喜歡一種語言的時候,我們可能會偏愛于在這門語言裡尋找可用的方案。這自然是有好有壞,好的一點是:我們可以成為這門語言的專家;不好的一點是:選擇的可能不是最合适的方案。

  下面先探索一下可用的語言,以及它們對應的web架構(以下内容均為本書作者個人觀點)。

  按照目前的流行趨勢來看,javascript 是一門成本效益非常高的語言。因為隻要是web,就會有前端,隻要有前端,就需要有javascript。與此同時,node.js 在背景中的地位已經愈發重要了。對一般的項目而言,可以使用它來完成前端和背景,除此之外,還有移動應用。

  在那些可以使用浏覽器來運作的裝置上,我們都可以使用 javascript 來開發使用,例如:

使用 node.js 作為背景語言,express、koa 等作為背景mvc 架構,再選擇一個前端架構來實作前台。

使用基于浏覽器核心的桌面應用electron,加上node.js 生态系統裡的子產品來實作桌面應用。

使用混合應用移動架構cordova,混合應用架構ionic 來實作跨平台的移動應用。

使用 tessel 和ruff 等硬體來開發移動應用。

人們使用 webview 和javascript 來開發應用的很大一部分原因是成本比較低。除了可以高效地開發ui,還支援跨平台運作,即隻需要編寫一次代碼就可以在不同的作業系統上運作,并且當應用對性能要求不高時,隻要适當地優化,它就可以表現得相當不錯。

  在這門語言裡,有兩個背景 mvc 架構比較流行。

express:是在node.js 上最早的mvc 架構,它由ruby上的輕量級架構sinatra啟發而來的。其架構本身封裝了大量實用的功能,核心特性是使用中間件來處理http 請求。

koa:是由 express 的核心開發者基于 es6 新特性打造的新架構。與express相比,去除了一些架構自帶的功能,更加輕量級,可以讓開發者有更多的選擇。

當然,這也意味着需要使用者自己去搭建這些環境。

  簡單對比一下兩者,express 發展得比較早,其生态系統比較豐富,很容易找到所需要的插件。koa 則基于es6 語言帶來一些新的特性,實時解決舊語言的一些問題,如回調等。

  python 誕生得比較早,其語言特性是做事情隻有一種方法,這個特點也決定了這門語言很簡單。與javascript 相比,它仍是一門成本效益非常高的語言,隻是它不能在前端運作。

  python 是一門簡潔的語言,有大量的數學、科學工具、人工智能的庫,這意味着在不遠的将來它會發揮更大的作用。同時在web 開發領域也有廣泛的應用,除了正常的web開發,它還在網絡爬蟲中廣受歡迎。

  同樣,在python 語言裡也有兩個不錯的架構可以選擇,其中的django 是重量級架構,flask 則是輕量級架構。

django:最早是被應用于内容管理系統而開發的,其架構裡自帶了相當多的元件:orm、表單序列化及驗證系統、背景系統、緩存架構、中間件支援等。在其官網上宣稱是:the web framework for perfectionists with deadlines,它既可以滿足完美主義者,又可以在截止期限前傳遞軟體。

flask:是一個輕量級的架構,它隻有簡單的核心部分。換句話說,你可以按自己的需要添加orm、使用者認證、檔案上傳等功能。在今天來看,它的生态系統也相當豐富,可以完成絕大部分功能。

選擇 flask 而不是選擇django 的原因是:django 本身規定好了一系列的規範和習慣。

  因而在程式設計時,我們隻需要按步驟一步步往下走即可。

  本書采用 django 作為web 開發架構的主要原因是,它适合作為cms 架構,并且提供了豐富的元件功能,如使用者權限管理、自帶背景管理系統、orm 等。

  在今天看來,java 仍然受企業歡迎,除了在企業級web 系統開發上,它還在android應用的開發上綻放光彩。

  在校期間,筆者一點兒也不喜歡 java。後來才發現,我從 java 中學到的東西比從其他語言中學的東西還多。如果 oracle 不毀壞 java,那麼它會繼續存活很久。我可以用javascript 造出各種我想要的東西,但是通常我無法保證它們是優雅地實作。過去人們在java 上花費了很多時間,或在架構上,或在語言上,或在模式上。由于這些投入,都給了人們很多啟發。這些都可以用于新的語言和新的設計,畢竟沒有什麼技術是獨立于舊的技術産生的。

  由于在 java 語言裡,筆者主要接觸的是 spring 架構,是以下面讨論一下 spring。

spring mvc:是由 spring 架構提供的建構 web 應用程式的全功能 mvc子產品。由于架構本身高度可配置,即可以直接使用編寫 xml 而不是 java 來實作功能。它是一個典型的 mvc 架構,并且也是一個純正的servlet 系統。

spring boot:其作用在于建立和啟動新的基于 spring 架構的項目。系統本身做好了對不同架構的配置與內建,我們隻需要對其配置,并編寫少量的代碼即可。

如果你正在考慮使用 spring 架構,建議使用 spring boot。

  php 是一門很容易上手的語言,由于其容易上手,并且發展得比較成熟。是以,有相多當的個人網站使用它作為開發語言,如 facebook 這樣大流量的網站也在使用它。另外,不得不提及的是 wordpress 已經占領了 cms 市場超過一半的份額,并且它也占領了全球網站的四分之一。wordpress 原生是為部落格系統而建立的開源架構,由于部落格系統和内容管理系統在功能上很多是相似的,是以它成了最具知名度的内容管理系統(contentmanagement systemcms)。

  在這裡并不基于 wordpress 來開發内容管理系統,因為它已經是一個相當成熟的架構了。如果你需要一個部落格系統或者内容管理系統,首選 wordpress,然後才是自己編寫。

  php 在架構方面有比較多的選擇,遺憾的是,筆者隻對laravel 比較了解。它是在php 5.3 之後開發的新架構,其類似于ruby on rails—為php 程式員提供快速開發的機制—提供快速開發的工具集,如生成代碼、資料遷移、orm 等。

  ruby 是一門優美而巧妙的語言,它可以使編寫出來的代碼看上去更自然、簡潔,更具有表達力,是以深受程式員歡迎。早期 ruby 語言的應用場景特别少,直至ruby onrails 的出現。它是嚴格按照mvc 結構開發的web 開源架構,其緻力于提升程式員的快樂感和生産效率—快速建立頁面、模闆和查詢功能等。不過如今由于可維性和性能的問題,它正在逐漸被替換。隻是對初創公司來說,它的開發效率仍使得它是一個不錯的選擇,随後在業務穩定後使用其他架構來替換。

  同樣,由于ruby on rails 是一個重量級的選擇,ruby 程式員也推出了自己的輕量級架構 sinatra。它是一個基于ruby 語言的dsl(領域專屬語言),由于其代碼行數少,且簡單、簡潔,可以很容易深入了解架構并對其做出定制。

  除了上面提到的語言,還有一些語言也很不錯,如go、scala 等。限于作者能力有限,以及篇幅的原因,在此就不展開詳細讨論。

  選擇架構和語言後,還需要在選型的時候考慮資料存儲的問題。

                      

探讨後端選型中不同語言及對應的Web架構JavaScriptPythonJavaPHPRuby其他

  想及時獲得更多精彩文章,可在微信中搜尋“博文視點”或者掃描下方二維碼并關注。

                         

探讨後端選型中不同語言及對應的Web架構JavaScriptPythonJavaPHPRuby其他