Node.js在復雜集成場景下占據統治地位的五個理由
譯文【51CTO.com快譯】毫無疑問,軟件解決方案很少在真空環境下進行,這意味著我們將不可避免地要同集成工作打交道。簡單的集成當然不成問題,然而如果集成需求較為復雜,那么需要接入現有應用中的第三方產品可能多達數十種。考慮到具體定制與業務邏輯的復雜性,不同廠商的API開放性與全面性條件可能引發令人頭痛的難題。
為了完成相關集成工作,歷史上曾出現了一系列解決方案,包括DOS批處理文件、Linux shell腳本、Perl以及Python等等。但如今,Node.js開始廣泛普及,并成為眾多從業者的主流選項。具體原因,則分為以下五點。
1. Node.js擁有通用性優勢
憑借著JavaScript的超高普及度,Node.js亦擁有可觀的用戶群體。正因為JS的直觀性與風格包容能力,Node.js得以輕松適應服務器端開發需求,并享受規模巨大的JS技術社區的有力支持。
此外,在集成領域,廠商本身亦越來越多地使用著JS及其相關產品。通過這種自給自足的對接方式,外加巨大的JS技能掌握者基礎,Node.js表現出***的易用性特征。
另外,Node.js采取運行時內編譯的處理方式,意味著其代碼具備可讀性。再有,Node.js的運行性能亦相當出色。
2. Node.js擁有大量模塊
Node.js之所以如此流行,同樣歸功于廣闊的開發者社區能夠生不逢時其代碼以實現模塊化功能,而后結合require()聲明進行解釋。其基本格式為:
- var myName = require(‘external-module’);
目前已經發布的模塊數量極為驚人。這意味著大家能夠輕松找到大量適合自身功能需求的現成代碼,并通過數行粘合代碼將其引入自身項目。MySQL與MongoDB就是其中的典型范例。
各類廠商亦加入到了這一陣營中來。目前眾多打包器與客戶端皆可通過Node模塊的方式交付至工具與應用程序。Twitter的客戶端“SDK”就是其中一例。
下面我們來看如何輕松為Moogsoft AIOps系統的用戶發布一項示例模塊:
- var MoogEvent =require(‘node-moog’).MoogEvent;
- myEvent =newMoogEvent();
- myEvent.description=’My new description’;
模塊幫助廠商快速公布API及功能,并將其與本地Node.js代碼輕松對接。
3. JSON具備原生性質
JSON,即Javascript Object Notation,是一種輕量級數據交換格式,其擁有眾多集成化優勢。簡單、易學,且能夠適應幾乎任何用例類型。
JSON具備人類可讀性,適用于快速部署與結果維護。另外,JSON比XML更易于解釋,并開始逐漸取代XML成為客觀層面的數據交換格式。目前主流云供應商幾乎普遍采用JSON作為默認的有效載荷。
更值得一提的是,JSON原生于Node.js之內。全部JavaScript值——除原語之外——皆屬于對象,且JS當中各類復雜或分層對象皆可以JSON形式描述。這意味著我們僅需幾步即可處理JSON載荷。
示例載荷:
- {“title”:”example”,”contents”:”some stuff”}
可因此處理為:
- var message = JSON.parse(payload);
- console.log(message.title); // Will output “example”
這種對外部系統間交換數據以代碼內方式進行處理的能力,無疑能夠極大加快集成工作的執行速度。
4. REST同樣原生存在
雖然REST在客觀層面講不算原生,但其實際效果卻幾乎與原生無異。
Node.js能夠原生支持HTTP/HTTPS,因此能夠在RESTful端點上輕松執行GET或者POST。即使相關廠商未提供項目必需的js模塊,其至少能夠提供示例代碼以供用戶復制及粘貼。
另外,大家亦可利用多種Node模塊在隱藏復雜底層機制的同時,實現全面的REST連接能力。(Node.js的HTTP/HTTPS API實際上相當底層,旨在確保不存在任何功能限制。)
為什么REST如此重要?正如JSON已經在客觀上成為默認數據交換格式,RESTful Web服務同樣快速成為最重要的Web友好協議——對于不少廠商而言,REST已然成為API的同義詞。
再有,Node.js的HTTP/HTTPS模塊還提供服務器功能,意味著Node.js應用程序能夠監聽并響應各類REST方法。
如果大家希望發揮應用程序對輸出REST的支持能力并提供復雜及豐富的Web服務,則Express Node模塊值得一觀——其能夠快速輕松地完成Web服務器編寫。再有,REST及其機器數據表親WebHook亦適用于構建系統間API以及各類命令與工具。
5. 打包
Node.js模塊易于發布及訪問的特性成為其擁有極高人氣的另一個理由。
在Node.js內置軟件包管理器NPM的幫助下,Node模塊可實現快速發布與訪問。貢獻者創建的package.ison文件中包含各項細節與依賴性,并可被推送至NPM公共倉庫中供各類訪問者使用。
大家使用以下命令即可訪問由我們編寫的模塊:
- $ npm install node-moog
對于像我這樣的Unix老用戶來說,命令行同樣非常重要。而Node.js能夠輕松創建各類命令行工具,同時快速添加各類參數并由NPM實施安裝。
舉例來說,我們可以通過以下命令安裝一款名為myTool的CLI工具:
- $ npm install –g myTool
此命令將對myTool進行全局安裝。這意味著Node.js非常適合創建沙箱打包器、腳本、歸檔以及報告等方案。
除了之前提到的五項理由,隨著谷歌V8 JavaScript引擎的每一次迭代,Node.js性能亦將同步提升。雖然我同樣尊重Python,然而Node.js已經成為我們目前的***選項——不知道大家意下如何?
原文標題:5 reasons Node.js rules for complex integrations
原文作者:Richard Whitehead
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】