为什么所有这些新语言都有自己的网络服务器?

Why all those new languages have their own web server?

我有点守旧,我看到的第一种 Web 编程语言是 PHP,每个人都将它与 Apache 一起使用。那时,我还知道 ASP,它与 Microsoft IIS 一起使用,后来,ASP.NET 也运行在 IIS 上。

时间过去了,我去了 ERP 世界,当我回来时(几个月前),我知道 Golang 和 Node.js 令我惊讶的是他们有自己的网络服务器。

我可以看到内置 web 服务器的许多优点,但是,每个应用程序都需要重写它们的 web 服务器规则(我最近在需要使用 Express.js 设置 HTTPS 服务器时遇到了这个问题)。

在努力理解 HTTP 协议的所有细微差别之后,我问自己:我是否以错误的方式进行操作?如果我在开发服务器中创建的所有许可规则都投入生产?也许这是一个无用的担心。但也许我正在创建一个可能被天真的黑客利用的脆弱服务器。

使用像 Apache 这样的服务器更难滥用安全规则,因为开发和生产环境的设置是明确的。如果规则是硬编码的(就像在 Node 或 Go 中一样),不知情的开发人员可以在生产中使用开发规则,并且在事情发生之前没有人会看到它。

有什么想法吗?

出于多种原因,包括 tls 终止,您仍然可以在 golang 网关前使用 nginx 或 apache。

但是服务到服务的通信可能更适合直接与服务通信,而且 golang http 网络服务器速度很快。它还支持开箱即用的 http2。 Go 利用其 "goroutines" 减少 os 的开销,从而一次处理许多请求。

网络服务器侧重于速度能力和计算能力。无论java或phpweb有多好,有多少老公司在使用它们,只要一门新的语言能提供更快的速度和更好的能力,比如go,就会有更多的程序员选择它。

顺便说一句,运行 一个 web 服务器真的很容易 thing.It 构建速度更快,running.And go 中的例程可以更好地帮助 web 服务器服务数以百万计的客户端请求,哪个老的网络语言都做不到。

Node.jsGolang 没有他们的网络服务器,这些只是一些实现 http 协议的 lib 包和开放部分端口提供服务

喜欢 Spring 网页.

Nginx/IIS/Apache是真正的服务器,web服务器只是其中的一个组成部分。

我觉得Spring应该可以满足完整的应用场景,包括/gateway/security/route/package/runtime管理/等等

但是当我们有一些不同的语言平台时,我们需要nginx/apache/spring gateway/zuul/or其他人来路由它们。