我们来看看一个开源项目,并讨论为什么它是使用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开发人员
JEC完全是用TypeScript编写的,这是解决复杂的JavaScript OOP体系结构问题的最佳解决方案。TypeScript易于学习,并为创建企业应用程序提供了必要的严格性。此外,TypeScript编译器允许使用基于声明性元数据流程的高级技术,如面向方面编程和依赖注入。
声明性元数据对于隐藏概念和框架的复杂性同时增加环境的功能很有用。例如,可以使用@WebJslet装饰器声明JEC URL映射,而不添加任何其他配置或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是一套标准规范,允许您根据自己的考虑选择自己的首选实施方案,例如业务支持,表演,社区参与等。
例如,下面的代码显示了如何声明JARS参考实现来管理以前的Search资源类:
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)=>{});
}
}
要使用其他JARS实现,您只需声明您的首选框架而不是默认的框架(Sandcat)。JEC入门以JEC开始的最佳方式是在GlassCat服务器实例中创建和部署自己的应用程序。因此,我们制作了一些视频,向您展示如何详细安装它以及如何使用GlassCat项目模型(GPM)创建新项目。
所有视频均可从JEC视频频道获得。
要开始使用GlassCat服务器,您必须安装JEC命令行界面(JEC CLI):
[sudo] npm install jec-cli -g
然后,您将创建一个新的GlassCat服务器实例,如下所示:
cd <path/to/your/server>
jec glasscat-install
最后,使用以下start 命令启动这个新的服务器实例 :
<path/to/your/server> glasscat start
只要使用 ctrl+C ,如果你想杀死所有进程,并停止服务器。
致JEC基金会和超越!
长期维持JEC项目的最佳方式是建立一个基础或融入现有的基础。
第一步是向一个庞大而活跃的用户和开发者社区开放项目,其目标如下:
- 高度提高项目质量。
- 更快地开发缺失的功能。
- 修复所有问题并改进TDD流程。
- 为云计算业务解决方案提供高效的开源替代方案。
- 更接近开发人员和公司的需求。
整个JEC生态系统,包括GlassCat和其他框架,都是在去年开发的。试想一下我们可以一起做什么!