我們來看看一個開源項目,並討論為什麼它是使用Node.js的企業應用程序和微服務的靈活開發環境。
本文為Java和JavaScript開發人員介紹了“ JavaScript Enterprise Container ”(JEC)項目。它將展示一個靈活的開發環境,用於構建Node.js上的企業應用程序和微服務。
關於JEC
JEC是一個易於使用的開源項目,它執行JavaScript代碼服務器端部署Web應用程序,例如微服務,RESTful API,CDN平臺等。
JEC與標準MEAN堆棧相比具有以下優點:
- 一個標準化的便攜式開發環境。
- Spring Boot和Java EE的高效替代方案。
- JavaScript應用程序可擴展性的有效解決方案。
- 一種用於構建和服務微服務和Angular應用程序的同構方法。
JEC的JavaScript開發人員
@WebJslet({
name: "HelloWorld",
urlPatterns: ["/say-hello"]
})
export class HelloWorldSvc extends HttpJslet {
public doGet(req: HttpRequest, res: HttpResponse, exit: Function): void {
exit(req, res.send("Hello World!"));
}
}
這是一個簡單的示例,但想象一下如何使用另一個框架處理數百個不同的URL。與基於表達式的應用程序相反,使用模塊化方法構建Web服務變得非常簡單。JEC本身就構建了靈活,可擴展且可完全測試的應用程序。
但是,Angular開發人員真正感興趣的是可以使用相同的語言和相同的SOA設計來開發表示層的兩個部分。這就是我們所說的“ 同構方法”。”
面向Java開發人員的JEC
JEC為希望利用Node.js平臺的一些優勢的Java開發人員提供了兩個主要優勢:
它的開發遵循JEE和Spring Boot的概念。它旨在消除傳統的基於容器的企業應用程序的複雜性。由於TypeScript與Java非常接近,並且JEC架構直接從JEE和Spring繼承,所以Java開發人員在處理JEC生態系統時完全沒有困難。
以下資源示例顯示了JAX-RS與REST式服務(JARS)的JavaScript API 之間的相似之處:
@ResourcePath("/search")
export class Search {
@GET({
route: "/users"
})
public getUsers(@Exit exit: Function, @QueryParam name: any, @QueryParam age: any): void {
let response: string = "searching for users with ";
if(name) response += "name='" + name + "'" + (age ? " and " : "");
if(age) response += "age='" + age + "'" ;
exit(response);
}
}
我們還決定實施類似於CDI的解決方案來實施依賴注入。原因在於CDI比我們的新Spring概念更適合學習和使用。
請記住,JavaScript不提供創建上下文的內置過程。因此,JavaScript依賴注入(JDI)規範比原始CDI規範更簡單。但是,JDI比其他JavaScipt / TypeScript DI框架更強大。
此外,JEC附帶了許多Java開發人員熟悉的開發工具,例如:
- GlassCat服務器:JEC參考實現。
- Wildcat:完全可定製的原型管理器,類似於Maven原型。
- JUTA:基於JUnit 4+的單元測試框架。
- 許多不同的模擬框架用於測試基於JEC註釋的應用程序。
- 提供基於JEE安全層開啟會話和安全功能的能力。
- 使用類似JSTL的模板框架來創建網頁。
有關JUTA的更多信息,請閱讀以下關於DZone: JUTA:JavaScript單元測試API的文章
使用方便
JEC最重要的部分之一就是設計簡單。已知JEE使用和部署非常複雜。所以,我們花費了大量精力來消除複雜性,特別是在安裝和配置方面。
文檔部分的視頻顯示了GlassCat服務器的安裝和使用方法。
當然,這不是魔術!您需要了解一些關於配置文件和JEC結構和規格的基礎知識。但是,GlassCat非常簡單,實際上它是面向所有開發人員的面向DevOps的!
JEC和微服務
在談到容器編排,API網關和微服務時,部署速度真的很重要!JEC通過結合Node.js運行時功能和其特定體系結構,專注於服務器的啟動速度。
在生產模式下,嵌入了RESTful微服務的GlassCat服務器實例,我們可以在不到70毫秒的時間內啟動(取決於您的主機配置)。
同時,由於其非阻塞和異步架構,JEC是真正的JAVA替代品,可降低基礎架構成本。
此外,GlassCat專門運行它自己的封裝的Node.js進程。這意味著您可以通過使用PM2等工具來模擬複雜的負載均衡體系結構,從而為管理應用程序提供了穩定性和靈活性。
開放技術
使用傳統的JavaScript / TypeScript框架時遇到的一個難題是您經常依賴您在項目生命週期中選擇的技術。
但是,JEC是一套標準規範,允許您根據自己的考慮選擇自己的首選實施方案,例如業務支持,表演,社區參與等。
import { BootstrapScript, Bootstrap, JecContainer } from "jec-commons";
import { SandcatBuilder } from "jec-sandcat";
@Bootstrap()
export class InitApp extends BootstrapScript {
public run(container:JecContainer):void {
// Sandcat is the JARS reference implementation:
new SandcatBuilder().build(container)
.process((err:any)=>{});
}
}
所有視頻均可從JEC視頻頻道獲得。
要開始使用GlassCat服務器,您必須安裝JEC命令行界面(JEC CLI):
[sudo] npm install jec-cli -g
然後,您將創建一個新的GlassCat服務器實例,如下所示:
cd
jec glasscat-install
最後,使用以下start 命令啟動這個新的服務器實例 :
glasscat start
只要使用 ctrl+C ,如果你想殺死所有進程,並停止服務器。
致JEC基金會和超越!
長期維持JEC項目的最佳方式是建立一個基礎或融入現有的基礎。
第一步是向一個龐大而活躍的用戶和開發者社區開放項目,其目標如下:
- 高度提高項目質量。
- 更快地開發缺失的功能。
- 修復所有問題並改進TDD流程。
- 為雲計算業務解決方案提供高效的開源替代方案。
- 更接近開發人員和公司的需求。
整個JEC生態系統,包括GlassCat和其他框架,都是在去年開發的。試想一下我們可以一起做什麼!
閱讀更多 愛碼農 的文章
關鍵字: Node.js 編程語言 JavaScript