Chrome浏览器架构图
- 格式:pptx
- 大小:63.78 KB
- 文档页数:3
【五】Chrome的插件模型1. NPAPI为了紧密的与各个开源浏览器团结起来,共同抗击IE的垄断,Chrome的插件,也遵循了NPAPI(Netscape Plugin Application Programming Interface)标准,支持这个标准的浏览器需要实现一组规定的API供插件调用,这组API形如NPN_XXX,比如NPN_GetURL,插件可以利用这些API进行二次开发。
而NPAPI插件以一个Dll之类的作为物理载体(windows下dll,linux下是so…)进行提供,里面同样也实现了一组规定的API。
形式包括NP_XXX和NPP_XXX,NP_XXX是系统需要默认调用的方法,用于认知这个插件,比如NP_Initialize,而NPP_XXX是用于插件完成一些实际功能,比如NPP_New。
所有的插件dll都需要放置在指定目录下(根据操作系统的不同而不同…),每个插件可以处理一种或多种MIME格式的数据,比如application/pdf,说明该插件可以处理pdf相关的文档。
在Chrome中键入about:plugins,可以查看当前Chrome中具有的插件信息。
NPAPI是一个很经典的插件方案,用dll进行注入,用协定的API进行通信,用字符串描述插件能力。
插件宿主(在这里就是浏览器…),会根据能力描述,动态加载插件,并负责插件调用的流程和生命周期管理。
而插件中,负责真实逻辑的处理,并可以构造UI与用户交流。
以此类方式实现的插件系统,往往是处理的逻辑比较固定适用范围一般(用API写死了逻辑…),但可扩展性不错(用字符串描述能力,可无限扩展…)。
在Chrome中nphostapi.h中,定义了所有NPAPI相关的函数指针和结构,这个文件放置在glue目录下,如果看过前面碰过的文章就知道,在WebKit内肯定也有一套相同的东西;在npapi.h/.cc中,提供了Chrome浏览器端的NPN_XXX系列函数的实现;每一个插件物理实例,用PluginLib类来表示,而每一个插件的逻辑实例,用PluginInstance类来表示。
chromium 结构
Chromium的结构包括以下几个部分:
1. Browser(浏览器进程):运行用户界面(UI)以及管理标签页和插件的主进程。
2. Renderer(渲染进程):每个标签页都有自己的渲染进程,负责解析HTML和CSS,并将网页渲染成像素。
3. GPU Process(GPU进程):如果用户正在使用需要GPU加速的功能,比如WebGL或者视频解码,Chromium会为这些功能启动一个独立的GPU进程。
4. Network Process(网络进程):处理所有的网络请求,以提供更快的网络性能和更好的安全性。
5. Utility Process(实用工具进程):运行一些辅助任务,比如下载管理、扩展安装等。
Chromium使用多进程架构,每个进程都有自己的地址空间,以提供更高的安全性和稳定性。
当某个标签页崩溃时,它只会影响到该标签页的渲染进程,而不会影响到其他标签页或者整个浏览器。
这种架构也有助于隔离不同的标签页和插件,防止它们之间的相互干扰。
谷歌浏览器优质词条编辑词条编辑摘要谷歌浏览器,又称Google Chrome,是一个由Google(谷歌)公司开发的开放原始码网页浏览器。
软件的beta测试版本在2008年9月2日发布,提供43种语言版本,适用于PC、苹果机和Linux 的快速浏览器。
软件的名称是来自于又称作Chrome的网路浏览器图形使用者界面(GUI)。
Google Chrome 浏览器在简约的外观设计下,蕴含了尖端的技术,让网络浏览变得更快捷、更安全且更简便,Chrome浏览器登录即可同步计算机上的个性化设置,随时随地享受个性化体验。
基本信息栏中文名称谷歌浏览器开发公司谷歌发行时间2008年9月2日支持平台Windows、Linux和Mac 语言版本50种语言外文名称Google Chrome发行商谷歌编程语言C++、汇编语言、Javascript 渲染引擎WebKit(基于KHTML)开源免费版Chromium软件简介编辑本段软件概述Google Chrome是由Google开发的一款设计简单、高效的Web浏览工具。
[1]Google Chrome的特点是简洁、快速。
GoogleChrome支持多标签浏览,每个标签页面都在独立的“沙箱”内运行,在提高安全性的同时,一个标签页面的崩溃也不会导致其他标签页面被关闭。
此外,Google Chrome基于更强大的JavaScript V8引擎,这是当前Web浏览器所无法实现的。
Google Chrome另有手机版的Chrome浏览器,于2012年发布了谷歌浏览器移动版,提供IOS系统和安卓系统的谷歌浏览器,在保持浏览器原有特点的情况下,实现了多终端使用浏览器,具有共享收藏历史信息等功能,是手机浏览器的一次巨大突破。
随着Android系统的份额不断扩大而市场占有率不断飙升。
Google Chrome是一款免费软件,借鉴了苹果Safari的WebKit引擎、Mozilla 的Firefox及其他相关应用。
国外浏览器评测国外浏览器评测⽬录链接汇总⾕歌浏览器(Google Chrome)【下载地址】⾕歌浏览器Google Chrome是由Google公司开发的⼀款设计简单、⾼效的Web浏览⼯具,⽬前浏览器市场占有率绝对第⼀,⾕歌浏览器带给⽤户⾼速、稳定、安全的⽹络浏览体验。
该浏览器是基于其他开放原始码软件所撰写,包括WebKit和Mozilla,⽬标是提升稳定性、速度和安全性,并创造出简单且有效率的使⽤者界⾯。
Google Chrome⽀持多标签浏览,每个标签页⾯都在独⽴的“沙箱”内运⾏,在提⾼安全性的同时,⼀个标签页⾯的崩溃也不会导致其他标签页⾯被关闭。
chrome浏览器相⽐其他浏览器胜在速度上,简洁快速,⽤了chrome再也看不上别的浏览器了。
专业⼈⼠爱⽤chrome,不过占⽤内存有点⼤。
chrome现在浏览器市场占有率超过60%基本是所向披靡。
总结下chrome为什么会是主流的原因:1.同步:基于⾕歌账号的多端同步。
能够满⾜对书签,浏览记录同步,等等有很强的需求。
2.chrome安全性好:沙盒设计,异步进程架构,再加上Google Safe Browsing,下载前检测机制等等。
3.快:还是那句话,⽤过快的,就不喜欢慢的。
4.chrome扩展多:各种实⽤的扩展,相⽐firefox的扩展,对浏览器本⾝影响更⼩,热更新。
其中有些是上⽹必备的。
如果chrome web store 连不上,可以去国内的⼀些商店安装,还可以下载下来离线安装,还可以直接安装⾃定义的脚本,这些⼩⼯具有时候是⾮常管⽤的。
5.简洁:现在浏览器的 UI 都互相借鉴(或者说抄袭),我也不知道 Chrome 的 UI 是否原创,不过简洁的界⾯的确是⼀⼤优势,特别是最新的 Chromium,甚⾄隐藏了地址栏。
当然缺点也有,⽐如⽹银,很多都不⽀持Chrome,还有就是吃内存呀,另外就是链接内⽂字的复制也是⼀⼤缺点。
特⾊1、速度 ⾕歌浏览器(Google Chrome) 浏览器追求的是全⽅位的⾼速体验,它可以快速地从桌⾯上启动,并能迅速加载⽹页,⽽在运⾏复杂的⽹络应⽤时更是不及掩⽿。
浏览器渲染页面原理什么是浏览器渲染页面原理?浏览器渲染页面原理是指浏览器把 HTML、CSS 和 JavaScript 转化为用户可以理解和浏览的页面的过程。
浏览器的渲染引擎负责处理这个过程,并决定如何呈现页面的内容、样式和交互。
渲染流程渲染页面的过程可以简单概括为以下几个步骤:1. 构建 DOM 树浏览器解析 HTML 文档,生成 DOM(文档对象模型)树。
DOM 树是一个以层次结构组织的节点树,表示网页的结构和内容。
2. 构建 CSSOM 树浏览器解析 CSS 样式表,生成 CSSOM(CSS 对象模型)树。
CSSOM 树是一个以层次结构组织的节点树,表示每个元素的样式规则。
3. 构建渲染树浏览器将 DOM 树和 CSSOM 树结合,构建渲染树。
渲染树只包含需要显示的元素和其样式信息,不包括不可见的元素(如<head>、<script>等)。
4. 布局浏览器根据渲染树进行布局计算,确定每个元素的大小和位置。
布局过程中,浏览器会考虑盒子模型、文档流、浮动等元素属性。
5. 绘制浏览器根据布局结果,将元素绘制在屏幕上。
绘制过程中会涉及图形库的调用,将元素转换成像素点,并进行合成和渲染。
6. 重排与重绘当渲染树中的元素位置或样式发生改变时,浏览器需要进行重排(Layout)和重绘(Paint)。
重排是重新计算布局,重绘是重新绘制元素的外观。
优化页面渲染1. 减少 HTTP 请求由于网络请求是较为耗时的操作,减少 HTTP 请求可以提高页面加载速度。
可以通过合并 CSS 和 JavaScript 文件、使用 CSS 雪碧图、压缩资源等方式来减少请求次数。
2. 使用 CSS3 动画代替 JavaScript 动画CSS3 动画由于可以通过硬件加速,性能更好,因此在动画效果较简单的情况下,可以考虑使用 CSS3 动画代替 JavaScript 动画。
3. 尽量避免使用table布局使用table布局会影响页面的渲染性能,因此在不是用于表格展示的情况下,应尽量避免使用table布局。
Chrome浏览器最最最值得拥有的六款插件,从此科研不是梦Chrome浏览器以较快的搜索速度,友好的界面,强劲的性能和出色的体验,迅速扩大市场份额,在2012年超过IE浏览器坐上了第一把交椅,作为一名科研党,要写出优秀的科研成果离不开这样的神器,Chrome浏览器的特色之处还包括拥有丰富的插件,下面介绍几款本人常用的Chrome浏览器插件,希望对大家有所帮助。
还是谷歌好1、万能翻译插件:划词翻译万能翻译插件:划词翻译做科研离不开翻译,不管是英译汉还是汉译英,这款划词翻译的插件,不仅可以翻译部分单词,部分短落,还可以翻译整个全文;不仅支持几乎所有语言的翻译,还有阅读朗诵的功能;不仅支持国内的百度翻译,有道翻译引擎,还支持国外的谷歌翻译,必应翻译;使用上非常便捷,操作逻辑也很简单。
左键选中要翻译的内容,点击绿色按钮即可自动翻译。
使用起来简单好用2、更改页面颜色插件:Change Colors更改页面颜色插件:Change ColorsChange Colors是Chrome浏览器可以更改网页页面颜色的插件,几乎是我的必装插件,还有夜间模式,使用起来也很简单,打开Change Colors 的选项,根据个人喜好设置相关参数即可,页面就可以变成各种颜色了,妈妈再也不用担心你的眼睛了。
上面绿绿的就是我更改的颜色3、科研党必备插件:Google学术搜索按钮科研党必备插件:Google学术搜索按钮搞科研的人,都知道Google学术的强大和重要性,Google学术搜索按钮插件就是可以帮助我们这些搬运工,迅速地获取学术论文的全部内容的插件。
但前提是你能够正常的登录Google学术网页,如果不行可以使用更改Hosts文件等方法解决一下。
页面简洁好用4、谷歌下载插件:Chrono下载管理器谷歌下载插件:Chrono下载管理器谷歌网页本身自带下载界面并不是很友好,有了Chrono下载管理器这个插件,不仅可以完美替代浏览器自带的下载界面,还可以捕捉网页上的一些流媒体、音频、视频神马的,特别好用,断点下载什么的也比Chrome本身好很多。
【Chromium中⽂⽂档】ChromeChromium沙箱-安全架构设计沙箱安全是Chromium最重要的⽬标之⼀。
安全的关键在于理解下⾯这点:在我们完整地理解了系统在所有可能的输⼊组合下表现出的⾏为之后,我们才能够真的保证系统安全。
对于像Chromium这样庞⼤⽽多样化的代码库,推理它的各个部分可能的⾏为的组合⼏乎是不可能的。
沙箱的⽬标是提供这样⼀种保证:不论输⼊什么,保证⼀段代码最终能或不能做的事情。
沙盒利⽤操作系统提供的安全性,允许不能对计算机做出持久性改变或者访问持续变化的信息的代码的执⾏。
沙箱提供的架构和具体保证依赖于操作系统。
这个⽂档覆盖了Windows实现与⼀般的设计。
Linux实现和OSX实现也会在这⾥描述。
如果你不想要阅读这整个⽂档,你可以阅读。
沙箱保护与不保护的内容也可以在FAQ中找到。
设计原则不要重新发明轮⼦: ⽤更好的安全模型扩展操作系统内核很有诱惑⼒。
但不要这样做。
让操作系统在所控制的对象上应⽤它的安全策略。
另⼀⽅⾯,创建有⾃定义安全模型的应⽤程序层级对象(抽象)是可以的。
最⼩权限原则: 这既应该⽤于沙箱代码也应该⽤于控制沙箱的代码。
换⾔之,即使⽤于不能提升权限到超级⽤户,沙箱也需要能够⼯作。
假定沙盒代码是恶意代码: 出于威胁建模的⽬的,我们认为沙箱中的代码⼀旦执⾏路径越过了⼀些main()函数的早期调⽤,那么它是有害的(即,它会运⾏有害代码),实践中,在第⼀外部输⼊被接收时,或者在进⼊主循环前,这就可能发⽣。
敏感: ⾮恶意代码不会尝试访问它不能获得的资源。
在这种情况下,沙箱产⽣的性能影响应该接近零。
⼀旦敏感资源需要以⼀种控制⾏为访问时,⼀点性能损失是必要的。
这是在操作系统安全合适事情情况下的常见例⼦。
仿真不是安全: 仿真和虚拟机⽅案本⾝不能提供安全。
沙箱不会出于安全⽬的,依赖于代码仿真,或者代码转换,或者代码修复。
沙箱windows架构Windows沙箱是⼀种仅⽤户模式可⽤的沙箱。
浏览器⼯作原理和实践(⼀)——浏览器 《》是极客时间上的⼀个浏览器学习系列,在学习之后特在此做记录和总结。
⼀、Chrome架构1)线程和进程 Chrome打开⼀个页⾯会启动4个进程:⽹络进程、GPU进程、浏览器主进程和渲染进程。
⼀个进程就是⼀个程序的运⾏实例,启动⼀个程序的时候,操作系统会为该程序创建⼀块内存,⽤来存放代码、运⾏中的数据和⼀个执⾏任务的主线程,这样⼀个运⾏环境叫进程。
线程是依附于进程的,⽽进程中使⽤多线程并⾏处理能提升运算效率。
进程和线程之间的关系有以下 4 个特点: (1)进程中的任意⼀线程执⾏出错,都会导致整个进程的崩溃。
(2)线程之间共享进程中的数据。
(3)当⼀个进程关闭之后,操作系统会回收进程所占⽤的内存。
(4)进程之间的内容相互隔离。
2)Chrome进程架构 最新的 Chrome 浏览器包括:1 个浏览器(Browser)主进程、1 个 GPU 进程、1 个⽹络(NetWork)进程、多个渲染进程和多个插件进程,如下图所⽰。
(1)浏览器主进程:负责界⾯显⽰、⽤户交互、⼦进程管理,同时提供存储等功能。
(2)渲染进程:核⼼任务是将 HTML、CSS 和 JavaScript 转换为⽤户可以与之交互的⽹页,排版引擎 Blink 和 JavaScript 引擎 V8 都是运⾏在该进程中,默认情况下,Chrome 会为每个 Tab 标签创建⼀个渲染进程。
出于安全考虑,渲染进程都是运⾏在沙箱模式下。
(3)GPU进程:GPU 的使⽤初衷是为了实现 3D CSS 的效果,随后⽹页、Chrome 的 UI 界⾯都选择采⽤ GPU 来绘制,这使得 GPU 成为浏览器普遍的需求。
(4)⽹络进程:负责页⾯的⽹络资源加载,之前是作为⼀个模块运⾏在浏览器进程⾥⾯的。
(5)插件进程:负责插件的运⾏,因插件易崩溃,所以需要通过插件进程来隔离,以保证插件进程崩溃不会对浏览器和页⾯造成影响。
1楼发表于2010-6-3 23:25 |只看该作者|倒序浏览|打印《卡饭月刊》第25期发布(2011.04)--崭新的起点,崭新的开始!3楼发表于2010-6-3 23:27 |只看该作者Chrome源码剖析【三】【三】Chrome的进程模型1. 基本的进程结构Chrome是一个多进程的架构,不过所有的进程都会由老大,Browser进程来管理,走的是集中化管理的路子。
在Browser进程中,有xxxProcessHost,每一个host,都对应着一个Process,比如RenderProcessHost对应着RenderProcess,PluginProcessHost对应着PluginProcess,有多少个host的实例,就有多少个进程在运行。
这是一个比较典型的代理模式,Browser对Host的操作,都会被Host封装成IPC消息,传递给对应的Process 来处理,对于大部分上层的类,也就隔离了多进程细节。
2. Render进程先不扯Plugin的进程,只考虑Render进程。
前面说了,一个Process一个tab,只是广告用语,实际上,每一个web页面内容(包括在tab中的和在弹出窗口中的...),在Chrome中,用RenderView 表示一个web页面,每一个RenderView可以寄宿在任一一个RenderProcess中,它只是依托RenderProcess 帮助它进行通信。
每一个RenderProcess进程都可以有1到N个RenderView实例。
Chrome支持不同的进程模型,可以一个tab一个进程,一个site instance一个进程等等。
但基本模式都是一致的,当需要创建一个新的RenderView的时候,Chrome会尝试进行选择或者是创建进程。
比如,在one site one process的模式下,如果存在此site,就会选择一个已有的RenderProcessHost,让它管理这个新的RenderView,否则,会创建一个RenderProcessHost(同时也就创建了一个Process),把RenderView交给它。
序:开源是口好东西,它让这个充斥着大量工业垃圾代码和教材玩具代码的行业,多了一些艺术气息和美的潜质。
它使得每个人,无论你来自米国纽约还是中国铁岭,都有机会站在巨人的肩膀上,如果不能,至少也可以抱一把大腿。
现在我就是来抱大腿的,这条粗腿隶属于Chrome(开源项目名称其实是Chromium,本来Chrome这个名字就够晦涩了,没想到它的本名还更上一层楼…),Google那充满狼子野心的浏览器。
每一个含着金勺子出生的人都免不了被仰慕并被唾骂,Chrome也不例外。
关于Chrome的优劣好坏讨论的太多了,基本已经被嚼成甘蔗渣了,没有人愿意再多张一口了。
俗话说,内行看门道外行看热闹,大部分所谓的外行,是通过使用的真实感受来评定优劣的,这无疑是最好的方式。
但偏偏还是有自诩的内行,喜欢说内行话办外行事,一看到Chrome用到多进程就说垃圾废物肯定低能。
拜托,大家都是搞技术的,你知道多进程的缺点,Google也知道,他们不是政客,除了搞个噱头扯个蛋就一无所知了,人家也是有脸有皮的,写一坨屎一样的开源代码放出来遭世人耻笑难道会很开心?所谓技术的优劣,是不能一概而论的,同样的技术在不同场合不同环境不同代码实现下,效果是有所不同的。
既然Chrome 用了很多看上去不是很美的技术,我们是不是也需要了解一下它为什么要用,怎么用的,然后再开口说话?(恕不邀请,请自行对号入座…)。
人说是骡子是马拉出来遛遛,Google已经把Chrome这匹驴子拉到了世人面前,大家可以随意的遛。
我们一直自诩是搞科学的,就是在努力和所谓的艺术家拉开,人搞超女评委的,可以随意塞着屁眼用嘴放屁,楞把李天王说是李天后,你也只能说他是艺术品位独特。
你要搞科学就不行,说的不对,轻的叫无知,重的叫学术欺诈,结果一片惨淡。
所以,既然代码都有了,再说话,就只能当点心注点意了,先看,再说。
我已经开始遛Chrome这头驴了,确切一点,是头壮硕的肥驴,项目总大小接近2G。
从整体来看,Google的云计算平台包括了如下的技术层次。
●网络系统:包括外部网络(Exterior Network) ,这个外部网络并不是指运营商自己的骨干网,也是指在Google 云计算服务器中心以外,由Google 自己搭建的由于不同地区/国家,不同应用之间的负载平衡的数据交换网络。
内部网络(Interior Network),连接各个Google自建的数据中心之间的网络系统。
●硬件系统:从层次上来看,包括单个服务器、整合了多服务器机架和存放、连接各个服务器机架的数据中心(IDC)。
●软件系统:包括每个服务器上面的安装的单机的操作系统经过修改过的Redhat Linux。
Google 云计算底层软件系统(文件系统GFS、并行计算处理算法Mapreduce、并行数据库Bigtable,并行锁服务Chubby Lock,云计算消息队列GWQ)●Google 内部使用的软件开发工具Python、Java、C++ 等●Google 自己开发的应用软件Google Search 、Google Email 、Google Earth外部网络系统介绍当一个互联网用户输入的时候,这个URL请求就会发到Google DNS 解析服务器当中去,Google 的DNS 服务器会根据用户自身的IP 地址来判断,这个用户请求是来自哪个国家、哪个地区。
根据不同用户的IP地址信息,解析到不同的Google的数据中心。
进入第一道防火墙,这次防火墙主要是根据不同端口来判断应用,过滤相应的流量。
如果仅仅接受浏览器应用的访问,一般只会开放80 端口http,和443 端口https (通过SSL加密)。
将其他的来自互联网上的非Ipv4 /V6 非80/443 端口的请求都放弃,避免遭受互联网上大量的DOS 攻击。
在大量的web 应用服务器群(Web Server Farm)前,Google使用反向代理(Reverse Proxy)的技术。
谷歌浏览器作者:刘露来源:《百科知识》2008年第23期浏览器是走进互联网的“窗户”。
以前,我们通过浏览器看新闻、查资料、收发E-mail,如今,网页已经从简单的文本页面发展到富媒体页面,通过浏览器我们还可以编辑文档、观看视频、收听音乐、管理银行账户等等。
我们需要更适合当前的Web发展趋势的浏览器,或者说是一个现代化的网页及应用平台。
就在今年9月初,谷歌公司推出了以现今的互联网为基础、为应对未来可能出现的众多网络应用而设计的Chrome浏览器。
与经典的谷歌主页一样,Chrome浏览器简单的用户界面背后由领先的核心技术支持,用以支持用户浏览现今的网络。
谷歌称,Chrome浏览器将为用户提供更好的网络体验,使用户更易搜索,以便尽快找到所需内容。
在页面设计上,Chrome进行了大胆创新。
为了增加页面显示空间,Chrome取消了很多菜单和工具图标,浏览器上方只有两个菜单和几个工具图标。
从IE7开始,微软也采取了这样的设计理念。
但不同的是,IE允许用户返回到传统菜单栏模式,而Chrome浏览器则不允许。
对此,用户可能需要一个适应过程。
Chrome处理标签页的方式也与众不同,每个标签都相当于一个单独的浏览器。
书签栏、地址框、菜单和工具栏都位于标签内部,而不是整个浏览器上。
Chrome的标签位于屏幕顶部,界面显得更整齐。
标签的排列也较为有序,当从某个页面点击一个链接后,弹出的新标签紧随正在访问的页面,而不是在标签的尾部。
与其他浏览器一样,当用户访问到恶意站点或“钓鱼”站点时,Chrome会给出提示。
在功能特性上,Chrome的地址栏整合了搜索功能,集标准URL输入和搜索功能为一体。
既可以输入URL链接,也可以输入所查找内容。
只需几次点击,用户便能尽快地查到所需信息。
另外,在Chrome浏览器中打开一个新的标签页时,用户将看到一些网页缩略图,其中包括以往经常浏览的网站,最新的搜索结果以及书签页,使用户_能更容易地浏览网页。
Chrome源代码结构首先,开始接触Chrome的童鞋可能有一个疑惑,Chrome和Chromium 是同一个东西吗?答案是,Chrome是Google官方的浏览器项目名称,Chromium是Google官方对Chrome开源项目。
说白了就是Chrome是Google自己的官方浏览器版本,而Chromium是开源项目,所有有兴趣的开发者都可以参加,Chromium中出现的新技术如果经过测试是可靠的,健壮的,那么将可能会出现在未来发布的Chrome官方版本中.因此,Chrome版本更新速度要远远小于Chromium的更新速度。
在本文中,笔者为了偷懒,直接用项目名称Chrome指代Chromium,废话不多说了,开始为潜入Chrome源代码的海洋作准备了.源代码目录树Chrome项目是一个非常庞大的项目工程,包含的工程(Project)数量超过了500个,全部代码加在一起超过4G,全部编译完成将消耗将近30G 的磁盘空间,不愧为恐龙级别的软件项目工程.面对Chrome浩如烟海的源代码,我们怎么读呢?很显然,一个文件一个文件的看,逐行分析是不现实的,我们必须先从整体来把握整个Chrome工程,然后逐步细化去了解每个具体模块的功能,并且对你所感兴趣的部分模块进行最后的深入分析。
分析任何一个大型软件项目的源代码,我们首先要做的事是参考官方文档我们可以很快掌握项目中各个工程之间的依存关系,了解项目中每个模块的大致功能,并且可以很快地找到源代码分析的入口点。
下面图1所展示的是在Visual Studio 2008中,Chrome项目的源代码目录树结构,不同的Chrome版本的源代码目录树可能有一些差别,但其主要某块的结构变化不大。
虽然Chrome整个源码工程很庞大,但其代码结构是非常清晰的,代码质量非常高,代码的风格统一,这将是为后续代码分析提供便利。
基于Visual Studio 2008那强大的可视化调试功能,童鞋们只要掌握好分析的粒度,从粗到细,从整体到局部逐渐深入,从面到点,通过在关键部分设置端点,有目的的去跟踪代码执行流程,很快就进入状态.下面将逐一介绍Chrome源代码中主要工程模块的功能。