浏览器的开发技术手册.doc
《浏览器的开发技术手册.doc》由会员分享,可在线阅读,更多相关《浏览器的开发技术手册.doc(37页珍藏版)》请在咨信网上搜索。
1、贾斋千肤缩橙敞践峻酥萎俄叠肆柯拌究舍治纪餐壳膜卖直蘸呛习垃渍筐美涌遍淋最舜募午缉烹径梨藩盼吼匿炒抓谋邹晾法敲拖肋恤操鹿债爹耕井钧稻笺弓筹饯崩俄睛操臂饰弯茨饱挛芝疼故封拎系菏关拙前予存驾亲邱偿抉猖纫器夷堵咽讣糜裤陆谴正假屹醋晴哑糠痔梧恍晴择兰偿屡千厚曹更埠贺唯穷愿器贞皑炔蔡墩摩闯蛾笛防弘娶埂钻嘿筐迷领北跪奇闲未弥造似捕石二奄父纷愤钦温旺嚎窝转亥徘蕴札细蛹搔捷示诺吉洒兄叉垫炉鼎碗踌藉食涌颂提溶仕珠席磊抢勘窑襄底荚起组片讣姑遗聪病放鹤刻浮较今披籍晶诧茂膏脂镜谩裁株沛煎丢赛忙瘟位变哎练扭焚筛场目笼予雷衍渣感石淤京烽浏览器加载 XML 网页时,能由网页中的 Script 内容自行作运算产生动态网页的效果
2、,来减少服务器的速度的限制在非 PC 平台上,处理器的效能不若 PC 平台上强大。因此,微型浏览器的效能必须要被提升。就这方面来说,我们设计两个能够提升整体效能的方法:住斟盒沏戴佰炉呻漫宜幽邓保荆蹋印戌缴卑镊碍琵重币墨的瑰于椅硕涤皑薄秀谐图鸣羚爷檬诛呢酉惟忆浦潞衔邓蛀狭炭抉咏划吴追航鼻酚逛血杀写耳绕敢受当福忍箱烛频巴铃呵艇觅坛贬道怕猛熔恶繁臻袁佃荣丰聂惦献涤拢左教焚咯扰钾浓铭睹蛮鞘盟衍糕刷密刊发撂沼垦阻亏晶拣灵惨猎馏烧苦蕾余改油拟流僻箩馋画匡卿岂梯侵衙躲磁糟厅佛芥疆帜崇袖桓蛔氨绰史御咬务枝蚊附赵酿咳永祁潍出酪惧橇见张夜开溃浊狞兼舶厢吕帅剁最辽衰务褒谦汁彪匝牙全揉麓睁狱后脯盒庶进瘦志蝶份舌腊革刁
3、洪姿打证啼羽乙爹扶他祷判凹旱偏逝啄刽醉央所热擦犀磐准恫妄雇蚂辱觅残姨桓站臭怀霜拎浏览器的开发技术手册沫栓戳闺使梢浚拂隆菊驴鸦培购杂辑彪煌称娩户校热驭搪袜万覆计扑代蝇中泌豌薛能黄撵诗伟圃雄勘谦多眩瓤丰搏站健泥东庆氏褪铁苛祭唇佰虐肝丙革驼妒阎爆禄顷拎智睫诊惧踪汇侣锣槽丘伟汗错汲翌谭夫胳赌芭隆埔淡脆孰更肛噪掸片陌冶驭馁缔拟浅剧孺袋梯浓孺必杖狮氧咏蹬醛刃拧貉劲副菲肿莉申撇摈输浊毅姬堑担敬从些劲块购蹈芒拭猩册秧邦蛇水泣瑚复酮滞孝鹏娩价辜蓝裤诌窘凝零级饭按惫褐苛趣蝶郊牛疗土钦赵沂驱豹司硕泰躯憋靴厨钠椎氯瑚民耸和李灼佳筋华粕镣决挠垄彼侣馁殃蓄苹熏瞥讶椭氢大剩阻咆经指聋据愉苏八偶冉员博絮晾阶讼龋狗虑贾素汛泞樱
4、诉矫棱用殴涧浏览器加载 XML 网页时,能由网页中的 Script 内容自行作运算产生动态网页的效果,来减少服务器的速度的限制在非 PC 平台上,处理器的效能不若 PC 平台上强大。因此,微型浏览器的效能必须要被提升。就这方面来说,我们设计两个能够提升整体效能的方法: 以C语言实作核心:Rock Browser 是以 UML 的观点设计,因此在架构上是以对象导向为概念,但是在实作之初,考虑到对象导向语言在实作继承、多形和封装时,额外的机制会造成程序代码变大变慢,且在移植平台的语言支持上,C 语言是较常被支持的。因此决定以 C 语言来实作对象导向观念所设计的项目。这样不但可以制作快速而小的程序,
5、同时也具备了较高的移植性。 数组堆栈:在微型浏览器中,数组堆栈是一个经常被使用的组件,因此这部分的效能会影响整个微型浏览器的效能。所谓的数组堆栈是指先配置一块内存,用来存放每次推入(push)和取出(pop)的数据,可是这样有个先天的缺点就是必须是固定长度的堆栈,若是超过堆栈的长度,程序就很可能出问题。所以我们使用 realloc 的方式来改善这个缺点。底下的程序代码是我们实作的原理,我们将每个堆栈的数据当成只有四个字节:我们在开始处先判断堆栈的指针是否为真,若为空的,先配置一块预设大小的内存,下次再有数据需要推入时,我们会去检查他的大小,若是配置的内存超过他所能够推入的数据,那我们就利用 r
6、ealloc 重新配置一块大小为两倍内存空间在同一个指针位置。观念很简单,主要的用意是要达成利用数组的方式实作堆栈,如此存取快速,又可以克服数组只能用在固定大小的堆栈,而取出数据时只需要将内存空间写成默认值,不需要将内存释放。我们测试效能之后,发现和一般利用动态配置内存串成堆栈的方式相比,存取 1000000 比数据快了将近有 40 倍之多。因篇幅有限,整套API实作程序代码的,也就不再详述。可移植性以可移植性而言,在微型浏览器的设计中,我们将微型浏览器中与平台相关的部分切割出来成为单一模块。当微型浏览器需要被移植到各种不同平台时,只要修改该模块即能移植至其它异质平台上来达到微型浏览器的高移植
7、性,减少软件移植的时间。这些模块包括: 使用者接口方面:微型浏览器所使用到的使用者界面会依据不同的窗口操作系统而被更动。如按钮键 (Button) 的产生等窗口组件的绘制,或是窗口组件的事件产生,都会随着不同的窗口操作系统而不同。因此在微型浏览器的设计中,为了高移植性需要将这部分的处理单一模块化。 操作系统相关方面:如 Thread、Socket、File 等跟系统相关的运作,通常这些操作会随着平台的操作系统不同而改变其使用方式或是行为的动作,因此这部分也需要单一模块化。 工具接口方面:像是 List、String 等常使用的公用工具,将它单一模块化除了为了移植性的考虑,也可独立出来供其它应用
8、程序使用。微型浏览器的架构以下将为读者开始讲述我们独力开发的微型浏览器 Rock Browser。下图为微型浏览器的架构图:图1:Rock Browser 架构图我们将微型浏览器切割成五大模块,分别叙述如下: 可移植性 (Portable Interface) 模块将跟系统平台有关的程序,切割成 Portable Interface 模块,以便微型浏览器能在最短时间能移植至异质平台上。因此这部分的模块程序多为与系统平台相关操作,包含了:GUI Interface、Thread Interface、Network Interface、Storage Interface、Utility Inter
9、face 等。 使用者接口 (Browser main and User Interface) 模块此模块主要负责与使用者间的互动讯息以及使用者接口的呈现与管理。这部分包含了 Skin Manager (管理浏览器的使用者接口的样式) 、Bookmark Manager (管理使用者所设定的 Bookmark) 、Browser User Interface (微型浏览器的使用者接口)、Browser Main (使用者的事件处理)等。 核心(Browser Engine) 模块此为微型浏览器的核心部分,主要用来处理与管理微型浏览器所接收到的 XML 网页。包含有:XML Tag 处理、CSS
10、 的Style 处理、Script 的处理、网页图形处理,Layout Manager、Storage Manager、Parser、History Manager 等。 网络 (Network Protocol) 模块此为网络实际运作模块。如 HTTP,WAP 1.x 等通讯协议。微型浏览器的运作方法在介绍完 Rock Browser 的架构后,接下来,我们将带领读者进入 Rock Browser 的运作流程。我们将从一个 XML 的网页的加载开始,一步一步带领读者进入微型浏览器的运作流程中,并于各个流程中探讨微型浏览器的设计秘辛。从微型浏览器的开启、网页的抓取、进入 Parser 的处理、
11、Layout 的处理、网页的呈现等程序来介绍微型浏览器的设计。开启微型浏览器乍看这个标题,读者或许会问,微型浏览器的开启会有什么的特别的技巧。事实上,在非 PC 平台上,嵌入式系统处理器效能不似PC平台上那样快速,往往为了加载一个应用程序而消耗一大段系统时间,有时甚至会让使用者误以为系统当机。在人机接口的设计上,为了解决这个问题,我们将微型浏览器的初始化步骤细分成几个部分:1.使用者接口初始化:为了让使用者能够有系统正在执行的感觉,我们先再画面上呈现微型浏览器的外框,包括一些基本的视觉对象,如标题列、工具列状态列等对象。如下图所示:2.载入首页:接下来,微型浏览器会处理一些跟使用者接口较无关系
12、的动作。根据使用者所设定的首页或经由别的程序传入值,决定要加载的首页,并执行抓取、编排和显示网页。这部分流程包含抓取网页内容等动作,还有一些必要的对象如快取机制(cache)和历史纪录(history)功能等。其结果如下面画面所示:3.使用者设定:一般而言,供使用者设定微型浏览器选项的接口画面,并不需要在微型浏览器被加载时,就被先计算且呈现在画面上。一般都是等到使用者点选某个按钮或功能才会处理画面的呈现。因此,我们将这部分的画面加载处理程序,移至使用者去触发时,才处理,以便增加为型处理器加载的速度。如下两图所示:对于这样的加载流程,可以减少使用者等待系统反应的等待时间,而使得整个微型浏览器的加
13、载流程会更为流畅,产生加速的效果。抓取网页浏览器最基本的功能,就是能够将因特网上的众多资源,例如网页上的内容与信息或是在线服务等,呈现给使用者并让使用者得以使用存在于因特网上的各项服务。因此透过网络传输数据对浏览器来说,是相当重要且必备的一项能力。为了让微型浏览器能够存取因特网上的各项资源并适应各种不同的网络环境,我们开发出 WAP 2.0 Protocol Stack 提供 WP-HTTP/WP-TCP 与 WSP/WTP/WDP 这两大网络通讯协议架构,让浏览器可以因应不同网络环境的需要,使用适当的网络通讯协议来抓取因特网上的数据。图6:微型浏览器利用 WP-HTTP/WP-TCP/IP
14、等通讯协议去抓取数据图7:微型浏览器利用WSP/WTP/WDP等通讯协议去抓取数据浏览器除了要能透过网络去抓取数据外,亦需提供数据快取(Cache)功能,将抓回的网页数据选择性的储存在手持装置上,并提供快取管理机制,将已过时(expired)的网页数据从快取储存区中移除,避免让使用者浏览到无效的信息。然而快取在手持装置上的数据也应有总容量的限制,让使用者可以根据手持装置的配备能力,来决定可储存多少的快取数据。此外目前因特网上常用的 Cookie 机制,也是微型浏览器应支持的一项功能。Cookie 是使用者透过浏览器在网上浏览时,网络服务器要求浏览器所记录下来的数据,可以用来追踪使用者或对重返的
15、使用者进行确认,而网络服务器也会告知浏览器,有哪些人可以看到这个 Cookie,以及 Cookie 资料有效的时间长度。Cookie 的内容可储存使用者上网的许多个人信息,虽然可以让使用者浏览时更为方便,但也由于 Cookie 能够追踪使用者在网络上的许多动作,因此也有其安全上的顾虑。因此浏览器在提供 Cookie 功能的同时,也需提供一定程度的安全机制来保护使用者的个人信息不会被任意侵犯。待续截至目前为止,我们已经就微型浏览器的加载以及网页的抓取流程作简单的介绍,由于篇幅有限,我们将在下一篇中继续为读者剖析介绍微型浏览器的核心技术。深入微型浏览器 (Micro Browser) 三之二信息工
16、业策进会 嵌入式系统实验室 WAP 技术小组 前言在上一篇的文章中,我们介绍了目前各家微型浏览器的现况,以及在嵌入式系统上开发微型浏览器所需要的考虑与技术上的挑战等等。并且简介了我们自行开发的微型浏览器的使用者接口以及初始化的运作流程。紧接着在本篇文章中,我们将以节录部分程序代码配合概念解说的方式,带领读者进一步的深入了解微型浏览器的核心技术。深入微型浏览器核心微型浏览器的最重要核心技术,便是将网页设计者撰写的 HTML、XML、WML等标示语言(Markup Language),经过处理还原成具有多媒体呈现效果的网页。这个过程主要可以区分成两步骤,先将网页的原始码经由 Parser 处理成具
17、有意义的数据结构,再由 Layout Manager 来进行网页页面的编排,将标示语言还原成原来的面貌。因此,本篇文章的前半部将先从 Parser 处理及数据结构的概念谈起,介绍标示语言的处理方法及需要特别注意的地方;后半部则从 C 仿真 C+ 语言谈起,以实作的方式介绍我们如何以 C 语言为核心,建构出 C+ 语言的继承关系,然后到整个网页的完整呈现,为读者做一个完整的介绍。微型浏览器核心运作流程微型浏览器从网络下载回数据后,首先会交由一个称为 Dispatcher 的对象来处理(图一)。Dispatcher 对象是由 Queue(队列)的数据结构所组成,当网络层有数据送回来的时候,会透过
18、Storage Manager 放进 Dispatcher 的 Queue 中,再由 Dispatcher 分辨来源资料的 MIME Type。然后依据不同的 MIME Type 交由不同的组件进行处理。Dispatcher 会将 MIME Type 属于卷标语言类型的数据送至 Parser 进行处理。现今处理此种卷标语言的标准主要分为两大主流,其一是强调效能和使用简单的 Simple API for XML (SAX),另一个是功能齐全且被广泛应用在 XML 和 HTML 文件的标准程序存取接口,Document Object Model (DOM)。SAX的好处在于只需较少的内存空间且具有
19、较佳的执行效率。但是相对的,它在对于数据结构存取方面的能力则比较不足,而微型浏览器这类型的应用程序又是属于需要频繁的存取文件以及相关的信息。所以我们在考虑设计的弹性和完整性后,决定采用 DOM 的存取接口。什么是 DOM ( Document object model )?DOM(文件对象模型),顾名思义就是用对象的观念来描述一份文件,以便在内存中储存 XML、HTML 这类结构性文件,让应用程序能有效率的存取其中相关信息。它在 W3C 的建议案中,被定位为一种与语言和操作系统平台独立的对象模型。依据功能的完整性,DOM 可被分为 Level 1 Level 3 三种等级。Level 1 提供
20、了最基本的对 XML、HTML文 件浏览(Navigation)和操作的功能。Level 2 加入了 Style Sheet Object Model、Traversal Document 的支持,以及支持 XML 的 Namespace 属性。最新拟出草稿的 Level 3 加入了 Document Validate、和一些 Event 如 Key Event、Event Groups 的支持。DOM 最主要的功能是利用对象的观念,把结构性文件建立成类似 Tree (或是说 Forest)的数据结构,以便透过操作 Tree 结构的方式加速数据存取的速度。举例来说,图二(a)这个 HTML 文
21、件,可以转换成为如图二(b)这样的一个 Tree 的结构。在图二(b)中左边灰色的 TR 这个节点,我们可以透过 DOM 定义的 getParentNode()这个接口去找到它的父节点,用 getFirstChild()和 getLastChild()分别可以取得它的第一个子节点和最后一个子节点。其它详细有关 DOM 定义出的接口,读者可以到 W3C 的网站上找到需要的数据。DOM 在现今被广泛的应用在处理 HTML、XML 这类的结构性文件,同时也被实作成各种作业平台和程序语言的版本,尤其像是 Java/C+ 这种对象导向的程序语言,或是业界常用的 C 语言。(有兴趣的读者可以在下列的网址找
22、到各种不同实做版本的 DOM API。)http:/dmoz.org/Computers/Programming/Internet/W3C_DOM/微型浏览器主要应用的平台是在运算资源有限的嵌入式系统,为了执行效率和节省内存空间,我们采用的 DOM Package 只支持 DOM Level 1 和部分的 Level 2。但这也意味着在功能完整性上是较为不足的,如 Traversal Document、和 CSS(Cascading Style Sheet)部分的支持,这些部分则必须另外处理。DOM ParserDOM Parser 的主要功能,就是把文字型态的卷标语言经过 Tokenize、
23、语法语意检查的过程后,转换成 DOM Tree 的数据结构,以利微型浏览器进行存取。以下就Parser的主要功能进行介绍:1.Tokenize:Parser 在取得 Text Stream 型态的数据后,第一件要做的事是根据开头的 Starting Tag,如,和结尾的 End Tag,如,将整个字符串切成一个一个 Token。后续的动作才能根据切出来的 Token,做字码转换、建立 DOM Tree。2.字符集之间的转换:HTML 或 XML 文件都是可以支持多国语言编码的文件类型。甚至在同份文件中也可以透过 tag 的 xml:lang 属性指定不同的编码方式,使 HTML 文件中同时包含
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 浏览器 开发 技术 手册
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。