浏览器组成与架构

您所在的位置:网站首页 哪些浏览器是ie系列的应用 浏览器组成与架构

浏览器组成与架构

2024-06-03 16:55| 来源: 网络整理| 查看: 265

组成

        浏览器由shell(用户界面、网络、UI后端、JavaScript解释器、XML解析器、数据存储)和内核(浏览器引擎、渲染引擎)组成,内核是浏览器的核心。不同的浏览器有不同的内核,ie 浏览器是 Trident,Firefox 浏览器是 Geoko(Mozilla自主研发的渲染引擎),Safari 和 Chrome 使用的是 webkit (后来 Chrome 推出了 Blink)。

用户界面(User Interface)

        用户界面主要包括工具栏、地址栏、前进/后退按钮、书签菜单、可视化页面加载进度、智能下载处理、首选项、打印等。除了浏览器主窗口显示请求的页面之外,其他显示的部分都属于用户界面。

        用户界面还可以与桌面环境集成,以提供浏览器会话管理或与其他桌面应用程序的通信。

网络(Networking)         网络系统实现HTTP和FTP等文件传输协议。 网络系统可以在不同的字符集之间进行转换,为文件解析MIME媒体类型。 网络系统可以实现最近检索资源的缓存功能。

UI后端(Display Backend)

        UI后端提供绘图和窗口原语,包括:用户界面控件集合、字体集合。

JavaScript解释器(JavaScript Interpreter)

        JavaScript解释器能够解释并执行嵌入在网页中的JavaScript(又称ECMAScript)代码。 为了安全起见,浏览器引擎或渲染引擎可能会禁用某些JavaScript功能,如弹出窗口的打开。

XML解析器(XML Parser)

        XML解析器可以将XML文档解析成文档对象模型(Document Object Model,DOM)树。 XML解析器是浏览器架构中复用最多的子系统之一,几乎所有的浏览器实现都利用现有的XML解析器,而不是从头开始创建自己的XML解析器。

数据存储(Data Persistence)

        数据存储将与浏览会话相关联的各种数据存储在硬盘上。 这些数据可能是诸如:书签、工具栏设置等这样的高级数据,也可能是诸如:Cookie,安全证书、缓存等这样的低级数据。

浏览器引擎(Browser Engine)

        浏览器引擎是一个可嵌入的组件,其为渲染引擎提供高级接口。浏览器引擎可以加载一个给定的URI,并支持诸如:前进/后退/重新加载等浏览操作。浏览器引擎提供查看浏览会话的各个方面的挂钩,例如:当前页面加载进度、JavaScript alert。浏览器引擎还允许查询/修改渲染引擎设置。

渲染引擎(Rendering Engine 或 layout engineer)

        渲染引擎负责取得网页的内容(HTML、XML、图像等等)、整理讯息(例如加入CSS等),以及计算网页的显示方式,然后会输出至显示器或打印机。渲染引擎能够显示HTML和XML文档,可选择CSS样式,以及嵌入式内容(如图片)。渲染引擎能够准确计算页面布局,可使用“回流”算法逐步调整页面元素的位置。渲染引擎内部包含HTML解析器。

软件构造

        不同的浏览器软件架构也不一样,好的软件都是支持多进程和多线程,进程与进程相互独立,不同的进程之间通过IPC(Inter Process Communication)进行通信。

        以 Chrome 浏览器为例,它的架构模式由浏览器进程(Browser Process)、渲染进程(Renderer Process)、插件进程(Plugin Process)、GPU进程(GPU Process)、网络进程(NetWork Process)和其他进程组成,每个进程都有自己核心的职责,它们相互配合完成浏览器的整体功能,每个进程中又包含多个线程,一个进程内的多个线程也会协同工作,配合完成所在进程的职责。和大多数浏览器不同,Chrome 浏览器的每个标签页都分别对应一个渲染引擎实例。每个标签页都是一个独立的进程,当标签页的数量足够多时(40个页面以上),会与之前的标签页共用同一个进程。

浏览器进程(Browser Process)

        主要负责界面显示、用户交互、子进程管理,同时提供存储等功能。控制应用程序的 chrome 部分,包括地址栏、书签、后退和前进等按钮,还处理Web浏览器的隐形、底层操作,例如网络请求和文件访问。 

渲染进程(Renderer Process)

        核心任务是将 HTML、CSS 和 JavaScript 转换为用户可以与之交互的网页,渲染引擎 Blink 和 JavaScript 引擎 V8 都是运行在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建一个渲染进程。

GPU 进程(GPU Process)

        GPU 进程的使用初衷是为了实现 3D CSS 的效果,随后网页、Chrome 的 UI 界面都选择采用 GPU 来绘制。

网络进程(NetWork Process)

        主要负责页面的网络资源加载。

插件进程(Plugin Process)

        主要是负责插件的运行,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页面造成影响。

utility进程(Utility Process)

        有时候浏览器主进程需要做一些“危险”的事情,比如图片解码、文件解压缩。如果这些“危险”的操作发生了失败,会导致整个主进程发生异常崩溃,这是我们不愿意看到的。因此Chromium设计出了一个utility进程的机制。主进程临时需要做一些不方便的任务的情况下,可以启动一个utility进程来代替主进程执行,主进程与utility进程之间通过IPC消息来通信。

其他进程

        UI进程、存储进程、备进程、Audio进程、Video进程、Profile进程等等。

面向服务架构

        面向服务架构(Services Oriented Architecture,简称 SOA),后端技术开发中比较火热的微服务架构就是 SOA 的一种变体,Chrome 官方团队将原来的各种模块重构成独立的服务(Service),访问服务(Service)必须使用定义好的接口,通过 IPC 来通信,每个服务(Service)都可以在独立的进程中运行,并且可以轻松拆分为不同的进程或聚合为一个进程。当Chrome在功能强大的硬件上运行时,它可能会将每个服务拆分为不同的进程以提供更高的稳定性,但是如果是在资源受限的设备上,Chrome 会将服务整合到一个进程中以节省内存。

        在最新的 Chrome 浏览器中,可以在设置中打开更多工具,找到任务管理器并打开。

         可以看到有部分的 Chrome Service 与进程同时在运行,Chrome 仍在努力的完善面向服务架构。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3