《PhoneGap精粹:构建跨平台的移动App》——1.4节为容器而设计

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

本节书摘来自异步社区《PhoneGap精粹:构建跨平台的移动App》一书中的第1章,第1.4节为容器而设计,作者 【美】John M. Wargo,更多章节内容可以访问云栖社区“异步社区”公众号查看

1.4 为容器而设计
PhoneGap精粹:构建跨平台的移动App
PhoneGap应用程序是一款运行在客户端的原生应用程序容器中的Web应用程序。正因如此,PhoneGap应用程序中的Web应用程序使用的是HTML5应用程序的结构,而不是传统的基于服务端Web应用程序的结构。接下来就让我们看看这个不同的观点。

1.4.1 传统的Web服务器(Web 1.0)方式
对于传统的Web应用程序,Web服务器承载着静态的HTML页面或者动态页面,然后将这些页面返回给客户端(浏览器)。对于动态页面来说,服务器端的语言或脚本语言通常用于(比如从数据库)获取动态内容,还用于将这些内容在发回浏览器之前格式化为HTML。当浏览器发出一个请求时,服务器会去获取相应的页面和内容,然后将这些内容格式化成HTML(或其他类似的,比如XHTML),最后将这些内容发回浏览器显示。

这里我们假定浏览器不需要对内容对任何处理。浏览器只是请求页面,同时为了返回请求的内容服务器会做许多工作。在浏览器上,应用程序可以利用客户端JavaScript代码,让用户和页面上的内容交互,但通常大多数工作会在服务端完成。

1.4.2 Web 2.0方式
随着Web 2.0的出现,Web服务器的负载有了一个下降,取而代之的是在浏览器中运行
JavaScript代码来请求数据和展示数据。Web服务器向Web应用程序发送了一个基于HTML的封装,随页面一起发送过去的JavaScript代码会动态组织页面的内容区域,根据需要显示或隐藏数据内容。

Web 2.0应用程序之所以会成功主要是因为JavaScript中的XMLHTTPRequest(XHR) API。该API让web应用程序可以异步地向服务器发送请求,并当从服务器获取数据后处理这些数据,而不用打断用户的当前操作。许多PhoneGap应用程序都大量使用XHR与远程服务器交互。

