《WebKit 技术内幕》之三(3): WebKit 架构和模块


3 Webkit2
3.1  Webkit2 架构及模块
        相比于狭义的WebKit,WebKit2是一套全新的结构和接口,而并不是一个简单的升级版。Webkit2 的思想同 Chrominum 类似,就是将渲染过程放在单独的进程中来完成,独立于用户界面。

        webKit2中也引入了插件进程,还引入了网络进程。“Web 进程”对应于 Chrominum 中的  Renderer进程,主要是渲染网页。“UI 进程”对应于 Chrominum 中的Browser  进程,接口就暴露在该进程中,应用程序(浏览器和使用者)调用该接口即可。
3.2  Webkit 和 Webkit2 嵌入式接口
        Webkit 提供嵌入式接口,该接口表示其他程序可以将网页渲染嵌入在程序中作为其中的一部分,或者用户界面的一部分。对于WebKit的Chromium移植来说,它的接口主要用于Chromium浏览器,而不是嵌入式的使用方式。
        在 Webkit 项目中,狭义 Webkit 的接口主要是与移植相关的 ewk_view 文件中的相关类。其主要思想是将网页的渲染结果作为用户界面的一个窗口部件,从这个角度上看,这跟其他的部件没有什么不同,区别在于它用来显示网页的内容。总结这些接口,按功能大致可以把所有接口分成6种类型:

  • 加载网页、获取加载进度、停止加载、重新加载等
  • 遍历前后浏览记录,可以前进、后退等
  • 网页的很多设置,例如缩放、主题、背景、编码等
  • 查找网页内容、高亮等
  • 触控事件、鼠标事件处理
  • 查看网页源代码、显示调试窗口等与开发者相关的接口。

       这也式通常的嵌入式接口提供的功能,这些类型大概有180多个接口,非常之多。

         Webkit2 接口不同于 Webkit 的接口,它们是不兼容的,不过目的都差不多,都是提供嵌入式的应用接口。WeKit2接口大致可以分为两个大的部分,下面仍以EFL的移植部分为例加以说明。

        第一部分是WebView相关的接口,表示渲染的设置、渲染过程、界面等。其中大多数跟各个移植紧密相关,这里有三个主要的类,它们被各个移植所共享。

  • WKView[Ref]: 表示的是一个与平台相关是视图,如在Windows上它表示的就是一个窗口的句柄。
  • WKContextRef:所有页面的上下文,这些被共享的信息包括local storage、设置等。
  • WKPageRef:表示网页,也就是浏览的基本单位。

        虽然下面有大量跟移植相关的类,最主要的接口其实还是ewk_view,在EFL中,WebKit2的ewk_view接口同WebKit还是比较相似的,提供的功能也类似,都是一个能够渲染网页的窗口部件。但是,其接口比WebKit的部件少很多,去除一些不是很有用的接口,大概还有48个接口。接口类中还有很多其他跟移植相关的类,它们很多是为提供该窗口部件服务的,例如历史记录等。

        第二部分是上面接口依赖的基础类,它们被各个移植所共享,既包括容器,字符串等基础类,也包括网页相关的基础类,例如URL、请求】网页设置等。

        WebKit2还有一部分接口其实在Web进程里的,那就是WebBundle,其目的是让某些移植访问DOM,目前还没有明确的需求。

3,3 比较 Webkit2 和 Chrominum 的多进程模型
        Webkit2 的多进程模型参考了 Chrominum 的模型和框架,也提供了多进程之上的接口层,但二者还是有一些区别的
        Chrominum 使用的仍然是 Webkit 接口,而不是 Webkit2 接口,也就是说 Chrominum 是在 Webkit 接口之上构建的多进程架构。
        Webkit2 的接口将多进程结构隐藏起来,这样可以让应用程序不必纠缠于内部的细节。但是,对 Chrominum 来说,它的主要目的时给 Chrominum 提供 Content 接口以便构建 Chrominum 浏览器,其本身目标不是提供嵌入式接口。
        Chrominum 中每个进程都是从相同的二进制可执行文件启动,而基于 Webkit2 的进程则未必如此。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/631707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为路由设备DHCPV6配置

组网需求 如果大量的企业用户IPv6地址都是手动配置,那么网络管理员工作量大,而且可管理性很差。管理员希望实现公司用户IPv6地址和网络配置参数的自动获取,便于统一管理,实现IPv6的层次布局。 图1 DHCPv6服务器组网图 配置思路 …

重置aws上的ssh默认登录端口

aws上的ec2机器,默认ssh的登录都是22,为了防止被黑,记录下修改该默认端口的方法 修改/etc/ssh/sshd_config文件,将Port 22注释去掉在上面的文件中,加入一行,你想要增加的端口号,格式和22一致注意&#xff1…

Hotspot源码解析-第二十章-基础类型的数组类型对象的创建与分配

20.2 基础类型的数组类型创建 该函数的入口在init.cpp->init_globals(),然后再调用universe.cpp->universe2_init()函数,实际执行的函数是Universe::genesis,所以从这开始源码的解析。解析前先了解一下Klass的概念,大家思考…

软件测试面试200问(含答案)

🍅 视频学习:文末有免费的配套视频可观看 🍅 关注公众号【互联网杂货铺】,回复 1 ,免费获取软件测试全套资料,资料在手,涨薪更快 1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&a…

计算机网络(第六版)复习提纲3

2.3 物理层下面的传输媒体 传输媒体是数据传输系统中在发送器和接收器之间的物理通道,有导引型传输媒体(有线)和非导引型传输媒体(无线) 1.双绞线:两条铜线绞合,以减少干扰,绞合度越…

阿里云云原生助力安永创新驱动力实践探索

