智能设备变得越来越普及,从三岁大的小孩到祖父祖母辈都能顺利使用,信息从没像如此这般的容易传递到每个人的手中,开发者们普遍觉得应该慎重考虑下移动开发策略,是web的、混合的、还是native的更好。

这其实是一个老生常谈的话题,本文将从Android、iOS和WindowsPhone等流行的操作系统出发,给出web、hybrid还是native的开发建议。

一些关键的因素

 

开发应用最重要的目的是要将应用的功能和最好的体验都传递给用户,因此,作为开发者,针对以下问题,仔细问问自己的团队:

  1. 你预期的目标用户量是多少?
  2. 你是面对本地市场还是海外市场?那些市场里的目标用户都使用什么设备?
  3. 谁是你的目标用户(是企业内部的app还是面向公众的app)?他们的主要需求是什么(地图浏览、高级分 析,还是外业采集)?
  4. 你的用户需要离线使用app吗?
  5. 你的开发团队具备什么样的技能?
  6. 需要什么样的数据和服务来支撑应用?
  7. 谁是数据的拥有者和管理员?你有权利在需要的情况下获取数据吗(比如创建离线的数据源)?
  8. 有设备集成的需求吗,比如使用设备的GPS、罗盘、多媒体、日历、联系人、短信、消息通知等?

策略总结

  • Native:Native形式的应用最适合用来进行设备集成,并且可实现拿来即用的离线工作流,但它需要开发团队具备较好的Native开发技能,可以使用ArcGIS Runtime SDK for Android/iOS/Windows Phone来创建Native的应用;
  • Hybrid:Hybrid形式的应用需要使用到一些Native的组件以及Web开发内容(如Html、JavaScript和CSS),通常有多种方法实现,最简单的方式是在native的app中加入一个web控件,从web上加载内容;更多高级的方式包括使用各种框架(如PhoneGap、Appcelerator Titanium等)。可以使用ArcGIS JavaScript API和Runtime SDKs来开发混合型的应用;
  • Web:web应用程序是指使用HTML、JavaScript和CSS等技术开发的,数据和功能都托管在服务器端,使用手机的web浏览器来打开的应用。如果你不知道自己的目标用户会使用什么设备,并且你希望覆盖尽可能多的用户群体,那么开发web的应用非常适合。可以使用Esri的ArcGIS JavaScript API来实现。

以下表格提供了另外一些比较因素:

移动开发策略的选择(通用标准)

 

考虑因素

Web型

Hybrid型

Native型

备注

用户喜欢什么设备?

只需要目标设备具备浏览器

需要考虑到设备的操作系统及web内容

取决于考虑到操作系统

不同地区的用户使用的主流设备差别很大

开发团队具备什么技能?

HTML、JavaScript及CSS

HTML、JavaScript、CSS,及会使用hybrid的框架

需具备在每个平台上开发native应用的基础(如Objective-C、java、.Net等)

通过什么方式分发应用?

无需通过商店分发

需通过商店分发

需通过商店分发

设备集成能力

取决于html5的能力

取决于开发方式和使用的框架

可以使用本地所有的资源(如GPS、罗盘、日历、多媒体等等)

一些混合型开发框架提供封装的、调用底层本地API的接口

升级维护成本

低,更新之后可立即呈现

需为每种设备类型做更新

需为每种设备类型做更新

 

移动开发策略的选择(从ArcGIS的角度)

 

考虑因素

Web型

Hybrid型

Native型

备注

用户是否需要离线使用app

HTML5支持简单的本地存储和一些基础的离线GIS功能**

使用混合型开发框架可实现本地资源的存储,也可实现离线的GIS功能**

支持所有的离线存储和GIS功能***

使用PhoneGap或Titanium等开发框架开发混合型应用并不如native的简单

路径分析和地理编码

在线*

在线*

离线和在线***,需要ArcGIS for Desktop来制作离线的数据源

GeoEnrichment

在线*

在线*

在线**

通过GeoEnrichment可加载丰富的人口和景观专题图

分析(几何操作)

在线*

在线*

在线和离线**

几何操作如切割、缓冲和相交等,以及简化、抽稀、合并等编辑工作流

基于模型的分析(GP)

在线*

在线*

在线和离线***

先在ArcGIS for Desktop中制作好模型,再发布成GP服务供移动端调用

几何网络追踪

在线*

在线*

在线和离线***

使用GP服务可实现

高级制图和符号化

在线*

在线*

在线和离线***

包括旋转、偏移、测地符号和军事符号等,如2525C和APP-6B

大量要素的动画/显示

不推荐

不推荐

可快速、平滑的渲染、显示和导航***

Native型的app可以支持数以百万计的要素,而web和混合型应用支持的数据量由浏览器等很多因素决定, 通常在1万~10万之间。

本地数据文件(如shapefile和imagery)的离线

不支持

不支持

支持***

今年夏季的新版本中将提供支持

*使用ArcGIS API forJavaScript组件

**使用ArcGIS REST API,开发者需要发送请求和处理响应

***使用ArcGIS Runtime SDKs组件

ArcGIS平台

 