该方式可以支持更多有趣的Web应用——看起来更像原生桌面应用的应用程序。虽然Web服务器还是需要用来承载提供给浏览器的页面和内容,但是几乎不会直接操作数据。Google Maps(http://maps.google.com)或Google Gmail(http://mail.google.com)都是很好的Web 2.0的例子。

1.4.3 HTML5方式
移动设备需要一个稍微不同的方式。虽然Web 1.0和2.0在智能机上可以很好地工作,但对Web 1.0的应用来说,在服务器和设备间需要传输大量的数据。对Web 2.0的应用来说,虽然没有这方面的问题,但是需要不断使用网络。Google甚至为了解决这个问题,发明了一项名为Google Gears(http://gears.google.com)的技术,该技术在客户端提供了一个SQL数据库和其他一些功能,用来保证即使无法访问Web服务器,Web应用程序仍然可以正常工作。但后来,他们停止了这个项目,转而投入帮助起草HTML5的标准。

通过HTML5,Web应用程序可以使用一些新的功能,这些功能在移动设备(或受限于网络连接的设备)上可以更高效地运行。通过HTML5,Web应用程序可以使用客户端的数据库去保存应用程序数据。对移动设备来说,这使得无论在有网络还是无网络的情况下,操作都会变得更简单。此外,HTML5还支持使用manifest(声明)文件,列出Web应用程序会用到哪些文件。当加载了Web应用程序的index文件时,浏览器将读取manifest文件,并且接收该文件中列出的所有文件,并下载到客户端设备中。如果移动设备无法连接到网络,只要manifest文件中列出的文件已经保存在了设备上,那么应用程序通过使用本地保存的数据还是可以继续工作的。

虽然我们需要为Web应用程序特地编写程序才能使用这些HTML5的能力,但该Web应用程序可以在浏览器容器(或在PhoneGap应用程序容器)中独立运行。通常,index.html文件只是应用程序中的HTML文件,同时该应用程序的不同“屏幕”1实际上只是根据需要移入移出的不同

容器。HTML5应用程序仍然需要向服务器请求所需的数据,你可以通过使用XHR异步地请求数据并根据需要保存在本地。

Web开发人员必须反复思考利用这些HTML5能力的Web开发方式。HTML5应用程序在移动设备上应该是可以自给自足2的,而不是向web服务器请求各种信息。

运行在PhoneGap应用程序中的web应用程序就是一个HTML5应用程序。

1译者注:指不同的显示界面。
2译者注:指不需要依赖Web服务器也可以独立运行。

相关文章
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
随着云计算和DevOps的兴起,容器技术和自动化在软件开发中扮演着愈发重要的角色,但也带来了新的安全挑战。阿里云针对这些挑战,组织了一场关于云上安全的深度访谈,邀请了内部专家穆寰、匡大虎和黄竹刚,深入探讨了容器安全与软件供应链安全的关系,分析了当前的安全隐患及应对策略,并介绍了阿里云提供的安全解决方案,包括容器镜像服务ACR、容器服务ACK、网格服务ASM等,旨在帮助企业构建涵盖整个软件开发生命周期的安全防护体系。通过加强基础设施安全性、技术创新以及倡导协同安全理念,阿里云致力于与客户共同建设更加安全可靠的软件供应链环境。
150314 32
|
5月前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
1月前
|
供应链 监控 安全
对话|企业如何构建更完善的容器供应链安全防护体系
本期节目围绕软件供应链安全、容器安全的主要挑战以及阿里云如何帮助用户等维度展开了深入的讨论。
|
2月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
3月前
|
机器学习/深度学习 数据采集 Docker
Docker容器化实战:构建并部署一个简单的Web应用
Docker容器化实战:构建并部署一个简单的Web应用
|
4月前
|
Kubernetes 监控 数据中心
容器化与微服务:构建高效开发环境的双剑合璧
【10月更文挑战第20天】本文探讨了容器化技术(如Docker和Kubernetes)与微服务架构的结合,如何共同构建高效、灵活的开发环境。容器化解决了环境一致性、快速部署和资源隔离的问题,而微服务架构则提升了系统的可维护性和可扩展性。通过容器编排工具、CI/CD流程和服务网格,两者的结合进一步优化了开发和运维效率。文章还分享了实施这两项技术的最佳实践和职业心得。
|
4月前
|
Kubernetes Cloud Native 云计算
云原生之旅:构建你的第一个容器化应用
【8月更文挑战第75天】在数字化浪潮中,云原生技术成为推动企业创新和效率提升的关键动力。本篇文章将引导你开启云原生之旅,通过一个简易的步骤指南,帮助你构建并部署第一个容器化应用。我们将一起探索Docker容器的魅力,以及如何利用Kubernetes进行集群管理,实现服务的自动化部署、扩展和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供实践操作的启示和深入思考的契机。
|
4月前
|
监控 Kubernetes 测试技术
掌握Docker网络模式:构建高效容器通信
【10月更文挑战第3天】本文深入探讨了Docker的网络模式,包括它们的工作原理、使用场景以及如何配置和优化容器间的通信。希望能够帮助开发者在项目中有效地应用Docker网络模式,构建高效的容器化应用。
|
5月前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
4月前
|
运维 Kubernetes 开发者
构建高效后端服务:微服务架构与容器化技术的结合
【10月更文挑战第18天】 在数字化转型的浪潮中,企业对后端服务的要求日益提高,追求更高的效率、更强的可伸缩性和更易于维护的系统。本文将探讨微服务架构与容器化技术如何结合,以构建一个既灵活又高效的后端服务体系。通过分析当前后端服务面临的挑战,介绍微服务和容器化的基本概念,以及它们如何相互配合来优化后端服务的性能和管理。本文旨在为开发者提供一种实现后端服务现代化的方法,从而帮助企业在竞争激烈的市场中脱颖而出。
54 0