云原生正在成为新质生产力变革的核心要素和企业创新的数字基础设施。2023 年 12 月 1 日,由中国信通院举办的“2023 云原生产业大会”在北京召开。在大会“阿里云云原生”专场,安永科技咨询合伙人王祺分享了对云原生市场的总览及趋势洞见,及安…

热更新相关

SOT:忒修斯科技

自动驾驶轨迹规划之碰撞检测(三)

欢迎大家关注我的B站: 偷吃薯片的Zheng同学的个人空间-偷吃薯片的Zheng同学个人主页-哔哩哔哩视频 (bilibili.com) 目录 1.基于圆覆盖 2.BVH 3.MATLAB自动驾驶工具箱 4 ROS内置的模型 自动驾驶轨迹规划之碰撞检测(一)-CSDN博客 自动驾…

ubuntu qt 运行命令行

文章目录 1.C实现2.python实现 1.C实现 下面是封装好的C头文件&#xff0c;直接调用run_cmd_fun()即可。 #ifndef GET_CMD_H #define GET_CMD_H#endif // GET_CMD_H #include <iostream> #include<QString> using namespace std;//system("gnome-terminal -…

【JavaEE进阶】 关于应用分层

文章目录 &#x1f38b;序言&#x1f343;什么是应⽤分层&#x1f38d;为什么需要应⽤分层&#x1f340;如何分层(三层架构)&#x1f384;MVC和三层架构的区别和联系&#x1f333;什么是高内聚低耦合⭕总结 &#x1f38b;序言 在我们进行项目开发时我们如果一股脑将所有代码都…

嵌入式软件分层的思想

文章目录 一、分层的目的二、分层逻辑图三、分层的架构图四、分层的优缺点五、举例六、 优化 一、分层的目的 “高内聚&#xff0c;低耦合的思想”&#xff0c;表示在设计和开发软件系统时&#xff0c;应该使模块之间的关系更加紧密&#xff0c;同时避免模块之间的依赖性过于紧…

【JavaEE】文件操作: File 类的用法和 InputStream, OutputStream 的用法

目录 1. File 概述 1.1 File的属性 1.2 File的构造方法 1.3 File的方法 2.读文件 2.1 InputStream 概述 2.2 FileInputStream 概述 2.3 正确打开和关闭文件的方式 2.4 不同方式读取文件代码示例 2.4 另一种方法:利用 Scanner 进行字符读取 3.写文件 3.1 OutputStre…

如何在苹果手机上进行文件管理

摘要 苹果手机没有像安卓系统那样内置文件管理器&#xff0c;但是可以通过使用克魔开发助手来实现强大的文件管理功能。本文介绍了如何使用克魔开发助手在电脑上管理和传输苹果手机的文件。 引言 很多朋友都在使用苹果手机&#xff0c;但是当需要查看手机中的文件时&#xf…

解析链动2+1:从零到一助力企业快速增长

每天五分钟讲解商业模式&#xff0c;大家好我是模式策划啊浩 在数字化时代&#xff0c;引流已成为企业发展的重要基石。然而&#xff0c;传统的引流模式已难以满足现代企业的需求。此时&#xff0c;链动21商业模式以其独特的优势&#xff0c;成为了商业引流的新趋势。本文将深…

java常见面试题:如何使用Java进行Spring Boot框架开发?

Spring Boot是一个用于创建独立、生产级别的基于Spring的项目的框架。它简化了Spring应用的初始化和开发过程&#xff0c;提供了一个快速的启动和开发平台。 以下是使用Java进行Spring Boot框架开发的详细步骤&#xff1a; 添加Spring Boot依赖 首先&#xff0c;你需要在项目…

version-polling一款用于实时检测 web 应用更新的 JavaScript 库

为了解决后端部署之后&#xff0c;如何通知用户系统有新版本&#xff0c;并引导用户刷新页面以加载最新资源的问题。 实现原理 1.使用 Web Worker API 在浏览器后台轮询请求页面&#xff0c;不会影响主线程运行。 2.命中协商缓存&#xff0c;对比本地和服务器请求响应头etag字…

取消lodash.throttle中的默认执行完最后一次函数

我的场景: 我有一个列表,我考虑用户连续点击删除的情况&#xff0c;如果用户连续点击&#xff0c;可能会导致数据库中的数据被删除了&#xff0c;但是我还需要刷新数据列表才能反应到页面上&#xff0c;可是这时候用户又点击了同一条数据的删除按钮多次&#xff0c;导致发起了…

第二讲_HarmonyOS应用创建和运行

HarmonyOS应用创建和运行 1. 创建一个HarmonyOS应用2. 运行新项目2.1 创建本地模拟器2.2 启动本地模拟器2.3 在本地模拟器运行项目 1. 创建一个HarmonyOS应用 打开DevEco Studio&#xff0c;在欢迎页单击Create Project&#xff0c;创建一个新工程。 选择创建Application应用。…

spakr 提交任务

当前集群支持3中集群管理 Standalone&#xff08;spak框架自身拥有能力&#xff09;Apache Mesos Hadoop YARN Kubernetes 使用/spark-submit脚本提交任务&#xff0c;脚本后面可以接参数 ./bin/spark-submit \--class <main-class> \--master <master-url> \--de…

运用位运算管理状态标志—以SDWebImage为例

在看SDWebImage图片加载库的时候&#xff0c;看到了一个位运算的高级使用&#xff0c;之前对位运算深入了解只是在datalab中&#xff0c;但也只是处于“学会”的阶段&#xff0c;本篇介绍位运算在实践中管理状态的使用&#xff0c;希望能打开你的思路&#xff0c;对你有所帮助 …