无论你选择了什么开发方式,ArcGIS平台的魅力都无法抵挡,ArcGISJavaScript API和ArcGIS Runtime SDKs提供了高级的制图和可视化、基于web的编辑和分析、位置分析、地理编码、路径分析和导航等功能,开发者们更是可以通过自定义web services来扩展ArcGIS平台的功能。

实际上,上述开发模式在较高层面上来讲是非常相似的,而使用哪种方式取决于很多因素,用户需要根据自己的业务需求和团队特色来选择,希望上述分析能辅助大家更好的做出决策。

  

  

  转自:ArcGIS产品与技术

ArcGIS移动开发策略的选择[转]的更多相关文章

  1. ArcGIS Engine开发之地图基本操作(4)

    ArcGIS Engine开发中数据库的加载 1.加载个人地理数据库数据 个人地理数据库(Personal Geodatabase)使用Miscrosoft Access文件(*.mdb)进行空间数据 ...

  2. ArcGIS Engine开发前基础知识(3)

    对象模型图 一.对象模型图中的类与接口 ArcGIS Engine 提供大量的对象,这些对象之间存在各种各样的关系,如继承.组合.关联等.对象模型图(Object model diagram,ODM) ...

  3. ArcGIS Engine开发前基础知识(2)

    ArcGIS基本控件简介 ArcGIS Engine控件是一组可视化的开发组件,每个ArcGIS Engine控件都是一个COM组件.这些组件包括MapControl,PageLayoutContro ...

  4. C#,ArcGIS Engine开发入门教程

    C#,ArcGIS Engine开发入门教程 转自:http://blog.csdn.net/yanleigis/article/details/2233674  目录(?)[+] 五实现 一 加载A ...

  5. 《ArcGIS Runtime SDK for Android开发笔记》——(4)、基于Android Studio构建ArcGIS Android开发环境

    1.前言 2015年1月15日,发布ArcGIS Runtime SDK for Android v10.2.5版本.从该版本开始默认支持android studio开发环境,示例代码的默认开发环境也 ...

  6. 个人PHP开发环境的选择与搭建

    入职一个多月,重新调整了一下自己电脑的开发环境,现在写出来,算是作为自己的笔记. 如果你是该文章的读者,请忍受文章内的所有小章节都没有具体的步骤. 因为平时还要打游戏(划掉),所以电脑系统一直是Win ...

  7. ArcGIS AddIN开发异常之--“ValidateAddInXMLTask”任务意外失败

     ArcGIS AddIN开发时,产生如下异常错误 2 “ValidateAddInXMLTask”任务意外失败.System.NullReferenceException: 未将对象引用设置到对象的 ...

  8. SNF开发平台WinForm之三-开发-单表选择控件创建-SNF快速开发平台3.3-Spring.Net.Framework

    3.1运行效果: 3.2开发实现: 3.2.1 这个开发与第一个开发操作步骤是一致的,不同之处就是在生成完代码之后,留下如下圈红程序,其它删除. 第一个开发地址:开发-单表表格编辑管理页面 http: ...

  9. ArcGIS Engine开发的ArcGIS 版本管理的功能

    原文:ArcGIS Engine开发的ArcGIS 版本管理的功能 转自:http://blog.csdn.net/linghe301/article/details/7965901 这是以前的Arc ...

随机推荐

  1. php配置

    在 php.ini 文件中设置 cgi.fix_pathinfo=0 ,能避免掉很多不必要的 stat() 系统调用.

  2. outlook找不到文件Outlook.pst 如何启动

    首先注明:这种情况在控制面板-邮件  无法打开的情况下可以使用以下命令打开设置界面 解决方法: 1. 开始 –> 运行 –> cmd 2. 在DOS下,用CD 切换到 Outlook.ex ...

  3. python发邮件

    # -*- coding:utf- -*- import smtplib,os,sys,string import mimetypes from email import Encoders from ...

  4. NOIP模拟赛-时间与空间之旅

    题目描述 公元22××年,宇宙中最普遍的交通工具是spaceship.spaceship的出现使得星系之间的联系变得更为紧密,所以spaceship船长也成了最热门的职业之一.当然,要成为一名出色的船 ...

  5. 使用celery的backend异步获取结果

    惯例先贴出相关参考的文档: http://docs.celeryproject.org/en/stable/getting-started/next-steps.html http://docs.ce ...

  6. linux C学习笔记04--内存映射

    内存映射代码,打开一个文件与映射到内存中,对内存和文件的修改都会反映到文件中来,反之亦然,先贴代码,以后再完善: /****************************************** ...

  7. 实践一:Linux基础实践

    一.Linux基础实践 1.1 1. 掌握软件源的维护方法,配置系统使用软件源镜像.掌握通过软件源来查找,安装,卸载,更新软件的方法. 这部分内容在许多学长学姐的报告里都有很详细的讲解,我在此就不赘述 ...

  8. 上传文件(单文件)(FormData)(前端代码+.NET服务器端)

    由于样式需要不能直接用file,只能用文本框+按钮 <form class="form-horizontal form-bordered form-row-strippe" ...

  9. html--第一章 基础知识总结

    1--<body bgcolor="red">背景颜色 2--<body backgroud="back-ground.gif">  背 ...

  10. visio形状内文本的换行符

    & Chr() &Shape sp;sp.Characters = "12345" & Chr(10) & "56789"; 注 ...