基于Xamarin的智慧城市跨平台移动终端的设计与实现

2021-04-28 10:19月,郭佳,黄
现代测绘 2021年1期
关键词:跨平台服务器端用户

邱 月,郭 佳,黄 俊

(1.江苏省测绘工程院,江苏 南京 210013;2.太仓市自然资源和规划局,江苏 苏州 215400)

0 引 言

科技的狂潮中,智能手机基本普及广大民众手中,移动互联网得到了迅猛的发展,移动应用使用也开始普及[1-2],移动App的出现为大众访问在线地理信息服务提供更多便利,也为政府机构提供工作上的便利。2019年智慧城市大纲建设对移动平台建设内容有明确要求,将移动GIS发展方向明确化[3]。移动GIS摆脱了位置静止和有线连接的束缚,能够提供空间信息服务,已成为人民日常生活中重要的信息获取方式[4]。现今移动终端(手机和平板)的操作系统主要是Android和iOS,任何新开发的App,都需要开发人员开发两套程序来支持这两个系统。因此采用跨平台的开发方式使得两套程序共享一套代码,可大幅提高开发效率。

采用基于Xamarin跨平台的框架设计并实现了全新的智慧城市跨平台移动终端,该框架使用一套代码生成可以运行于Android和iOS操作系统的移动平台App,通过手机、平板安装此App可以随时随地获取地理信息服务。

1 系统总体设计

1.1 系统开发原则

智慧城市跨平台移动终端在建设过程中遵循以下原则。

(1)实用性

系统充分考虑移动平台使用者面向弱GIS用户以及强GIS用户,满足弱GIS用户使用简单GIS功能,也满足强GIS用户在数据采集方面的需求。

(2)跨平台性

为了节约设备的购置成本和维护成本,系统开发完后可适用于当下主流的移动操作系统上,因为系统建设时需要考虑多种智能手机平台的兼容性问题,使得该系统能够运行在多种移动设备上。

1.2 系统开发框架

系统采用移动可客户端/服务器端的传统架构方式,采用Xamarin跨平台框架作为移动应用开发基础,借助Visual Studio 富客户端框架完成系统的界面设计。整个移动平台应用使用MMVC模式进行构建,分离了视图、数据、逻辑,系统各个功能模块相对独立,可以大大减少系统耦合性的发生,也更容易维护、升级。服务器端包括了Web应用服务器、数据服务器、GIS服务器。其中Web服务器采用的是智慧城市应用的公共服务平台,使用Java框架构建一套具有Rest风格的Web服务,移动端发送HTTP请求与Web服务器进行获取和提交相关数据。数据服务器搭载有Oracle数据库,用于存储移动平台用户信息、权限信息、轨迹信息等等。GIS服务器提供利用ArcGIS Server发布的地图服务,移动端通过ArcGIS Runtime开发包调用地图服务、完成地图基本操作、地图渲染等(图1)。

图1 系统框架

1.3 系统开发环境

基于Xamarin的移动平台开发使用新式集成开发环境(IDE)。Xamarin在macOS上使用 Visual Studio for Mac,在Windows上使用Visual Studio,采用C#作为开发语言,本地数据库使用SQLite小型关系型数据库。

服务器端主要是针对数据库的操作功能以及所需Rest服务搭建。系统基于开发环境MyEclipse,使用Java作为服务器端的开发语言并且基于Restlet框架搭建Rest服务,发布Rest服务则采用Tomcat软件,数据库使用Oracle软件。

2 基于Xamarin的智慧城市移动平台跨平台的应用关键技术研究

Xamarin是一个基于Mono用于移动开发的跨平台解决方案,可以同时支持iOS和Android的应用开发,开发人员只需熟练使用C#语言就可以同时开发Android和iOS的程序,通过Xamarin可以创建原生界面和调用硬件功能。基于Xamarin的跨平台可以通过少量修改代码或不修改代码的方式将程序移植到操作系统是Android或者iOS的移动设备上,跨平台编程框架会处理各个平台接口的差异性,开发人员只需要调用统一的接口就可以开发跨多个平台程序,节省了程序员开发和维护的时间及成本。

