WebKit 2浏览器内核发布 转为多进程模型

WebKit是著名的开源浏览器引擎,也是Chrome和Safari等主流浏览器的内核(Opera与Chrome的V8内核是基于WebKit开发的)。作为开源项目,它的开发主要由苹果公司主导。

   近日,来自Apple的开发者Anders Carlsson 在邮件列表中发布了WebKit2,新版本完全重新设计,以支持类似于Chrome和IE8的多进程模型。这样在主流浏览器中,只剩下基于Gecko的 Firefox和基于Presto的Opera还没有采用多进程。

  采用这种模型,网页的内容(JavaScript,HTML,以及布 局等)将各自拥有独立的进程。这一机制是通过两个主要的子系统(CoreIPC和DrawingArea)来支持的。这种模型和Google Chrome的最大不同在于,WebKit直接把独立进程模型放进了一个框架中,因此也能被其他客户端使用(事实上,历史上除了浏览器之外,苹果的邮件客 户端和微软的个人信息管理软件都使用过WebKit内核)。

  OSNews文章透露,从技术上说,Webkit的常规版本中没有进程边 界,因为应用和渲染器在一个进程里,但是应用和WebKit API之间有API边界。而在Google Chrome/Chromium里,API边界之上还有进程边界,因此很难为其他WebKit实现所用。

  按Webkit2维基的说 法,Chromium WebKit并没有直接提供多进程框架,而是进行了精巧优化,本身只是多进程应用的一个组件,而由应用自己来负责代理和进程管理。由于负责进程管理、进程 间代理和沙盒处理的关键逻辑都属于Chrome应用而非API层,所以重用非常困难。

  而在WebKit 2中,在API边界之下还有进程边界,因此多进程浏览也成为API的一部分。同时,这也使WebKit 2与之前的版本不再兼容。

  目前,WebKit2已有Mac和Windows平台版本,Carlsson表示,如果有其他开发者推出其他平台的移植版,他们将乐观其成。

   另据Ars Technica的分析文章(翻译:锐商企业CMS 网站内容管理系统 ),Webkit2 的目标是实现独立进程与非阻断式API。基于Webkit 的Google Chrome 浏览器在2008年推出时就已经实现了独立进程功能,该功能可以防止因某个网页的崩溃而导致整个浏览器崩溃。

  IE8 也有一个类似机制防止崩溃,而 Firefox 也正联合 Electrolysis 展开同样的开发。Mac 操作系统中的 Safari 4 则通过将 Flash 一类的插件放到单独的进程防止崩溃,Webkit2 则直接将这种能力内置到渲染引擎中。


Webkit2 的另一个目标是实现非阻断式API,这意味着,开发者可以直接借助各种回调函数接收Webkit 视图的消息。

  比如,在一个程序中,假如我需要加载一个网页,我可以调用一个诸如loadWebsite的方法(只是举例),将URL参数传递给这个方法,接着,给它一个Callback函数或一段代码,在网页加载完成后执行。

   通过这种方法,每当Webkit 2执行完某个操作的时候,开发者都可以通过Callback函数及时同它交互,这样,渲染引擎工作的时候,主进程可以继续做自己的事,渲染引擎完成工作会 通过 Callback 函数通知并执行你预设的代码,让你的程序反应更敏捷。目前,有三种技术可以帮助实现这一目标,消息式客户Callback,策略式客户Callback 以及客户策略设置。还有第四方法,通过代码注入直接同DOM 沟通,但这一方法目前还没有具体实施,苹果公司的Anders Carlsson在该项目的主页中对此做了详细阐述。

  Webkit2 引擎最好的地方在于,任何基于Webkit 2 的产品都可以直接使用这些功能,而不必像Google Chrome 那样自己解决,开发者借助Webkit 2 可以轻松实现更稳定的产品。


http://oss.org.cn/?action-viewnews-itemid-4609

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值