欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  科技

WEB服务动静结合

程序员文章站 2023-10-18 22:10:03
基本介绍 1)WEB服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件 2)常见的应用服务软件有:PHP、Java、Python等 3)问题:WEB服务如何与外部应用程序通信?通常有以下几种方案: - CGI协议:基本没人使用,不安全以及性能极其低下 - 模块方 ......

基本介绍

  1)web服务仅能处理静态请求,如果处理动态请求则需要对应的动态资源服务软件,即:应用程序服务软件
  2)常见的应用服务软件有:php、java、python等
  3)问题:web服务如何与外部应用程序通信?通常有以下几种方案:
    - cgi协议:基本没人使用,不安全以及性能极其低下
    - 模块方式:如:apache内置php模块,用以处理php动态请求
    - fastcgi协议:如:nginx的php-fpm
  4)cgi、内置模块、fastcgi这三种方式,性能最好的要属fastcgi,但是需要额外的进程
  5)注意:静态资源和动态资源都是以数据流(本质都是数据流)形式返回用户的:
    - 静态资源:web服务将页面文件以【数据流】形式封装到响应报文,然后返回用户
    - 动态资源:web服务将执行结果(注意:此时是结果非文件)以【数据流】形式封装到响应报文,然后返回用户

cgi协议介绍

  1)cgi(common gateway interface):通用网关接口,早期web服务与外部应用程序(cgi程序)通信的协议/接口标准,几乎可以在任何操作系统上实现(跨平台性好)
  2)cgi协议允许web服务执行外部程序,并将外部应用程序执行的结果返回web服务,并最终返回用户
  3)工作原理:用户请求web资源,静态请求交由web服务自行处理;如果是动态请求,web服务会【fork()】一个子进程(cgi进程/应用程序服务进程),然后将动态请求交由子进程处理,处理完后的数据返回web服务,最终由web服务封装为http响应报文返回用户,然后结束这个子进程
  4)每一次的动态请求都会【fork()】一个子进程,周而复始的进行。所以,通过cgi协议处理动态请求,有多少连接请求就会创建多少cgi子进程,子进程反复加载是cgi方式性能低下的主要原因,当用户请求数量非常多时,会大量挤占系统的资源如内存、cpu时间等,造成效能低下

web内置模块介绍

  1)后来出现了一种更高级的方式,即:web服务可以内置perl解释器或php解释器,也就是将这些解释器做成模块的方式,web服务会在启动时就会加载这些模块
  2)工作原理:用户请求web资源,静态请求交由web服务处理;如果是动态请求,web服务会通过内置模块来进行响应、解析、处理,省得重新fork一个进程,效率提高了。动静请求都是由web服务自身处理的

fastcgi协议介绍

  1)web服务、应用程序均为守护进程,二者基于fastcgi协议通过套接字通信
  2)fastcgi协议采用的是c/s架构,分为客户端(web服务)和服务端(应用程序服务)
  3)大多数web服务都支持fastcgi协议,包括apache、nginx、lighttpd等。同时,fastcgi协议也被许多应用程序服务所支持,如:当前比较流行的动态语言php
  3)工作原理:用户请求web资源,静态请求交由web服务处理;如果是动态请求,web服务会通过【fastcgi协议】将请求发给应用程序服务进行处理,应用程序会将处理完的结果返回web服务,最终由web服务封装为http响应报文返回用户。此时,web服务和应用程序服务均为守护进程(可以启动多个fastcgi的守护进程)
  4)与cgi协议的区别:

WEB服务动静结合

 

相关链接

  1)
  2)
  3)
  4)
  5)