摘 要 随着智能手机的快速发展,移动应用成为主流的发展方向,移动系统以IOS,Android,WP三大移动操作系统为主。由于三大移动系统之间互相不支持,每一种应用都需要进行多次开发,费工费时,跨平台移动应用开发成为重要需求。本文介绍Xamarin这一跨平台开发解决方案,通过案例展示此解决方案的应用技术及经验。 1 Xamarin跨平台解决方案 目前移动应用的跨平台技术主要有两种,一种是基于WEB的移动开发,只需要使用标准的HTML及JavaScript,进行开发,那么只要移动终端安装有合适的浏览器,则可以实现应用的跨平台;一种是使用特定的跨平台技术和框架,开发出能运行在各种主流移动操作系统上的APP应用程序。 Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单。Xamarin的产品简化了针对多种平台的应用开发,包括IOS、Android、Windows Phone和Mac App。 Xamarin Studio提供了很多现代开发所需功能,包括代码完成、调试器、打包和发布应用(支持通过TestFlight发布应用程序)。对于Android,Xamarin还包含了自己的UI生成器(对于IOS,则使用苹果Xcode的UI生成器),此外还集成了Git和Subversion。开发者可以使用Xamarin Studio 在模拟器和真机上对移动应用进行测试和bug调试。 2 开发注意事项 虽然Xamarin可以实现跨平台开发,但由于移动平台自身的显著差异,在开发跨平台应用时,仍必须注意一些重要问题。 1)Xamarin工作基本原理。 在IOS系统上,Xamarin的AOT编译器将C#代码直接编译成本地ARM汇编代码。Android上,将C#编译成IL中间语言,运行时即时编译器JIT将IL翻译成本地汇编。在这两种系统下,Xamarin都实现了.NET运行时,包括内存分配,垃圾回收,底层平台调用等。正因为如此,Xamarin对于不同的平台,使用了并不完全一样的处理技术,因此也就并不是完全意义上的跨平台。 2)不是所有代码都能跨平台。 正是由于Xamarin的工作原理决定了Xamarin平台开发的应用,仍必须按操作系统设定的应用开发和工作模式进行,进而涉及到界面的展示、事件处理、系统服务、硬件操作与管理等仍必须针对不同的操作系统进行单独的开发。 3)系统需要进行有效的模块化。 由于Xamarin的开发并不能实现完全地跨平台,因此,在开发系统时,必须进行有效的模块化设计,不仅需要进行分层设计,而且需要根据代码是否能跨平台而再次进行划分。 3 项目需求 本项目以高职护理专业学生顶岗实习过程的管理自动化为主要目标,兼顾学习生技术和知识查询需求。 系统分为服务器端、PC端管理子系统、移动平台应用APP等三部分。 其中,移动平台为了方便快捷并在无网络覆盖的环境下仍能使用,必须把系统管理的所有模块数据下载并保存到移动 平台。 服务器端则为以上两子系统提供服务。 系统网络结构如图1所示。 图1 系统网络图 4 系统设计与实现 为提高代码的复用程度,服务器端通过Rest服务向移动APP提供多媒体资源以外的所有服务,PC管理子系统则开发成B/S结构系统,因此,服务器端与PC管理子系统同时进行设计与开发,两个子系统整合成一个子系统,以下简称为服务器子系统。为了保证系统的安全性,移动应用APP与服务器之间的网络访问采用了HTTPS协议。为了简化数据的处理以及降低数据传输量,移动应用与服务器之间的所有数据采用JSON格式。 1)服务器子系统设计与实现。 由于Xamarin目前必须使用.NET平台,所以服务器子系统使用ASP.NET MVC + WEB API的架构完成。 在服务器子系统中,进行分层设计,系统提供PC管理子系统所需要的UI,同时提供为移动应用APP的服务接口。 服务器子系统中,DAL和BLL层还抽象出对应的IDAL和IBLL层,用于定义接口,并为提供核心框架和公用模块,加设了Common和Core两模块。DAL采用Entity Framework 6 实现,同时为了方便采用代码生成器对快速建立系统,系统还采用了由Unity 3实现的IoC(控制反转:Inversion of Control,英文缩写为IoC,是一个重要的面向对象编程的法则来削减计算机程序的耦合问题,也是轻量级的Spring框架的核心)。PC端管理子系统UI则选用了EasyUI技术快速实现用户界面。 2)移动应用APP设计与实现。 移动应用APP设计的关键与重点在于把能从具体平台中抽象出来的模块和功能,必须提取出来,并设计好接口以适应不同平台中具体接口要求。移动应用APP结构如图2所示。 图2 移动APP结构图 其中UI模块需要根据不同的移动平台操作分别独立开发,而BLL(业务逻辑层)、DAL(数据库访问层)、Entity(实体类层)、DelegateLib(委托定义库)、DBMS(数据库 管理系统,包括数据库)、WebClient(网络代理层)等所有模块都要通用。 为保证所有模块的通用性,数据库采用Sqlite 3,所有数据库访问统一通过DAL完成,为了更方便地完成数据库访问引进SQLite.Net工具实现ORM,WebClient完成所有的网终访问,Entity定义所有的实体类,DelegateLib定义所有需要的委托类型,BLL则完成所有的业务逻辑处理。 对于移动应用中的多媒体、文档操作以及LBS功能,由于各平台操作系统的不同,也必须分别实现,而文档、GPS的信息则存储在数据库中,以此实现尽可能多的代码与数据的跨平台共享。 除了UI模块外,所有的模块都设计开发成可移植类库(Portable Class Library,简称PCL),因此,对于WebClient中的网络访问类HttpClient,其功能则于一般类库中的HttpClient类要弱,开发时,需要做更多的处理工作。 所有可能的长时间操作和处理过程,都采用异步方式实现,在操作完成后引发事件,通过事件处理程序完成后继处理,所有的网络访问、数据库访问都采用了此类方法实现,保证应用运行过程中,既不会被操作系统认为超时而处理,也不会影响其它正在运行的应用。 5 发展展望 Xamarin近来正在与微软进行合适和收购谈判,业界估计微软一旦收购Xamarin公司,则将很快把其作为Visual Studio开发工具的一部分发布,使得在统一的Visual Studio 中就能完成Xamarin for Android、Xamarin for IOS以及Windows Phone的开发,而不像目前在Xamarin for IOS中,还需要再新创建一个解决方案,再把所需要的PCL引入。 移动应用的开发正在热火朝天的发展,客户对于成本的敏感性又非常之高,Xamarin是目前最好的低成本跨平台开台框架和技术,发展前景可谓非常美好,得到微软的帮助将会以更快的速度得到飞跃式发展,研究和积累Xamarin的开发技术及经验,对中小公司也具备很大的吸引力。
信息发布:广州名易软件有限公司 http://www.myidp.net
|