Xamarin结合了移动设备系统的所有功能,并自身增加了大量的功能,其中包括:基础SDK完全绑定,涵盖了iOS和Android中所有的基础平台的SDK;Objective.C、C、Java和C++互操作。Xamarin提供直接调用Objective.C、Java、C和C++库的接口,便于用户使用已创建的各种第三方代码;对移动跨平台支持:Xamarin对iOS、Android和Windows这3个主流移动平台提供复杂的跨平台支持,其中可编写应用程序可共享多达90%的代码,并且Xamarin.Mobile资源库提供了Unified API来这3个平台以访问公共资源,明显减少移动开发人员针对这3种主流移动平台的开发成本。

2.1 空间定位技术

空间定位是移动应用中重要的功能,是区别于桌面GIS、WebGIS的重要标志。本文基于Xamarin框架开发的定位功能调用ArcGIS Runtime中Location Display API,该API综合了GPS定位、蜂窝网络定基站定位、WIFI定位3种定位数据源,将地理定位功能封装在底层,提供调用接口,除了提供包含经纬度外还加入了一些例如海拔、方位、定位精度等数据。开发者使用该API时不需要知道底层如何确定定位信息及其如何实现的具体技术,即可获取当前用户的位置信息。

2.2 MMVC模式

MVVM是Model.View.ViewModel的简写,它根本上就是MVC的升级版。MVVM就是将View的状态和行为进行抽象化,让开发者把视图UI和业务逻辑分开[5]。View Model可以获取Model数据,同时协助处理View中为了展示内容而涉及到的业务逻辑。MVVM框架的由来便是MVP模式与WPF相结合的应用方式发展并演变过来的一种新型架构框架。它基于原有MVP框架并且把WPF的新特性添加进去。移动应用采用这种模式,将数据、模型、逻辑区分开,最大程度优化移动应用对内存的使用。

2.3 移动端和服务器端数据交换技术

Web服务时基于服务组件的软件平台,通过标准地址Internet协议向外暴漏能够提供服务的接口,并定义了应用程序如何在Web服务上实现互操作性[6]。由于平台的无关性和可扩展性,目前移动端和服务器端的数据交互采用基于Rest风格的Web服务技术来完成。移动平台通过HTTP发送(GET、POST)请求对资源进行获取、创建、修改和删除等操作。服务器端和移动端之间数据交互采用JSON格式,JSON格式可以是一种轻量级的数据交互方式[7],易于阅读和编写,效率较高。Xamarin采用C#开发语言,对JSON格式数据序列化提供丰富的类库,便于开发者使用。

3 系统功能与实现

智慧城市跨平台移动终端系统主要功能:用户登陆、地图服务、数据采集、移动定位、POI搜索等。

3.1 用户登陆

本系统提供用户登陆功能:通过登陆界面,使用者输入用户名和密码,被发送到服务器端进行验证,密码以MD5加密方式传输,当认证成功后才允许用户进入系统的主界面。用户信息保存功能:用户登录时可以实现是否存储密码在本机,如果存储则可以将用户信息存储在本地小型数据库SQLite中;存储信息后,也在用户界面删除用户信息。用户注册功能:用户填写相应注册信息后,数据发送给服务器后,经过管理员审批后方通过申请,通过申请后,用户即可在登陆界面进行正常登陆(图2)。

系统采用了Rest服务的方式对服务器端数据库进行访问,本系统服务器端在用户登陆成功时发送一个授权密钥Token给客服端,客户端需要将该密钥包含在每一个向Rest服务发起的HTTP请求中来申请使用Rest服务。系统设计通过密钥封装在HTTP请求里,每次调用Rest服务请求的过程中在服务器端进行验证,只有通过验证才允许对资源进行操作,通过验证后服务器会给用户发送包含密钥JSON格式的数据。

