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

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

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

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

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

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

有什么想法吗?


qq_花开花谢_0
浏览 69回答 3
3回答

慕娘9325324

Web服务器侧重于速度能力和计算能力。不管java、php web多好,有多少老公司在用,只要一门新的语言能提供更快的速度和更好的能力,比如go,就会有更多的程序员上手。顺便说一句,在go中运行一个web服务器真的是一件很容易的事情。它的构建速度更快,运行速度也稍快。而且go中的例程帮助web服务器更好地服务于数百万的客户端请求,这是旧的web语言很难做到的。

翻阅古今

由于很多原因,包括 tls 终止,您仍然可以在 golang 网关前面使用 nginx 或 apache。但是服务到服务的通信可能很适合直接与服务通信,而且 golang http 网络服务器速度很快。它还支持开箱即用的 http2。Go 利用其“goroutines”来减少操作系统的开销,以同时处理许多请求。

慕丝7291255

Node.js和Golang没有自己的 web 服务器,这些只是一些 lib 包实现 http 协议并打开一些端口来提供服务。像春天的网络。Nginx/IIS/Apache是真正的服务器,Web 服务器只是其中的一个组件。我觉得Spring应该满足完整的应用场景,包括/gateway/security/route/package/runtime manage/等等。但是当我们有一些不同的语言平台时,我们需要 nginx/apache/spring gateway/zuul/或其他来路由它们。
打开App,查看更多内容
随时随地看视频慕课网APP