【问题标题】:Why all those new languages have their own web server?为什么所有这些新语言都有自己的网络服务器?
【发布时间】:2019-02-17 16:48:46
【问题描述】:

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

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

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

在努力理解 HTTP 协议的所有细微差别之后,我问自己:如果我做错了?如果我在开发服务器中创建的所有许可规则都用于生产?也许这是一个无用的担忧。但也许我正在创建一个脆弱的服务器,可能会被天真的黑客利用。

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

有什么想法吗?

【问题讨论】:

  • 你在比较两个不同的东西。如果您想使用像 nginx 或 apache 这样的全功能 Web 服务器,那么请继续。许多语言都有实现 http 协议的库,因为它很有用,而不是因为您应该始终使用它们来排除其他一切。

标签: node.js apache go webserver


【解决方案1】:

Node.jsGolang 没有自己的 web 服务器,这些只是一些 lib 包实现了 http-protocols 并开放了一些端口来提供服务。

喜欢 Spring web

Nginx/IIS/Apache 是真正的服务器,Web 服务器只是其中的一个组件。

我认为Spring应该满足完整的应用场景,包括/gateway/security/route/package/runtime manage/等。

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

【讨论】:

    【解决方案2】:

    网络服务器注重速度能力和计算能力。再好的java或php web,也不管有多少老公司在用,只要一门新语言能提供更快的速度和更好的能力,比如go,就会有更多的程序员去使用它。

    顺便说一句,在 Go 中运行一个 Web 服务器真的是一件很容易的事情。它的构建速度更快,运行也更小。Go 中的例程帮助 Web 服务器更好地服务于数百万的客户端请求,而旧的 Web 语言几乎不能去做吧。

    【讨论】:

      【解决方案3】:

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

      但是服务到服务的通信可能很适合直接与服务通信,而且 golang http 网络服务器速度很快。它还支持开箱即用的 http2。 Go 利用其“goroutines”来减少操作系统一次处理多个请求的开销。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-10-02
        • 2020-05-17
        • 1970-01-01
        • 2021-02-02
        • 2019-12-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多