图2 用户模块

3.2 地图服务

地图服务是GIS中重要内容,本系统基于Xamarin框架,采用ArcGIS Runtime开发包,不仅可以调用智慧城市地理信息公共服务平台发布的地图服务,也可以调用本地离线地图。地图服务类型兼容了智慧城市大纲下主要地图类型,包括在线国家天地图服务、离线紧凑格式数据(缓存、Tpk)、Shp、网络ArcGIS Server格式数据等。所有地图服务都是基于CGS2000坐标系,与国家天地图服务无缝对接。如图是底图切换功能,可以在多年份影像和地形间进行底图的切换,底图加载内容通过可编辑XML文件进行控制,充分利用C#语言对XML文件序列化读取功能(图3)。在专题图层中,可以实现控制图层开关、图层透明度调整,同时可以通过XML文件配置地图服务加载,无论离线数据或者在线数据都可以自由加载(图4)。

图3 底图切换

图4 专题图加载

3.3 数据采集

本系统基于ArcGIS Runtime开发包,实现了数据采集功能,不仅是属性采集,也提供照片、视频、录音的采集功能,充分利用移动平台自身硬件功能。在图面进行标绘,将标绘数据图形空间属性以JSON格式存储本地数据库(SQLite小型关系型数据库),标绘数据字段也是通过XML文件进行读取,数据标绘属性实现可自定义化(图5-图6)。标绘的每个要素都可以拥有唯一码标识,改要素采集相关属性、照片、视频、录音都存在本机唯一标识码的文件夹里,方便数据采集后的批处理(图7)。

图5 图形标绘

图6 标绘数据入库

图7 数据编辑

3.4 移动定位功能

移动端定位功能是移动应用最为便捷的功能,利用本机GPS和蜂窝网络可以提高定位的精度。ArcGIS Runtime提供的定位方法是将定位技术在底层实现封装后,给移动设备Location Display的接口。移动设备通过该接口可以直接获取到地理位置信息,并通过坐标转换显示在当面图面,大大简化了开发流程(图8)。

图8 实时定位

3.5 POI搜索功能

POI搜索也是智慧城市大纲对移动平台主要要求,当前用户需要搜索餐厅、学校、政府机构、加油站等设施时,往往都需要POI检索功能。本系统中调用符合国家天地图兴趣点分类规范的POI服务,由GIS服务器部署发布POI服务。移动平台通过HTTP请求,获取到查询结果(图9)。

图9 POI搜索

4 结 语

本文探索并实践了基于Xamarin框架开发的跨平台移动终端,是在智慧城市大纲要求下移动平台的重要实践,并提出了跨平台框架开发移动平台的优势。本文也提出了基于Xamarin的跨平台技术以及系统开发的诸多关键技术,最后以应用于智慧城市建设中移动终端实例阐述了技术的应用和主要功能。

本研究主要成果如下:

(1)基于移动端MVVC开发模式设计实现了基于Xamarin框架的跨平台智慧城市移动终端,运行于市面主流移动设备上。

(2)构建了一套具有Rest风格的Web服务,实现移动平台和服务端通过JSON格式进行数据交互,按照智慧城市大纲要求依托云平台实现了用户登陆相关功能。

(3)灵活加载在线地图数据和离线地图数据,通过多源数据的加载丰富了移动平台数据的多样性。

基于Xamarin的移动平台开发还有很多需要进一步研究的地方,优化代码来优化移动设备内存使用,离线地图下载功能也需要更多探索与实践。

猜你喜欢
跨平台服务器端用户
Linux环境下基于Socket的数据传输软件设计
跨平台APEX接口组件的设计与实现
浅析异步通信层的架构在ASP.NET 程序中的应用
基于Qt的安全即时通讯软件服务器端设计
关注用户
关注用户
关注用户
基于QT的跨平台输电铁塔监控终端软件设计与实现
基于OPC跨平台通信的电机监测与诊断系统
基于B/S的跨平台用户界面可配置算法研究