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