首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于如何访问服务器端编程语言的说明

关于如何访问服务器端编程语言的说明
EN

Software Engineering用户
提问于 2015-04-22 14:05:26
回答 6查看 5.9K关注 0票数 45

据我了解,任何通用的编程语言都可以用于网站的服务器端开发。

我认为服务器只是需要某种接口(如CGI )才能使服务器和编程语言协同工作,这是正确的吗?如果是的话,为什么某些编程语言(如php)比其他语言更受欢迎呢?

EN

回答 6

Software Engineering用户

回答已采纳

发布于 2015-04-22 15:11:00

在网络的早期,cgi确实是拥有动态内容的唯一(实用)方法(您可以使用文件的命名管道--而这些管道在CGI之前就被使用了,但根本不实用)。

CGI的工作方式是在进程的环境中添加一组信息,然后分叉,然后执行(可能还包括stdin中的一些信息),然后从stdout中提取出的信息并将其吐回请求者。

这一点也不关心实现语言是什么。事实上,早在那时我就用C或C++写了我的早期CGI。有点痛。我后来在90年代初学到了一些perl,这就没有那么痛苦了。

这在某种程度上是可行的。问题在于规模。每个CGI请求都是进程的分叉和执行。数以千计的请求意味着数千个进程。那真的不太好。

解决方案是移除分叉和执行,方法是将其移动到web服务器本身的线程中,或者将请求分配给处理请求的另一个进程,而不需要分叉和执行。mod_perl就是这样的工具之一(将perl移植到apache中的插件)。Php (90年代末)也是这样做的,它将语言实现为web服务器本身的插件,而不是分叉和超越的插件。这变得相当流行,因为它是类perl (这是早期占主导地位的web编程语言),可以超过perl cgis。在90年代中期的这段时间里,在更多企业级的应用服务器开始使用更正式的语言之前,还有相当大的发展势头。如果你仔细研究一下,你会发现在90年代末到2000年代初也有很多失败的尝试--语言和框架只是没有坚持下来。

这就把我们带到了产生内部线程的应用服务器(或者其他方法--并不是所有的方法都是这样)来处理请求,而不是整个新进程--它们可以帮助扩展。作为一个外部进程,可以在FastCGI中看到这一点,然后在其他应用服务器中流行起来。请注意,这样,应用服务器和web服务器之间的界限变得有点模糊--许多应用服务器可能是web服务器的翻倍,尽管没有像传统web服务器那样优化处理静态文件IO。

通用应用服务器还为解决方案铺平了道路,在解决方案中,应用程序本身可以运行嵌入式web服务器,或者是整个部署,而不是一般的应用程序服务器。在这种情况下,人们不会在应用服务器上部署web应用程序--它只是在运行自己并处理请求。同样,该模型的目标是避免启动应用程序新实例的沉重代价,而是使用更轻的线程或类似方法来处理应用程序中的请求。

但事情是这样的--所有的解决方案在某种程度上、形状或形式上都存在缺陷。CGI,虽然容易有严重的问题与规模。web服务器中的插件绑定到web服务器本身(apache vs nginx vs IIS vs .)并失去了语言的通用功能。微软也有自己想要推广的技术。如果您知道一种语言,那么您不愿意继续用它进行编程,而不是在堆栈的不同部分(客户机和Node.js中的javascript)使用不同的语言吗?

所以,你今天有机会。有些人在Java堆栈中工作( scala和clojure并不少见)。C#堆栈中的其他部分。JavaScript堆栈中的其他部分。有相当多的php堆栈在那里。很多蟒蛇。您仍然可以在那里找到一些perl堆栈(如果您查看一些低卷站点,仍然可以找到CGI)。随着云计算的发展,Google还将Go作为一种可行的服务器端web语言进行了推广。

每一个都有其优点、缺点、框架和服务器。随着围绕着它们的技术的变化,这些技术的相对流行程度也在起伏。他们做得很好。

票数 76
EN

Software Engineering用户

发布于 2015-04-22 15:06:29

是的,任何通用编程语言都可以用来编写网站的服务器端部分.

然而,编程语言的质量,在这门学科中和在其他方面一样,通常只是促成其流行的许多因素之一。

例如,我认为PHP在网站中很受欢迎,因为:

  • 从静态网站升级到PHP网站是非常容易的--只需替换HTML的文件扩展名,将<?php标记放在开头,并且,只要安装了PHP,您就有了一个动态网站!工作流程的其余部分与静态网站完全相同;
  • 由于部署的方便性,打算推荐动态网站的web主机选择了PHP,使得它很快成为部署最广泛的服务器端平台;
  • 它在适当的时候进入了那个市场;

一旦PHP被广泛部署,用PHP编写更严肃的web应用程序就变得有趣了,以便从这种广泛的部署中获益。

用一种更通用的方式说出来:语言的采用通常是关于这些问题的答案:

  • 做我想做的事有多容易?
  • 对于我想做的事情,语言得到了多广泛的支持?
票数 19
EN

Software Engineering用户

发布于 2015-04-22 15:55:38

我认为服务器只是需要某种接口(如CGI )才能使服务器和编程语言协同工作,这是正确的吗?

差不多了。您需要一个具有某种软件的web服务器,以便它也能够响应HTTP请求。

想想静态页面是如何服务的。服务器检索HTTP请求,根据HTTP服务器的配置从文件系统中查找请求的文档,并返回静态页面。

CGI扩展了这个概念,允许您在文件系统上指定一个cgi文件夹,其中可以存储可执行文件或脚本。当您通过CGI访问程序时,HTTP服务器运行进程或脚本,并将标准输出传递回客户端,而不是简单地为静态文档提供服务。

代码语言:javascript
复制
 If so then why are some programming languages (such as php) more popular than others?

旧的CGI结构不能很好地扩展到大量请求。web的不同编程语言和框架由于不同的原因而存在,而且每种编程语言和框架都做得很好。由于历史原因,PHP同样受欢迎,因为它是第一批简单而廉价的解决方案之一,可以在不诉诸CGI的情况下为动态页面提供服务,并且得到了广泛的托管支持。ASP在微软圈子中很受欢迎,因为它允许VB开发人员将他们的技能转移到网络上。ASP.NET ( were )使Windows开发人员(其中许多是VB程序员)很容易切换到web。

票数 7
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/279858

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档