2

Introduce to WebKit2

Posted by admin on May 12, 2010 in WebKit, 浏览器, 软件架构 |

如需转载,请注明出处! WebSite: http://www.jjos.org/ 作者: 姜江 linuxemacs@gmail.com QQ: 457283 WebKit2是为WebKit引擎而设计的支持单独进程模型的API层。将Web的内容(Javascript,HTML,布局等)处理与应用程序UI分离,分别运行在两个不同的进程之中。这种分离的进程模型和Google的Chrome浏览器有几分类似,不同的是WebKit2将从引擎内部原生的支持这种多进程机制。通过将内容和展现相分离的方式,可以更加有效的提高浏览器的运行效率。 WebKit2提供了一套基于C语言的非阻塞API接口,为了实现WebKit2引擎中对这些API接口的非阻塞调用,WebKit2在设计的时候采用了以下几个方面的技术: 以通知的方式回调客户端函数(比如,didFinishLoadForFrame),通过这种机制可以告知client发生了什么事情(目前WebKit版本中也大量的使用了该技术,用来通知client事件的发生) 以策略方式回调客户端函数(比如,decidePolicyForNavigationAction),当引擎执行某一项操作时,通过该机制由实现具体功能的client来决定是否该操作被执行。 策略设置(例如WKContextSEtCacheModel, WKContextSetPopupPolicy),该机制允许client重新定义策略,而不需要再通过回调的方式访问UIProcess。 代码注入(例如,WebBundle),当所有其他的方法都无法完成时,可以通过代码注入的方式将代码载入到WebProcess中。不过按照WebKit官方文档所说,这个功能目前只是在计划中,还没有真正的在代码级实现。 WebKit的多进程架构 下图是之前webkit的进程架构图 从上图可以看到,之前的WebKit的ui进程和webkit内核进程都是运行在相同的进程空间。其中API Boundary表示和系统相关的api层,应用层使用webkit api使用webkit引擎,并且引擎使用该api访问系统资源。 接着,再看看新版的webkit2引擎的架构 从上图可以看到,webkit2将webkit引擎分成了2个部分,一个部分是和ui相关的操作,运行在一个进程中。而另外的webkit部分运行在独立的进程中。通过多进程机制的支持,增加了ui响应和引擎布的效率,同时也增强了系统的健壮性和安全性。 之前也提到,webkit2的多进程模型有点类似chrome的多进程模型,但是有一些不同之处,下图是chrome的进程模型: 从上图可以看到api bondary是在render进程的下方,也就是说ui绘制进程是在webkit框架之上扩展支持的。该部分的扩展是非webkit原生支持的,属于chromium代码的一部分,这导致无法在其他平台或者框架中支持多进程功能。 为了支持多进程的机制,在webkit中增加了两个新的子系统: CoreIPC:为消息传递和事件处理提供支持。 DrawingArea:为交叉绘制区域提供了抽象。通过共享内存位图信息的方式,为多个进程绘制提供了支持。 目前,我只在Mac OS 10.6.3平台上编译并且体验了Webkit2,可以使用下面的方法加入多进程支持: WebKitTools/Scripts/build-webkit –webkit2 ~~~ END ~~~ From Jelly's Blog, post Introduce to WebKit2 Post Footer automatically generated by wp-posturl plugin for wordpress.

Tags:

1

Titanium 架构分析

Posted by admin on May 12, 2010 in 软件架构 |

如需转载,请注明出处! WebSite: http://www.jjos.org/ 作者: 姜江 linuxemacs@gmail.com QQ: 457283 一、分析的目标 了解Titanium产品的基本框架结构和特点 了解Titanium产品如何扩展本地API以及访问方式 了解Titanium产品中的动态语言之间如何相互调用 二、Titanium概述 2. 1 Titanium介绍 Titanium是一个Web应用程序运行环境,它支持不同的系统平台(Windows、Linux、Mac),并且支持Web应用程序对本地APIs的访问。在基于Titanium平台上,用户可以快速开发和方便的部署应用程序,并且这些应用程序可以使用本地APIs实现许多普通Web应用程序无法完成的功能和特性。 2.2 Titanium特点 Titanium框架具有如下几个方面的特点: 支持多平台(Linux、Mac、Windows、移动设备) 使用Web技术加快软件开发速度 支持Web中内嵌多种编程语言 支持对本地APIs的访问 通过Appcelerator网络云服务,基于Titanium的应用可以更容易的打包、测试和部署 本地功能的模块化,可动态加载指定的功能模块 强大灵活的语言扩展,用户在Titanium框架中可以很方便的扩展多种动态语言 2.3 Titanium 框架结构 上图来自于Appcelerator官网,该图以iPhone和Android两个移动平台为例,描述了Titanium的总体框架结构。在Titanium框架中,Web应用程序可以很方便的访问设备UI组件。比如,可以在页面中使用Titanium提供的API控制导航条、工具栏、菜单,以及可以动态的向用户弹出对话框、警告框等。除此,之外Titanium API还支持本地功能模块的访问,即用户可以使用Titanium提供的APIs接口访问数据库、定位功能、文件系统功能、网络功能、媒体功能等。 不过该框架图,并没有将Titanium中对多种脚本语言的相互访问机制很好的表现出来。但是,这一机制却又是Titanium框架的一个比较重要的功能特性。 三、Titanium构建 Titanium的构建过程使用scons管理(http://www.scons.org/)。scons是一个开源的软件构建工具,使用Python语言来描述软件构建规则。通过Titanium的源码级构建和Titanium的构建规则两个方面,可以了解Titanium运行环境由那些部分组成、这些模块和模块之间的关系是什么。 [注]以下所有的测试和分析内容均是以Linux平台上Desktop版本的Titanium代码为基础。 构建Titanium所依赖的库和环境 Ruby 1.8.x 开发包 Python 2.5.x开发包 scons构建工具 git 版本管理工具 Ubuntu 9.04上构建Titanium所需的支持包 sudo apt-get install build-essential ruby rubygems libzip-ruby \ scons libxml2-dev libgtk2.0-dev [...]

Tags:

Copyright © 2010-2012 Jelly's Blog All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.0.2, from BuyNowShop.com.

Jelly's Blocnzz&51la for wordpress,cnzz for wordpress,51la for wordpress