CN102843393B - 网络应用的运行装置及方法 - Google Patents
网络应用的运行装置及方法 Download PDFInfo
- Publication number
- CN102843393B CN102843393B CN201110169232.6A CN201110169232A CN102843393B CN 102843393 B CN102843393 B CN 102843393B CN 201110169232 A CN201110169232 A CN 201110169232A CN 102843393 B CN102843393 B CN 102843393B
- Authority
- CN
- China
- Prior art keywords
- browser
- kernel
- self
- network application
- framework
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
Abstract
本发明公开了一种网络应用的运行装置和方法,该装置包括本地组件、自定义对象、脚本引擎、以及浏览器内核。所述方法包括:封装本地组件,形成具有特定客户端功能的自定义对象;在脚本引擎中设置所述自定义对象的脚本对象;在浏览器内核嵌入所述脚本对象;当网络应用运行时,浏览器内核通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能。利用本发明,可以扩展网络应用框架的能力,同时又降低网络应用的技术开发门槛,提高安全性。
Description
技术领域
本发明涉及互联网应用技术领域,尤其涉及一种网络应用(WebApp)的运行装置以及运行方法。
背景技术
WebApp是使用网络(Web)页面作为基础,完成某种功能的应用。相对于普通的Web页面,WebApp更强调功能性,比如邮箱,小游戏,日程表等。WebApp框架是指WebApp的运行环境,比如采用何种浏览器内核,何种编程接口,有哪些接口可以由WebApp调用等。
目前已经有很多的WebApp框架,包括谷歌(Google)公司现在有Chrome的WebApp框架,苹果(Apple)公司的WebApp框架,以及微软(Microsoft)公司的WebApp框架。但这些WebApp框架需要运行在浏览器上,其能力仅限于浏览器内部,从行为上看,仍然属于一个网页。Chrome虽然进行了扩展,但也仅限于访问收藏夹,历史纪录等浏览器相关的数据,本质上仍然属于Web的应用。
基于Web的WebApp本身有许多优点,比如部署更新都非常方便,但是能力却受到浏览器的限制。不能进行超越浏览器限制的操作,比如访问本地文件,直接使用TCP或者UDP进行通讯等。当然最近的HTML5已经开放了部分能力,但仍然是非常有限的。相对于客户端程序,Web的能力受到很大的限制。
在互联网的环境下,如果要搭建一个WebApp平台,在此平台上提供各种各样的能力,然后基于这种能力来开发各种各样的应用,面临一个开发环境选择的问题,如果是纯Web的环境,则某些能力很难提供,比如基于TCP或者UDP的数据服务、视频、传文件等客户端才能实现的能力。如果完全采用客户端程序,则有两个问题:其一是安全问题,因为客户端程序拥有非常大的权限,可以对系统进行任意操作,有安全风险;其二是开发门槛的问题,要开发一个好的客户端程序需要技术要求更高更严格的开发工程师。对于一个WebApp平台来说,对技术的高要求是不利于平台的推广的。
发明内容
有鉴于此,本发明的主要目的是提供一种WebApp的运行装置及方法,以扩展WebApp框架的能力,同时又降低WebApp的技术开发门槛。
本发明的技术方案是这样实现的:
一种网络应用的运行装置,包括网络应用对应的浏览器内核和脚本引擎,该装置还包括本地组件和自定义对象,其中:
所述本地组件用于提供基础的客户端功能;
所述自定义对象用于封装本地组件,形成特定的客户端功能;
所述脚本引擎中设置有所述自定义对象对应的脚本对象;
所述浏览器内核嵌入了所述脚本对象,并通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能。
优选的,该装置包括浏览器进程;所述自定义对象、脚本引擎、以及浏览器内核运行在同一浏览器进程中,所述本地组件也运行在该浏览器进程中,或者所述本地组件运行在与该浏览器进程相独立的进程中。
优选的,在同时运行一个以上网络应用时,所有网络应用对应的浏览器内核分别运行在不同的浏览器进程中,或者其中至少两个网络应用对应的浏览器内核共享一个浏览器进程。
优选的,所述浏览器进程中进一步包括沙箱保护单元,用于对浏览器进程进行防护。
优选的,该装置进一步包括框架进程,该框架进程中包括容器窗口和浏览器代理对象,所述浏览器进程中进一步包括存根对象;所述框架进程的浏览器代理对象用于将所述容器窗口内指定区域的相关信息发送给浏览器进程的存根对象,并由该存根对象转发给对应的浏览器内核,所述浏览器内核根据收到的信息渲染网络应用的界面信息,并通过本浏览器进程的存根对象将该界面信息跨进程发送给所述框架进程的浏览器代理对象;该浏览器代理对象将收到的界面信息展示在所述容器窗口的指定区域。
优选的,所述本地组件为本地服务组件,所述自定义对象为服务代理对象。
一种网络应用的运行方法,包括:
封装本地组件,形成具有特定客户端功能的自定义对象;
在脚本引擎中设置所述自定义对象的脚本对象;
在浏览器内核嵌入所述脚本对象;
当网络应用运行时,浏览器内核通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能。
优选的,在网络应用运行时,在同一浏览器进程中运行所述自定义对象、脚本引擎、浏览器内核,在与该浏览器进程相独立的进程中运行所述本地组件;或者在同一浏览器进程中运行所述本地组件、自定义对象、脚本引擎、以及浏览器内核。
优选的,该方法进一步设置可同时打开的最大浏览器进程数;当同时运行的网络应用数小于或等于所述最大浏览器进程数时,则每个网络应用对应的浏览器内核分别运行在不同的浏览器进程中;否则至少两个网络应用对应的浏览器内核共享一个浏览器进程。
优选的,该方法进一步启动与所述浏览器进程相互独立的框架进程,所述框架进程中运行容器窗口和浏览器代理对象,所述浏览器进程中进一步运行存根对象;所述框架进程的浏览器代理对象将所述容器窗口内指定区域的相关信息发送给浏览器进程的存根对象,并由该存根对象转发给对应的浏览器内核;所述浏览器内核根据收到的信息渲染网络应用的界面信息,并通过本浏览器进程的存根对象将该界面信息跨进程发送给所述框架进程的浏览器代理对象;该浏览器代理对象将收到的界面信息展示在所述容器窗口的指定区域。
优选的,所述本地组件为本地服务组件,所述自定义对象为服务代理对象。
与现有技术相比,本发明结合了网络和客户端的优点,公开了基于客户端扩展的WebApp框架,使用内嵌脚本对象的方式提供本地客户端功能,从而可以把本地服务接入到Web的脚本控件,让Web页面的脚本可以调用到本地的客户端组件,从而扩展了WebApp框架的能力,可以设计出更强大的WebApp。同时由于本发明以浏览器内核为基础,因此开发环境为Web,可以利用Web的优势搭建出丰富多彩的应用界面,并且容易部署和发布,开发门槛低,技术流行、广泛,且安全性好,不会对本地系统造成破坏。
要实现脚本里面调用本地客户端的组件,IE的ActiveX和其它浏览器的NP插件也可以实现,但是所不同的是,ActiveX组件和NP插件都需要安装,需要在页面里面指定,而且开发ActiveX和NP插件本身是需要比较高的技术门槛的,使用的时候需要在脚本里面具体指定一个ActiveX控件或者NP插件,开发使用比较麻烦。而本发明是直接在脚本控件里面嵌入脚本对象,访问起来是更方便的,技术开发门槛也更低。更重要是安全性问题,如果页面可以使用ActiveX或者NP插件,则可以直接执行本地代码,其功能就是不可控的,通过内嵌脚本对象的方式,可以完全控制脚本的访问范围,而且还可以进行权限控制,提高了WebApp框架的安全性。
本发明可以提供一种新的应用开发模式,即利用一个客户端软件运行所有WebApp,使用浏览器进行界面的展现,并提供相关客户端服务的扩展。使得WebApp获得Web的开发速度和更新频率,并具备客户端的应用能力。
进一步的,本发明通过跨进程渲染机制进行wp界面的展示,从而使浏览器内核与框架进程完全独立,即使浏览器内核崩溃也不会影响到框架进程的正常运行,从而提高了wp框架的整体稳定性;同时,由于框架进程所做的逻辑操作非常少并且简单,不会受到浏览器内核和服务进程的性能问题的影响,因此保证了wp界面操作的流畅性,提升了wp框架的整体性能;另外,由于把浏览器内核放到一个专门的浏览器进程里,可以防止恶意页面对wp系统的破坏,提升了安全性。
附图说明
图1为本发明所述WebApp运行装置的示意图;
图2a为本发明所述WebApp运行装置的本地组件运行于浏览器进程的示意图;
图2b为本发明所述WebApp运行装置的本地组件运行于独立进程的示意图;
图3a为本发明可实现的一种新服务接入方式的示意图;
图3b为本发明可实现的另一种新服务接入方式的示意图;
图4a为本发明所述浏览器内核独享浏览器进程的示意图;
图4b为本发明所述浏览器内核共享浏览器进程的示意图;
图5为本发明所述WebApp框架的跨进程渲染机制的一种示意图;
图6为本发明所述跨进程渲染网页图像的一种示意图;
图7为本发明具有跨进程渲染机制的一种服务接入方式示意图;
图8为本发明对浏览器进程进行沙箱保护的示意图;
图9为本发明WebApp运行方法的一种流程图。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
为了实现网络优势和客户端优势相结合,增强web页面的能力,本发明需要在脚本引擎中自定义脚本对象,并对浏览器内核进行改造,将自定义的脚本对象嵌入到浏览器内核中,便于脚本调用。
图1为本发明所述WebApp运行装置的示意图。参见图1,该WebApp的运行装置包括WebApp对应的浏览器内核和脚本引擎,还包括本地组件和自定义对象,其中:所述本地组件用于提供基础的客户端功能;所述自定义对象用于封装本地组件,形成特定的客户端功能;所述脚本引擎中设置有所述自定义对象对应的脚本对象;所述浏览器内核嵌入了所述脚本对象,并通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能。
下面对图1所具体说明。浏览器内核里面可以运行脚本,脚本是由脚本引擎提供运行环境的,对于浏览器来说,脚本引擎里面内置了window,document等对象,脚本可以对这些对象进行控制,从而可以动态修改页面。但脚本引擎也提供了一些机制,可以嵌入自定义的对象,本发明就是利用脚本引擎的嵌入机制,嵌入自定义的对象。一个自定义对象在脚本引擎里面映射有一个脚本对象,供给浏览器内核的脚本使用,同时这个脚本对象的实现是由本地组件来提供的,即可以将本地组件封装成自定义对象,每个自定义对象实现的功能由本地组件来实现,这样就可以让浏览器里面的脚本访问到外部的本地组件了,从而使内部脚本可以访问外部的本地组件,极大的增强了Web页面的能力,同时开发门槛低,易于使用,便于扩展。
至于具体的向浏览器内核嵌入脚本对象的方式,不同的浏览器内核,其实现方法也不相同。本发明所述的浏览器内核不限于特定的浏览器内核,现在流行的浏览器内核有IE,Chrome,Firefox,它们都提供了嵌入脚本对象的能力。其中IE是提供了非常明确的机制,IE对于window对象里面的external成员提供了专门的接口来扩展。IE是基于COM的,所以只要提供相关的COM对象,就非常容易实现external对象的扩展,通过external,可以实现脚本到COM对象的调用。而Chrome和Firefox由于本身是开源的,所以可以直接修改其源代码嵌入自定义的脚本对象,Chrome和Firefox本身的脚本引擎也都提供了自定义脚本对象的方法。
至于具体的脚本引擎嵌入自定义对象的机制,由于不同脚本引擎嵌入自定义对象的机制可能不同,因此在具体嵌入时可以参见该脚本引擎的规范。
图2a为本发明所述WebApp运行装置的本地组件运行于浏览器进程的示意图。参见图2a,WebApp运行装置在WebApp运行时需包括浏览器进程,所述本地组件、自定义对象、脚本引擎、以及浏览器内核可以运行在同一浏览器进程中。
当一个以上WebApp同时启动时,一个以上WebApp对应的浏览器内核可能占用一个以上的浏览器进程,如果每个浏览器进程里面都有本地组件则是一种资源的浪费,也不便于统一管理,所以在一种优选实施方式中可以把所有本地组件独立为一个进程。图2b为本发明所述WebApp运行装置的本地组件运行于独立进程的示意图,参见图2b,在每个浏览器进程里面都会有该本地组件的代理对象即所述自定义对象,该自定义对象用于把本浏览器进程的调用组件的请求发送到本地组件所在的独立进程,然后该独立进程进行相关的本地组件操作。这样既节省了资源,又便于管理。
在本发明这种基于客户端扩展的WebApp模式下,可以产生一种新的服务接入方式。图3a为本发明可实现的一种新服务接入方式的示意图。由于某些服务不适合作为Web服务提供(如基于TCP或UDP的数据服务、视频、传文件等客户端才能实现的服务能力),但若作为客户端组件,使用客户端开发方式来使用,技术门槛比较高,使用也不方便。因此本发明把客户端的本地组件作为本地服务组件,该本地服务组件用于为WebApp提供特定的本地服务功能(如TCP或UDP数据传输服务、视频传输服务等服务功能),把这种本地服务组件封装成自定义对象即图3a中所示的服务代理对象,脚本引擎中映射有该服务代理对象的脚本对象,该脚本对象又嵌入到浏览器内核中。在浏览器内核需要特定的客户端服务时,只需要调用该脚本对象(相当于调用WebApp本地服务的一个接口),通过服务代理对象通知所述本地服务组件实现特定的客户端服务功能。对于WebApp开发者来说,当需要使用复杂的本地服务时,不必重新开发本地组件,而只需要调用所述服务代理对象的脚本对象即可,本地服务的具体实现都通过所述已经封装好的本地服务组件来实现,因此大大简化了WebApp开发者的开发工作,降低了开发门槛,有助于WebApp框架的推广。
例如对于传输文件的服务,利用HTTP协议的文件传输效率是很低的,使用客户端的多线程和多点下载技术,可以极大的提高传输文件的速度,但是在Web页面里这种客户端多线程和多点下载技术是不可能实现的。通过本发明的方案,可以在页面脚本里面直接调用传文件的服务,实现高速文件传输。通过这种机制,Web页面可以利用客户端的服务来完成复杂的功能,极大的扩展了WebApp的应用范围。
在图3a中,所述本地服务组件设置到了与服务代理对象、脚本引擎、以及浏览器内核的同一个浏览器进程中。当然,为了节省资源和便于管理,在在另一中优选方案中,也可以将本地服务组件单独设置进一个独立的服务进程中,如图3b所示,在浏览器内核需要特定的客户端服务时,通过所述服务代理对象向所述服务进程发出指令,服务进程再调用对应的本地服务组件实施特定的客户端服务。
图4a为本发明所述浏览器内核独享浏览器进程的示意图。由于浏览器内核可能会发生崩溃,如果很多WebApp使用的浏览器内核都在同一个进程,一个页面的崩溃就会导致进程的崩溃,从而导致所有WebApp的崩溃。所以本发明把不同WebApp对应的浏览器内核放在不同的进程里,如果一个浏览器内核崩溃就仅会影响到当前的WebApp,从而增强了WebApp框架的稳定性。
但是,如果每一个WebApp对应的浏览器内核都放在不同的浏览器进程里,则会导致资源的过度消耗。当打开很多个WebApp的时候,会打开多个浏览器进程,会导致资源占用过多,系统性能降低。所以这里不能简单的处理,需要使用一个策略来保持稳定性和性能的平衡,对于不同的机器,不同的系统,不同的配置,可以同时打开的浏览器进程数是不一样的。因此本发明进一步设置可同时打开的最大浏览器进程数;当同时运行的WebApp数小于或等于所述最大浏览器进程数时,则每个WebApp对应的浏览器内核分别运行在不同的浏览器进程中;否则至少两个WebApp对应的浏览器内核共享一个浏览器进程,如图4b所示。
图5为本发明所述WebApp框架的跨进程渲染机制的一种示意图。参见图5,本发明所述的WebApp框架在本地客户端中包括相互独立的框架进程和浏览器进程;所述框架进程(也可称为界面框架进程,用于WebApp的界面信息展示)中包括容器窗口(由于是在客户端展现,所以也可称为客户端容器窗口)和浏览器代理对象,所述浏览器进程中包括浏览器内核和所述浏览器代理对象对应的存根对象。
本发明中,所述框架进程需要调用浏览器内核对象,浏览器内核对象在另一个进程即浏览器进程中,所以在框架进程里面,有一个浏览器内核对象的代理对象即浏览器代理对象,接管框架进程的调用,该浏览器代理对象收到框架进程调用浏览器内核对象的请求以后,把这些调用请求转换为数据描述,通过跨进程通信传递给浏览器进程,而浏览器进程必须有对象来接收这些信息,这就是存根对象,存根对象收到所述调用请求信息以后,转换为对浏览器内核对象的调用。通过上述过程,可以完成跨进程的对象调用过程。
本发明中,一个WebApp窗口容器里并没有使用传统的浏览器控件的窗口,但是在所述容器窗口内指定了一个区域,如图5中的页面代理窗口,该页面代理窗口的绘制由浏览器提供的界面图像来绘制。所述浏览器进程的存根对象和框架进程的浏览器代理对象之间会有一个通信通道,可以进行数据的传输,框架进程的浏览器代理对象会向浏览器进程中的存根对象告知所述页面代理窗口的相关信息(例如该页面代理窗口的大小或者操作指令),浏览器进程的存根对象会将这些信息发送给浏览器内核。所述浏览器内核用于渲染WebApp的界面信息,即决定浏览器如何显示网页的内容以及页面的格式信息。当浏览器内核收到来自存根对象的信息后,渲染出与所述页面代理窗口同样大小的一幅页面图像,这幅页面图像再通过存根对象跨进程传输到框架进程的浏览器代理对象,该浏览器代理对象再将所述页面图像展示在所述页面代理窗口。由于本地的数据通信效率很高,所以即使动态的页面都可以实现实时的图像更新,用户看WebApp窗口里面好像有一个真正的网页,但其实只是图像而已。
图6为本发明所述跨进程渲染网页图像的一种示意图。如图6所示,所述浏览器内核渲染的WebApp的界面信息是页面图像,当然还可以进一步包括音频视频等数据信息,如果WebApp的网页是动态更新的,则该浏览器内核可以实时动态渲染出该动态网页的界面信息(如界面图像),并发送给框架进程的浏览器代理对象动态更新所述页面代理窗口内的界面信息,使得用户看到WebApp的容器窗口内好像是一个动态网页。
当然用户还需要对网页进行操作,比如用户在所述指定区域(如图5的页面代理窗口)内进行点击操作和输入文字等操作,所述框架进程实时捕捉所述容器窗口指定区域内的操作指令,在捕捉到操作指令后通过本框架进程的浏览器代理对象跨进程发送该操作指令到所述浏览器进程的存根对象,由该存根对象转发给对应的浏览器内核,浏览器内核根据操作指令重新渲染WebApp的界面图像,通过本浏览器进程的存根对象将该界面图像跨进程发送给所述框架进程的浏览器代理对象;该浏览器代理对象将收到的界面信息更新到所述页面代理窗口中。通过这种页面的刷新方式,使用户看起来像是在操作真正的网页。
通过跨进程渲染,浏览器内核与WebApp框架就完全隔离了,不管页面是卡住还是崩溃都不会影响到框架本身,而且由于浏览器内核在另一个进程,所以框架进程的内存,性能完全不受影响。给用户非常好的体验。
图5所示浏览器进程中包括本地组件,当然在另一实施方式中可以将本地组件设置在与浏览器进程相独立的进程中,如图2b所示。
图7为本发明具有跨进程渲染机制的一种服务接入方式示意图。参见图7,把客户端的本地组件作为本地服务组件,把这种本地服务组件封装成自定义对象即图7中所示的服务代理对象,脚本引擎中映射有该服务代理对象的脚本对象,该脚本对象又嵌入到浏览器内核中。在浏览器内核需要特定的客户端服务时,调用该脚本对象,通过服务代理对象通知服务进程中的所述本地服务组件实现特定的客户端服务功能。图7实施例中将本地服务组件设置在了独立的服务进程中,当然所述本地服务组件也可以设置到与服务代理对象、脚本引擎、以及浏览器内核的同一个浏览器进程中,如图3a所示。
对于WebApp的安全性,本发明也采取了相应的技术方案。对于WebApp界面框架进程、浏览器进程、还有服务进程,最不安全的是浏览器进程。因此本发明使用沙箱的技术对浏览器进程进行防护,防止不安全的页面对系统的破坏。图8为本发明对浏览器进程进行沙箱保护的示意图,如图8所示,所述浏览器进程中进一步包括沙箱保护单元,用于对浏览器进程进行防护。至于沙箱保护单元具体的实施方法,可以参考现有技术,本文不再赘述。
另外一个安全性问题是数据的安全性,WebApp可能会需要账号或者用户信息等机密数据,但不可能要求所有的WebApp都使用HTTPS这样的加密通道,这里可以在服务进程这边实现加密,服务进程与后台服务器可以使用加密的协议,服务进程与浏览器进程的服务代理可以使用加密传输的方式,然后在浏览器进程的服务代理这里解密,然后传给页面使用。
基于上述对本发明所述WebApp运行装置的描述,本发明还公开了WebApp的运行方法,图9为本发明WebApp运行方法的一种流程图,该流程包括:
封装本地组件,形成具有特定客户端功能的自定义对象;
在脚本引擎中设置所述自定义对象的脚本对象;
在浏览器内核嵌入所述脚本对象;
当WebApp运行时,浏览器内核通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能。
依据前述描述,该方法在WebApp运行时,在同一浏览器进程中运行所述自定义对象、脚本引擎、浏览器内核,在与该浏览器进程相独立的进程中运行所述本地组件;或者在同一浏览器进程中运行所述本地组件、自定义对象、脚本引擎、以及浏览器内核。
依据前述描述,为了节约资源和方便管理,该方法进一步设置可同时打开的最大浏览器进程数;当同时运行的WebApp数小于或等于所述最大浏览器进程数时,则每个WebApp对应的浏览器内核分别运行在不同的浏览器进程中;否则至少两个WebApp对应的浏览器内核共享一个浏览器进程。
依据前述描述的跨进程渲染机制,该方法进一步启动与所述浏览器进程相互独立的框架进程,所述框架进程中运行容器窗口和浏览器代理对象,所述浏览器进程中进一步运行所述浏览器代理对象对应的存根对象;所述框架进程的浏览器代理对象将所述容器窗口内指定区域的相关信息发送给浏览器进程的存根对象,并由该存根对象转发给对应的浏览器内核;所述浏览器内核根据收到的信息渲染WebApp的界面信息,并通过本浏览器进程的存根对象将该界面信息跨进程发送给所述框架进程的浏览器代理对象;该框架进程的浏览器代理对象将收到的界面信息展示在所述容器窗口的指定区域。
依据前述描述,所述本地组件可以为本地服务组件,所述自定义对象为服务代理对象,从而提供了一种新的服务接入方式。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (9)
1.一种网络应用的运行装置,包括网络应用对应的浏览器内核和脚本引擎模块,其特征在于,该装置还包括本地组件和自定义对象,其中:
所述本地组件用于提供基础的客户端功能;
所述自定义对象用于封装本地组件,形成特定的客户端功能;
所述脚本引擎模块中设置有所述自定义对象对应的脚本对象;
所述浏览器内核嵌入了所述脚本对象,并通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能;
该装置包括浏览器进程模块;所述自定义对象、脚本引擎模块、以及浏览器内核运行在同一浏览器进程模块中;
该装置进一步包括框架进程模块,该框架进程模块中包括容器窗口和浏览器代理对象,所述浏览器进程模块中进一步包括存根对象;所述框架进程模块的浏览器代理对象用于将所述容器窗口内指定区域的相关信息发送给浏览器进程模块的存根对象,并由该存根对象转发给对应的浏览器内核,所述浏览器内核根据收到的信息渲染网络应用的界面信息,并通过本浏览器进程模块的存根对象将该界面信息跨进程发送给所述框架进程模块的浏览器代理对象;该浏览器代理对象将收到的界面信息展示在所述容器窗口的指定区域。
2.根据权利要求1所述的装置,其特征在于,所述本地组件运行在所述浏览器进程模块中,或者所述本地组件运行在与该浏览器进程模块相独立的进程中。
3.根据权利要求2所述的装置,其特征在于,在同时运行一个以上网络应用时,所有网络应用对应的浏览器内核分别运行在不同的浏览器进程模块中,或者其中至少两个网络应用对应的浏览器内核共享一个浏览器进程模块。
4.根据权利要求2所述的装置,其特征在于,所述浏览器进程模块中进一步包括沙箱保护单元,用于对浏览器进程模块进行防护。
5.根据权利要求1至4任一项所述的装置,其特征在于,所述本地组件为本地服务组件,所述自定义对象为服务代理对象。
6.一种网络应用的运行方法,其特征在于,包括:
封装本地组件,形成具有特定客户端功能的自定义对象;
在脚本引擎中设置所述自定义对象的脚本对象;
在浏览器内核嵌入所述脚本对象;
当网络应用运行时,在同一浏览器进程中运行所述自定义对象、脚本引擎、浏览器内核,浏览器内核通过运行脚本调用所嵌入的脚本对象,运行所述自定义对象的特定的客户端功能;
该方法进一步启动与所述浏览器进程相互独立的框架进程,所述框架进程中运行容器窗口和浏览器代理对象,所述浏览器进程中进一步运行存根对象;
所述框架进程的浏览器代理对象将所述容器窗口内指定区域的相关信息发送给浏览器进程的存根对象,并由该存根对象转发给对应的浏览器内核;
所述浏览器内核根据收到的信息渲染网络应用的界面信息,并通过本浏览器进程的存根对象将该界面信息跨进程发送给所述框架进程的浏览器代理对象;该浏览器代理对象将收到的界面信息展示在所述容器窗口的指定区域。
7.根据权利要求6所述的方法,其特征在于,在网络应用运行时,在所述浏览器进程相独立的进程中运行所述本地组件;或者在同一浏览器进程中运行所述本地组件、自定义对象、脚本引擎、以及浏览器内核。
8.根据权利要求7所述的方法,其特征在于,该方法进一步设置可同时打开的最大浏览器进程数;当同时运行的网络应用数小于或等于所述最大浏览器进程数时,则每个网络应用对应的浏览器内核分别运行在不同的浏览器进程中;否则至少两个网络应用对应的浏览器内核共享一个浏览器进程。
9.根据权利要求6至8任一项所述的方法,其特征在于,所述本地组件为本地服务组件,所述自定义对象为服务代理对象。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110169232.6A CN102843393B (zh) | 2011-06-22 | 2011-06-22 | 网络应用的运行装置及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110169232.6A CN102843393B (zh) | 2011-06-22 | 2011-06-22 | 网络应用的运行装置及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102843393A CN102843393A (zh) | 2012-12-26 |
CN102843393B true CN102843393B (zh) | 2015-02-25 |
Family
ID=47370453
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110169232.6A Active CN102843393B (zh) | 2011-06-22 | 2011-06-22 | 网络应用的运行装置及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102843393B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102722559B (zh) * | 2012-05-31 | 2015-09-16 | 北京奇虎科技有限公司 | 一种异常页面的进程控制方法、装置和系统 |
CN103914284B (zh) * | 2012-12-31 | 2017-12-12 | 北京神州泰岳软件股份有限公司 | 移动嵌入式平台中内嵌浏览器网页实现方法和装置 |
CN104077151B (zh) * | 2013-03-26 | 2017-11-24 | 联想(北京)有限公司 | 快速启动网络应用的方法和电子设备 |
CN104426921B (zh) * | 2013-08-20 | 2018-04-10 | 阿里巴巴集团控股有限公司 | 展现网络应用程序文档的方法、移动终端、浏览器及系统 |
CN103617037B (zh) | 2013-11-27 | 2017-12-08 | 邵寻 | 用于web开发系统的开发方法和web开发系统 |
CN107025124B (zh) * | 2015-06-24 | 2021-02-19 | 上海信联信息发展股份有限公司 | 网页技术开发单机软件的系统架构 |
CN106406920A (zh) * | 2015-07-29 | 2017-02-15 | 宋青见 | 终端设备及其应用程序的执行方法 |
CN107368487B (zh) * | 2016-05-12 | 2020-09-29 | 阿里巴巴集团控股有限公司 | 一种页面组件动态布局方法、装置及客户端 |
CN110046315A (zh) * | 2019-03-01 | 2019-07-23 | 视联动力信息技术股份有限公司 | 一种会议管理平台的处理方法和装置 |
CN111858675A (zh) * | 2020-07-24 | 2020-10-30 | 北京玉符科技服务有限公司 | 自定义属性编辑器 |
CN114489681B (zh) * | 2022-04-07 | 2022-06-28 | 南京飓风引擎信息技术有限公司 | 一种基于浏览器内核的移动端跨平台开发系统及方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060167981A1 (en) * | 2005-01-04 | 2006-07-27 | Microsoft Corporation | Web application architecture |
CN100511139C (zh) * | 2007-12-07 | 2009-07-08 | 上海科泰世纪科技有限公司 | 计算机软件系统基于xml和脚本语言应用程序开发运行方法 |
CN101876998B (zh) * | 2009-12-07 | 2012-11-28 | 金蝶软件(中国)有限公司 | 一种实现数据编辑的方法和系统 |
-
2011
- 2011-06-22 CN CN201110169232.6A patent/CN102843393B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN102843393A (zh) | 2012-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102843393B (zh) | 网络应用的运行装置及方法 | |
CN102843394B (zh) | 网络应用的框架装置及运行方法 | |
CN108536524A (zh) | 资源更新方法、装置、终端及存储介质 | |
TWI444216B (zh) | 基於移動終端實現遊戲之方法和裝置 | |
CN107291523B (zh) | 一种Web前端消息总线系统 | |
CN103281311B (zh) | 一种使用Protobuf描述的物联网协议解析方法 | |
CA2387328A1 (en) | Mobile terminal system | |
CN101964763B (zh) | 消息处理方法 | |
CN102291437A (zh) | 跨平台互联网应用的实现系统及方法 | |
CN109495433A (zh) | 数据下载方法和装置、存储介质及电子装置 | |
CN103179166A (zh) | 在客户端中提供服务的方法和客户端 | |
WO2023011274A1 (zh) | 一种通讯协议转换方法、设备、系统及网关设备 | |
CN104267972A (zh) | 浏览器本地接口扩展方法及装置 | |
CN101924696A (zh) | 用于有效实现增强型路由器设备的系统和方法 | |
CN103150154A (zh) | 一种应用程序插件的实现方法及装置 | |
CN102325225A (zh) | 一种播放手机网站的视频的方法及装置 | |
CN112199622A (zh) | 页面跳转方法、系统及存储介质 | |
CN102811230A (zh) | 一种基于应用集成的资源调用方法和系统 | |
CN109388388B (zh) | 功能模块间的信息交互方法、装置、设备及存储介质 | |
CN109343970B (zh) | 基于应用程序的操作方法、装置、电子设备及计算机介质 | |
CN104410702A (zh) | 远程服务请求方法、响应方法、请求装置与响应装置 | |
CN106506210B (zh) | 一种集合多种协议实现接口界面化的方法及其系统 | |
CN102842006A (zh) | 扩展脚本对象的访问控制方法及其访问控制系统和终端 | |
CN104717249B (zh) | 远程操作应用发布的方法、代理服务器和系统 | |
CN116170610A (zh) | 用于实现数据传输的sdk及数据传输方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |