• cgi fastcgi wsgi


      之前一直是接触java比较多,最近刚接触python,对于cgi、fastcgi和wsgi的概念不是特别清楚。昨天找了一些资料看看了,大概有一些模糊的概念,先把自己理解的给写出看看。

      首先我们要了解,cgi、fastcgi、和wscgi都是一种协议、一种规则,他们不是一种特殊的语言或者工具。

      cgi的技术是比较早的,主要用于动态资源的请求,当用户请求web服务器的时候,web服务器会根据请求的上下文,来启动本地的应用程序,获取应用程序的输出然后返回给客户端。web服务器与cgi的应用程之间的桥梁就是cgi协议,cgi程序的实现可以用任何语言,php、python、ruby等都可以,只要按照这个协议就可以了。

      fastcgi是基于cgi做的改进,由于cgi的技术是采用每个请求都fork一个进程来处理,请求比较多的时候性能低下,这个时候fastcgi出现的目的就是为了改善这种情况。它采用常驻内存的方式,一开加载一个fastcgi的进程管理器,进程管理器中会初始化一些cgi解释器,当有请求过来的时候,就会找出一个空闲的cgi解释器处理请求。应为采用了这种模式,所以web服务器不与cgi直接通讯了,而是采用socket的方式,将数据封装为符合fastcgi一些的数据包,发送给fastcgi响应器。正式由于这种方式,所以fastcgi和web应用服务器采取的分离部署的方式。

      wscgi可以理解为python自己的一套cgi的实现,目的主要是制定一个统一的规范,如果web服务器支持wsgi的协议,那么任何实现了wsgi的协议都可以在这个web服务器中运行。wsgi主要分为3个部分:容器、中间件、应用。容器主要是接收请求,将请求解析封装为wsgi的数据包,通过中间件调用对应的应用程序。这大概就是这3者之间的关系。wsgi的容器目前也只能基于市面上统统的协议来实现,如http、fastcgi、cgi等。

      下面给两张在知乎上看到的图,理解起来可能更方便一点。

  • 相关阅读:
    Kubernetes 集群日志管理
    登录功能通用测试用例设计
    Linux常用命令大全
    查看Android应用包名、Activity的几个方法
    CentOS 7 下Docker的安装
    Centos7.1下Docker的安装-yum方法
    appium+Java+testng自动化框架搭建-第一季
    Android在Win10环境搭建
    List<Map<String, Integer>> 同key的value全部累加合并
    Restrictions用法
  • 原文地址:https://www.cnblogs.com/rubeitang/p/7614778.html
Copyright © 2020-2023  润新知