目前,对于哪一种应用程序更好——是本机应用程序还是移动云计算应用程序,还有着很大的争议。为了深入地分析这个问题,就让我们从开发的角度来好好分析一下这两种应用程序之间的区别。
一个本机应用程序是直接安装在移动设备上的,而开发人员将为每一种移动设备开发一个单独的应用程序版本。本机应用程序有可能会保存在移动设备的外部存储器上,或者可以从公共的或私有的应用程序商店下载后安装在移动设备上。
本机应用程序是针对特定设备及其操作系统而开发的。而与本机应用程序相关的数据也被存储在设备上,当然也有可能其相关数据并没有被存储在设备上而是由本机应用程序进行远程访问的。基于以上本机应用程序的非联网特点,互联网连接可能并不是这种应用程序所必须的。
本机应用程序有能力使用特定设备的硬件与功能,这就意味着本机应用程序能够充分利用移动设备上的最新技术,例如全球定位系统(GPS)和相机等。这一点可以被认为是本机应用程序优于移动云计算应用程序的地方。
移动云计算应用程序与基于网络的应用程序非常类似。他们主要的相似之处在于移动云计算应用程序和网络应用程序都在移动设备之外的服务器上运行,都需要使用移动设备上的浏览器进行显示并使用应用程序用户界面(UI)。此外,它们都以支持多个移动设备为目标,而不是像本机应用程序那样只支持一个特定的移动设备。
移动云计算应用程序并不需要在移动设备上进行下载和安装等操作。用户通过远程设备上的浏览器窗口就可以查看移动云计算应用程序的界面。移动应用程序是在移动云计算上运行的,那么使用这样的应用程序就一定需要互联网连接了。当数据在移动设备和移动云计算应用程序之间进行传输时,通常会通过HTTP使用到JSON。
移动云计算应用程序可以来源于重新编写本机应用程序(即需要使应用程序能够在移动云计算中运行);客户专为移动设备而开发的应用程序,或从外部下载至云计算的第三方应用程序。一些企业为他们的应用程序同时提供了本机版和移动云计算版。
移动云应用和本地应用的区别
本地应用程序和移动云计算应用程序之间的外观差别是显而易见的。它们之间一些明显的、影响开发的差异包括:
• 移动应用程序环境:移动云计算服务器或移动设备
• 外观和使用体验:对于移动本地应用程序,它是在本地移动设备上运行的;对于移动云计算应用程序,它是模拟的。本地应用程序提供了通知,例如iOS通知,而移动云计算应用程序本身并不支持通知。
• 访问设备上的功能:本地应用程序可直接访问设备上的硬件与功能,例如GPS、相机、运动以及声音。移动云应用则可能需要通过应用程序编程接口(API)才能间接地访问这些功能。
• 用户界面速度:通常来说,由于移动云计算应用程序是通过移动设备浏览器来显示用户界面的,所以本机应用程序的速度更快。本地应用程序界面运行在移动设备上,从而消除了任何与浏览器有关的资源开销。
选择开发移动云计算应用程序而不是本地应用程序往往是因为开发人员更愿意以牺牲功能的代价使应用程序更易于移植到不同的设备上。
本地应用与移动云应用的开发
对于本地应用程序来说,每一个移动应用程序开发平台(例如iOS和Android)都使用了它自己的开发流程并拥有各自的本机编程语言,例如Java (Android)、Objective-C (iOS) 以及 Visual C++ (Windows Mobile)。
本地应用程序通常都有应用程序开发工具,例如Apple公司的iOS软件开发套件、Google公司的Android开发工具以及微软公司的.NET Compact Framework (.NET CF)。Sybase和PhoneGap则为本机应用程序提供了其他的开发工具。与之相反,移动云计算应用程序的开发工具并不依赖于任何的移动设备操作系统。
移动云计算应用程序使用HTML5、CSS3以及JavaScript这样的编程语言,而在服务器端使用如C++这样编程语言或根据开发人员喜好使用网络应用程序框架,如PHP、Rails以及Python。
对于本地应用程序和移动云计算应用程序来说,工具和框架都可以帮助开发部署在多操作系统平台和网络浏览器的软件。
Apple公司的开发平台还能帮助本机应用程序的开发人员使用iOS通知功能以便于发出声音警告或在屏幕上显示一个可视警告或一段文字警告。移动云计算应用程序可以访问移动设备上数量有限的本地功能和信息。这种访问通常是通过API方式实现的。
移动应用程序需要考虑的问题
在创建一个移动应用程序前,有很多问题需要考虑。其中包括:
• 你计划支持多少种移动设备平台?
• 你是否有“使用你自己设备”(BYOD)的策略?
• 你是否需要使用设备上的软硬件功能?
• 安全性的重要程度如何?
• 这样一个应用程序的设计目的是什么?
• 数据与系统集成的重要性如何?
如果跨平台兼容性是一个问题,那么肯定会在公司内实施一个BYOD策略,所以移动云计算应用程序就是一个更为合适的选择了。但是,如果你需要一个使用众多设备现有功能的业务应用程序,那么本机应用程序则可能是正确的选择了。
安全性是移动设备的最大弱点。它们的便携性和尺寸使得它们比笔记本电脑更易于丢失或被盗。本机应用程序会远程访问业务数据,然后就把相关业务数据留在了设备上,这样一来,如果设备丢失或被盗,这就有意无意地带来了较大的风险。移动云计算应用程序的数据都保存在移动云计算中,并不在移动设备上。因此,如果一个使用移动云计算应用程序的设备丢失或被盗,它所带来的安全性风险要小得多。
如果你正在为内部使用或客户使用而开发移动业务应用程序,同时你开发的应用程序还需要支持众多种类的移动设备,那么移动云计算应用程序就是一个好的选择。如果你对开发销售移动应用程序感兴趣,那么本机应用程序则是个好选择,因为它可以被放在客户经常光顾的一个或多个应用程序商店中。
当移动业务应用程序访问数据库(这也是最常见的)时,你需要把你的应用程序和你目前的系统集成在一起。这类似于把第三方客户资源管理或企业资源规划产品与你现有系统的其它部分进行集成,这并不是一个简单的活。当数据整合是必须的时,移动云计算应用程序是最好的选择,因为你的移动应用程序和你的系统其他部分都在相同的云计算中运行,而不是在远程移动设备上运行(用不支持云计算的编程语言编写)。