Web、HTTP Server、API Service、Application

目录

Web

Web(World Wide Web,全球广域网),也称:万维网,它是一种基于 HTML(超文本标记语言)和 HTTP 协议的、全球性的、动态交互的、跨平台的分布式图形信息系统。是建立在 Internet 之上的一种网络服务,为浏览者(浏览器)在 Internet 上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将 Internet 上的信息节点组织成一个互为关联的网状结构。一个典型的 Web 应该包括:Web Server、Web Service、Web Application、Web Browser、HTML、HTTP 协议等元素。

换言之,目前在 Intenet 上通过非浏览器访问的网络资源并不称为 Web,这也是 Wired 的那篇《Web 已死,互联网永生》的意思。Internet 上不只有 Web,还有 FTP、P2P、Email 或者移动 App 等其他多种不同形式的互联网应用,Web 只是其中使用广泛的一种。但这种 “广泛” 是相对而言的,新生的互联网服务正逐步取代其重要性,单纯从流量上看 Web 已经不是最大的互联网应用了。

HTTP Server

HTTP Server(HTTP 服务器),在以往 HTTP Server 几乎等同于 Web Server,用于处理 HTTP 协议的 Request 和 Response,以及 Socket 的 binding、Listening。甚至还会提供 Virtual Host(虚拟主机)等功能,最经典的 HTTP Server 就是 Apache HTTP。

但正如前文所说,HTTP Server 正逐渐面向 Internet,为种类繁多互联网应用提供支撑,而不仅仅是 Web。

API Service

同样的,API Service(Application Programming Interface Service,应用程序编程接口服务)以往就等同于 Web Service,包括现在很多 RESTful API 的框架依旧沿用了 “Web Server、Web Service” 的术语,但在前后端分离、面向云计算的今天,API Service 更多的是作为后端 Application 的接口抽象。

对 API Service 发起的请求,一般来说返回的都是 XML,JSON 这些原始结构,一般不直接展示给用户。通常包含以下部分:

  • Resources:HTTP 资源定义。
  • Routers:HTTP 请求路由器。
  • Handlers:HTTP 资源请求处理器。
  • Controllers:HTTP 资源表现层状态转移控制器。

Application

Application(应用程序)作为 HTTP Server 和 API Service 的统称:前者提供 HTTP 协议处理,后者提供动态的业务服务,两者结合为一个完整的应用程序。

但需要注意的是,有些协议也会将 Web Server 和 Web Application 作为两个完全分离(解耦)的概念,例如:Python 的 WSGI 协议。

Web Server 通过配置搜索 Python Module 路径来找到 Web Application 的入口,找到 app 对象后,Web Server 通过将 Request 所有的 Infos 和一些符合规范的参数信息传递给 app 作为实参,Web Server 以此来实现将 Request 传递给 Web Application。然后 app 执行业务逻辑,在 Response 之前需要调用 start_resposne 回调函数将响应所需要的信息返回,Web Server 最后通过遍历来获取完整的 Response 数据。

而有些实现甚至还会将 Application 的概念去掉,由开发者自行定义,例如:Golang 的 net/http。

对于 net/http 而言,HTTP Server 的本质就是一组实现了 http.Handler 接口的 Handlers(处理器集合),处理 Request 时,根据请求的 URL 进行路由选择到合适的 Handler 进行处理,然后直接返回 Response 即可。

所以也不能一概而论。

猜你喜欢

转载自blog.csdn.net/Jmilk/article/details/108479297