Chrome 应用的架构
Chrome 应用与用户的操作系统紧密集成。它们设计为在浏览器标签页外运行,能够在离线及连接不稳定的情况下健壮地运行,并且比普通的网页浏览环境具有更强大的能力。应用容器、编程及安全模型为 Chrome 应用的这些要求提供支持。
应用容器模型
应用容器描述了 Chrome 应用的视觉外观及加载行为。Chrome 应用与传统的网上应用外观不同,因为应用容器不显示任何传统网页的用户界面控件,它只包含一个空白的矩形区域。这样使应用能够与系统上的“原生”应用一致,并且防止用户通过手动更改 URL 的方式干扰应用的逻辑。
Chrome 应用加载的方式与网上应用不同。它们都加载相同类型的内容:包含 CSS 和 JavaScript 的 HTML 文档,然而 Chrome 应用在应用容器而不是浏览器标签页中加载。此外,应用容器必须从本地来源加载 Chrome 应用的主文档,这样可以强制所有 Chrome 应用在离线状态下至少具有最小的功能,并提供了强制实施更严格安全策略的环境。
编程模型
编程模型部分描述了 Chrome 应用的生命周期及窗口行为。与原生应用类似,这一编程模型的目标是使用户及其系统拥有对应用生命周期的完全控制。Chrome 应用的生命周期应该与浏览器窗口的行为或网络连接无关。
“事件页面”通过响应用户操作和系统事件管理 Chrome 应用的生命周期。该页面不可见,只在后台存在,并可以由系统运行时环境自动关闭。它控制窗口打开与关闭的方式以及应用启动与终止的时间。一个 Chrome 应用只能有一个“事件页面”。
初看应用程序生命周期
有关如何使用编程模型的详细指示,请参见管理应用的生命周期。如下是 Chrome 应用生命周期的简要概述,帮助您入门:
阶段 | 概述 |
---|---|
安装 | 用户选择安装应用程序并明确接受权限。 |
启动 | 加载事件页面,产生 'launch' 事件,并在窗口中打开应用的页面。您可以创建应用需要的窗口,并指定它们的外观以及它们与事件页面和其他窗口的通信方式。 |
终止 | 用户可以在任何时候终止应用,应用可以迅速恢复到原来的状态。储存数据可以避免数据丢失。 |
更新 | 应用可以在任何时候更新,然而 Chrome 应用正在运行的代码不能在启动/终止周期中更改。 |
卸载 | 用户可以主动卸载应用,卸载后不会留下可执行代码或私有数据。 |
安全模型
Chrome 应用的安全模型通过确保信息的安全管理来保护用户。遵循 CSP(内容安全策略)包含了如何遵循内容安全策略的详细信息,该策略阻止了危险的脚本代码,减少跨站脚本漏洞并保护用户免受中间人攻击。
在本地加载 Chrome 应用的主页面为强制实施比网络更严格的安全策略提供了环境。与 Chrome 浏览器的扩展程序类似,安装时用户必须显式同意信任 Chrome 应用,授予应用访问并使用用户数据的权限。您的应用使用的每一个 API 都有它自己的权限。Chrome 应用的安全模型还提供了按照窗口进行权限分离的能力,这样您可以尽可能减少应用中访问危险 API 的代码,但仍然能够使用它们。
Chrome 应用也重用了 Chrome 扩展程序的进程隔离,并进一步将存储区与外部内容隔离。每一个应用都有自己私有的存储区,不能访问其他应用的存储区或您在浏览器中使用的网站的个人数据(例如 Cookie)。所有外部进程都与应用隔离。由于 iframe 与包含页面运行在同一进程中,它们只能用来加载其他应用页面。您可以使用对象标签来嵌入外部内容,这些内容会在与应用分开的进程中运行。