前言
本篇文章有些与众不同,由于我自己手头有些关于这个主题的个人经验,受其启发写出此文。虽然SpringBoot和Node.js服务于很不一样的场景,但是这两个框架共性惊人。其实每种语言都有不计其数的框架,但仅仅一部分是真正卓越的。如果咱们想,你和我也能创造我们自己的框架,并面向公众发布。然而,它们中极少数可以依赖社区脱颖而出,需要很强的可用性才行。
和Node.js的优势,当然也覆盖了它们的基础概念。
Spring Boot
简单讲,Spring Boot是一个可以创建Web应用和服务的Java框架。它基于Spring框架,在配置和部署方面与Spring应用程序集成便捷。Spring Boot有很多开发和部署企业级应用的便捷特性,诸如:
- Web服务器(比如Tomcat和Jetty)是嵌入在应用里面的,而不是把应用部署到一个外部Web服务器。
- 日志和安全等通用的开发任务,拥有内置支持。
- 在Spring Boot项目快速开发中,有批处理脚本的支持。
简单来说,Spring Boot是一个为了创建基于Spring应用程序的框架,这些程序在生产环境中无需额外的配置即可使用,并且独立运行。
实现
为了解释使用Spring Boot来实现一个RESTful web服务,请看下面的例子
Java
@RestController
@RequestMapps("/hello")
public class HelloController {
@GetMapping
public String sayHello() {
return "Hello, Spring Boot!";
}
}
用@RestController和@RequestMapping("/hello")注解的类表名这是一个controller。Web服务的终端可以用@RestController注解来定义,HTTP请求会被映射到controller类里的单独方法,使用@RequestMapping注解即可。
用@GetMapping来注解sayHello,可以让它对应到"/hello"终端的GET请求。在这个例子中,客户端得到的响应是方法返回值,即"Hello,SpringBoot"字符串。
这个应用程序需要在主类中添加@SpringBootApplication注解,并且classpath里面需要有Spring Boot starter web的依赖。
Java
@SpringBootApplication
public class SpringBootExampleApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootExampleApplication.class, args);
}
}
在我们的应用程序中运行,并在在内嵌的web服务器(比如Tomcat)运行。到http://localhost:8080/hello的GET请求会抵达web服务并返回Hello, Spring Boot!
Node.js
Node.js允许在web浏览器外执行JavaScript代码,并且是一个在很多计算平台可以使用的开源软件。他为开发者在服务器通过使用JavaScript创建可伸缩和高性能网络应用铺平了道路。由于Node.js的轻量、高效的事件驱动、非阻塞I/O模型,Node.js是在大量不同类型的分布式设备运行数据密集型实时应用的理想选择。
为了高效率运行JavaScript代码,Node.js是基于Google的V8 JavaScript引擎的。Node.js运行时库是平台不可分割的一部分,为大量不同类型的服务端和网络应用提供了构建模块。
如果你用Node.js构建Web应用,你可以用JavaScript来开发用户界面和底层代码。另外,Node.js身后拥有庞大和充满活力的社区,它已经创造了一个一个开源软件和模块的丰富生态系统,这些都可以和应用很方便地集成。
Web服务器、实时聊天程序和其他各种类型的网络应用,只是Node.js的一部分常见应用。RESTful API、实时网络应用和命令行工具只是常见应用的一些例子。
总而言之,Node.js是一个高效的、快速的、社区支持的JavaScript运行时,使得开发者可以在服务器环境中部署JavaScript。
实现
一个基础的Node.js web 服务器如下所示
JavaScript
const http = require('http');
const server = http.createServer((req,res) => {
res.statusCode=200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello, Node.js!\n');
});
server.listen(3000, () => {
console.log('Server running at http://localhost:3000/');
});
这个代码使用内置的Node.js http模块来创建一个HTTP服务器。这个服务器使用createServer方法初始化创建,接着无论何时服务器收到请求,都调用一个传递给它的回调函数。
在回调方法中,我们告诉客户端响应是"text/plain"类型,文本为"Hello, Node.js!",状态码是200。
当这一切都准备好了,我们使用监听方法发布到服务器,并且告诉它开始在端口3000上监听。为了让管理员知道服务器已经启动并且运行,无论什么时候服务器只要起来了,终端就会打印出一个信息。
启动web浏览器,访问http://localhost:3000来测试服务器。浏览器窗口将会显示"Hello, Node.js!"。
尽管这是一个非常基础的例子,但它展示了Node.js服务器程序是如何构成的。有很多Node.js的模块构成开发特定应用的基础设施。他们是的你能够构建复杂程序。
最后的思考
无论你为搭建应用选择Spring Boot还是Node.js,这两个都是各自语言中非常强大的框架。他们很流行、构建应用也简单。两个都支持微服务架构,两个都可以用自己的方式构建微服务,并且把他们集成到应用里面。不管你如何使用它们,它们始终能给你一种更好的编程方式。在当前世界中,我坚信没有比Spring Boot更加敏捷和流行的框架,也没有比Node.js在服务端实现更加高效的软件。
扩展链接: