【问题标题】:Combine Any Web Server With Any Server Application's Language将任何 Web 服务器与任何服务器应用程序的语言相结合
【发布时间】:2018-07-30 06:39:58
【问题描述】:

我是服务器端编程的新手,所以如果我的问题看起来很明显或荒谬,请原谅。

我正在测试不同的后端选项,例如服务器语言(PHP、ASP.NET、Node.js、Python、Ruby 和 Go)和 Web 服务器(Apache、nginx、IIS...)。
我这样做是为了找到监控 Web 应用程序的最佳语言和 Web 服务器。服务器应根据客户端的请求从数据库中获取数据(由另一个应用程序独立更新),并将其返回给客户端(仅作为背景,与问题无关)。

我现在的问题如标题中所述,我可以使用任何应用程序服务器语言的任何 Web 服务器吗?
例如,使用 nginx 和 ASP.NET(我很清楚 ASP.NET 与 IIS 一起使用,我只是想举一个极端的例子)?

如果这些语言与任何网络服务器不兼容,那么请向我解释以下每种语言与哪些网络服务器兼容(最推荐的)以及原因:

  • PHP
  • ASP.NET
  • Node.js
  • Python
  • 红宝石

再次,对不起,如果它是关于汽车的,我问的是自行车。感谢您的帮助,我真的很感激。

【问题讨论】:

    标签: nginx iis webserver programming-languages application-server


    【解决方案1】:

    首先,最好将框架和编程语言视为完全不同的概念,即使它们经常齐头并进。例如。 Python 是一种编程语言,而 ASP.NET 是一种框架。您可以使用 C#、VB 甚至 Python 编写 ASP.NET 框架应用程序。如果您要选择一种编程语言,例如 Python,您可以将 Django、web2py 和 TurboGears 用于基于 Python 的 Web 应用程序。

    对于网络服务器,这取决于您希望与编程语言进行何种集成。更多的集成不一定更好。 Apache 可以运行紧密集成的 PHP 模块。 Nginx 可以使用 fastcgi 运行 PHP Web 应用程序,它允许您将 PHP 代码作为外部进程运行。尽管使用 fastcgi 的 Nginx 不像 Apache 那样紧密耦合,但它不一定更慢或更糟!在许多情况下,主 Web 服务器(例如 Nginx)只是实际 Web 服务器的代理,其中 Nginx 代理处理最新的 Web 协议,例如 HTTP2、SSL 和压缩支持。这样,应用程序的主 Web 服务器可以相当简单。这就是 ASP.NET 核心 Kestrel Web 服务器的工作方式:它是一个非常简单的准系统 Web 服务器,几乎不支持最新和更高级的 Web 协议。相反,Kestrel 依靠代理来提供这些服务。

    因此,为了回答您的问题,您几乎可以使用任何通用网络服务器作为任何编程语言/框架的主要网络服务器,假设网络服务器是 1) 外部代理Web 服务,2) 语言支持内置或作为捆绑模块(例如 Apache+PHP)或 3) 支持使用诸如 cgi/fastcgi 之类的接口(例如 Nginx+PHP 或 Apache+Pyhthon)。例如,IIS 可以本地运行 .NET 4.x 应用程序,使用代理的 .NET Core 和使用 fastcgi 的 PHP。

    但是,完全不同的问题是将任何语言与任何网络服务器结合起来是否是个好主意。某些组合受到严重支持或性能可能较慢。

    我的建议是从另一端看问题:首先选择您的语言,然后从该语言可用的框架中进行选择,然后根据支持情况选择合适的 Web 服务器。如果您想要灵活性,请使用代理。使用例如Nginx 作为前端代理,您可以在同一台计算机上使用不同的编程语言运行多个 Web 服务器。使用代理,所有这些都可以很好地发挥作用,并且您可以拥有来自同一个 IP 地址的多个网站。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-04-09
      • 2010-11-27
      • 1970-01-01
      • 2011-07-25
      • 1970-01-01
      • 2017-04-08
      • 1970-01-01
      相关资源
      最近更新 更多