Node.js 與 PHP:理解服務器端開發
譯文【51CTO.com快譯】選擇合適的語言、框架、庫和數據庫工具包是成功執行項目的第一步。雖然了解每個工具的優缺點是執行這種比較分析的合理途徑,但如果前端和后端開發團隊了解適當地工具,工作效率會大大很多。
服務器端開發對于設計基于web的功能性和流動性產品(網站、應用程序或原生web應用程序)至關重要。客戶端開發涉及用戶體驗和信息的布局方式。服務器端開發負責高效組織和訪問存儲在數據庫和 Web 應用程序中的數據,使用靜態資源(如 CSS 和 JavaScript 或 HTML 模板)甚至數據進行訪問。
因此,在為開發下一個項目時,了解服務器端開發的基本要求至關重要。
一、服務端開發的基本要求
1. 投入產出模型
無論使用何種語言、框架和庫進行開發,基本流程或多或少都保持不變。使用的系統調用,始終與內核交互。
系統調用負責向內核提供請求,內核在設備級別執行這些請求。這種安排確保所有特定于設備的計算都在內核級別完成,并且應用程序不必處理過多的計算負載。
2. 阻塞與非阻塞調用
系統調用通常被確定為阻塞調用。“阻塞”是指內核等待返回結果或信息的時間。例如,內核可能會等待設備準備好進行計算,或等待訪問某些設備數據等。這些挑戰會導致阻塞調用,就意味著指令在幾毫秒內不會執行完畢。
非阻塞調用對工程師來說更復雜,但可以節省關鍵的計算資源。對于這種安排,可以命令內核在必要的數據可用時發出警報,同時將請求放入隊列中。其他可以立即執行的功能會立即執行。
3. 調度
如果正在創建一個全面的產品,在某些時候,線程和進程的數量將達到臨界質量,將不得不為調度提供更多的考慮。用最簡單的術語來說,調度是上下程序切換,允許一個線程接著一個線程或一個進程接著一個進程執行的步驟。
如果有太多的阻塞調用,那么在數千個線程和進程之間切換聚合所花費的時間可能會成為一個重要問題。這就是為什么盡可能使用非阻塞調用來確保異步處理的原因。
二、Node與 PHP:服務器端開發語言環境
Node.js 和 PHP 通常被認為是最適合服務器端軟件開發的兩種最理想的語言。本節將使用案例進行演示,以了解 Node.js 和 PHP 的配置文件。
Node.js
Node.js由 Ryan Dahl 開發并于 2009 年 5 月發布。它是一個開源運行時環境,從一開始就具有成本效益。Node.js支持異步開發,這意味著它利用非阻塞系統調用使開發過程資源充沛。使用 Node.js 的最顯著優勢之一是,由于只使用JavaScript,所以整個項目可以在開發時間線中僅使用一種語言。運行時還附帶了幾個Node.js 框架,用于添加功能。
PHP
PHP代表超文本預處理器。它于 1994 年由拉斯穆斯·勒多夫 (Rasmus Lerdorf) 發布。雖然與 Node.js 相比,它是一種較舊的語言,但 PHP 可用于整個項目的服務器端開發和其他開發過程。由于它可以與JavaScript、HTML、CSS 和純文本一起使用,因此它在支持的底層語言方面的約束性較少。
市場趨勢
應評估兩種備選方案的受歡迎程度以了解:
• 人才的供應有助于項目的開發和維護。
• 與備選方案相關的社區和圖書館提供的支持。
• 可比項目中常用的替代方案。這些項目自完成上線以來,它們已經承擔了迭代的成本。
此信息可用作評判標準,以決定對于 Web 開發公司來說,Node.js 和 PHP 之間哪個可能是更佳選擇。
三、了解 Node.js 和 PHP 在服務器端開發中的對比
為了更好地構建 Node.js 和 PHP 之間的分析框架,應該查看并發性、可擴展性和性能等特定標準。Node.js 和 PHP 都易于安裝,并隨其框架或包管理系統一起提供。因此,比較安裝過程在這里并不是最重要的。
1.并發性
并發性顯示了服務器端語言或運行時高效執行多個線程和進程的效率。PHP 是一種同步語言,使用 I/O 塊調用。雖然一些依賴于 PHP 的插件和工具具有異步執行,但是占比很少。雖然 PHP 庫已經針對更快的性能和更少的計算資源消耗進行了優化,但不得不承認,由于是同步的原因,速度則會相對較慢。
Node.js 是一個異步環境。這意味著當系統調用到達內核時,查詢被解析。所有需要更多數據、文件或系統訪問權限的調用都會排隊并稍后執行,而不會妨礙其他可以完成的功能。這是對異步環境的簡單解釋,但它仍然準確地說明了該現象的核心含義。
2. 可擴展性
可擴展性表明了隨著項目功能和數據數量以及用戶數量方面的增長,服務器端腳本語言或運行時環境可以跨多個系統、核心和服務器進行擴展。
大多數主要的內容管理系統(如 WordPress 和 Joomla)都支持 PHP。這使得縮放過程相對更簡單。另一方面,Node.j在跨系統擴展時需要付出相對更多的努力。
3. 性能
Node.js 是一個性能更好的運行時環境,因為它是異步的,但 ReactPHP 可以填補 PHP 和 Node.js 之間的性能差距。
根據經驗,與 Node.js 相比,PHP 每秒只能執行 50% 的查詢。
4. 使用 PHP 或 Node.js 的理想場景
如果項目需要速度或實時數據流,Node.js 將是兩種服務器端語言之間的首選選項。對于想要在整個堆棧中使用 JavaScript 的團隊來說,Node.js 也是一個很好的替代方案。
當希望項目具有可移植性時,PHP 是理想的選擇。當已擁有集中式服務器基礎架構時,它也是一個不錯的選擇。
四、對比分析
Node.js | PHP |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
五、總結
Node.js 開發公司可能更喜歡運行時環境,而那些精通 PHP 的公司則更喜歡服務器端腳本語言。使用更客觀的方法,可以看出項目的理想語言或運行時環境將取決于項目的目的和約束。雙方都有大公司——Facebook、維基百科、Slack、MailChimp 和 WordPress 使用 PHP,而 Netflix、LinkedIn、PayPal 和 NASA 使用 Node.js。
因此,您不應該比較哪種服務器端JavaScript語言總體上是好的,而應該嘗試檢查這兩種語言中的哪一種適合您的特定項目、目標和約束
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】