基于Native Client的编程框架
上面是一个浏览器的架构图,JS引擎+渲染引擎+外壳Shell+内核 4部分构成了浏览器的主体,传统的插件(上图左部)通过NPAPI与浏览器通信,Native Client(上图右部)通过PPAPI与浏览器通信,只有浏览器内核可以直接访问本地系统OS。
【Native Client】
Native Client是Chrome浏览器里面的一个沙箱,它允许在沙箱里面运行本地码程序,使得程序执行速度接近系统的本地程序。同时它又制定了很多沙箱策略来限制本地程序安全的执行。
【可信程序和不可信程序】
在Chrome浏览器里面共有两种类型的程序存在,可信程序(上图黑色边框部分)和不可信程序(上图蓝色边框部分)。可信程序认为是安全的,能够访问一切的本地资源;不可信程序由于存在安全隐患,将其放入沙箱之中,不能直接访问本地资源。而传统的NPAPI插件是被作为可信程序,所以其存在安全隐患。
【基于Native Client的编程框架】
通常在Native Client中运行的本地程序只是利用了CPU+内存的执行优势,它只有一个newlib或者glibc库可以调用,而我们在Native Client搭建了一个编程框架,提供更多的支持(信号量、多线程等)给本地程序,使得本地程序计算能力增强。
编程框架本身是作为可信程序的,能够访问一切本地资源。因此在这个新的模型中,本地程序可以跑自己的逻辑,同时需要访问本地资源时,通过PPAPI接口调用就可以了。
基于Native Client的编程框架相关推荐
- ARChon 分析之三:Native Client
从前两篇文章过来,假设你已经了解了下载使用ARChon.简单分析与Chrome插件介绍 这篇文章主要是分析ARChon如何实现跨平台. 源码:https://bitbucket.org/vladiko ...
- 基于c++和asio的网络编程框架asio2教程基础篇:1、基本概念和使用说明
基于c++和asio的网络编程框架asio2教程基础篇:1.基本概念和使用说明 由于asio2没有写技术文档,因此打算写几篇文章介绍一下如何使用它,主要是针对新手. 1.asio2如何使用? asio ...
- 基于c++和asio的网络编程框架asio2教程基础篇:2、各个回调函数的触发顺序和执行流程
基于c++和asio的网络编程框架asio2教程基础篇:2.各个回调函数的触发顺序和执行流程 以tcp举例: tcp服务端流程: #include <asio2/asio2.hpp>int ...
- 学习C++项目——一个基于C++11简单易用的轻量级网络编程框架 1
一个基于C++11简单易用的轻量级网络编程框架 一.项目下载.导入.编译和运行 现在准备深入学习 C++ ,先肝一个项目,这个项目是<一个基于C++11简单易用的轻量级网络编程框架>, ...
- 【Unity3D插件】UniRx(基于Unity的响应式编程框架)插件学习
一.介绍UniRx插件 UniRx是一种基于Unity3D的响应式编程框架. UniRx就是Unity版本的Rx响应式扩展,响应式就是观察者和定时器,扩展指的是LINQ的操作符.Rx响应式扩展的特点就 ...
- 【Unity3D插件】UniRx(基于Unity的响应式编程框架)插件教程
推荐阅读 CSDN主页 GitHub开源地址 Unity3D插件分享 简书地址 我的个人博客 QQ群:1040082875 大家好,我是佛系工程师☆恬静的小魔龙☆,不定时更新Unity开发技巧,觉得有 ...
- 如何通过编程方式添加Native Client服务器别名
之前我有一篇博客讲到了Native Client中添加服务器别名的问题.请参考下面的链接(讨论服务器别名的内容在该链接文章的底部) http://www.cnblogs.com/chenxizhang ...
- Chrome Native Client 原理
Native Client:A Sandbox for Portable, Untrusted x86 Native Code 系统架构 一个NaCl应用程序由许多可信和不可信NaCl模块组成,每个模 ...
- 响应式编程框架ReactiveCocoa介绍与入门
ReactiveCocoa是Github团队开发的第三方函数式响应式编程框架,在目前市面上的很多iOS App都大量使用了这个框架.以下我简称这个框架为RAC.我下面会通过几篇博客来和大家一起学习这个 ...
最新文章
- linux之让终端支持C++11/14编译cpp文件
- leetcode551. 学生出勤记录 I
- P3193 [HNOI2008]GT考试
- JavaScript | 用户定义函数的一些示例
- php返回200,关于API 使用 HTTP 状态码还是全部返回 200
- H3C-WA2210升级
- 【codevs1026】逃跑的拉尔夫,广搜的胜利
- 微课|Python程序设计开发宝典(5.2.2):默认值参数
- 初学Kotlin——在自定义View里的应用
- HTML5学习笔记(六):CSS基本样式
- k8s之PodIP、ClusterIP和ExternalIP
- Qt5学习笔记之QQ登录界面三:添加图片资源
- ElasticSearch查询模板
- 大规模集成电路数字计算机
- 两个PDF比较标出差异_怎样核对两份word文档内容差异?我用2小时,同事仅用2分钟搞定...
- python周环比增长率怎么算_Pandas实现计算同比、环比
- 产品设计(1):开源产品设计工具pencil
- 《周一清晨的领导课》笔记-NO.1
- 小米路由器sn算ssh密码_路由宝刷小米mini编程器固件,开SSH.
- 美国不道德的人体实验