跨平台开发

移动应用开发对很多开发人员来说是一种令人恐惧的事情。许多企业希望能够通过开发移动应用程序,来提升企业业务水平,开发原生App时往往又缺少专业的Objective C 或 Java 移动开发人员。不仅如此,每种流行的移动平台都具有自身的开发语言,开发工具及特征,这就意味着开发一款应用需要花费三倍的开发时间,且需要维护三个项目。因此开发原生应用的代价是非常大的。

幸运的是,有很多公司已经在研究如何使原生APP的开发变得简单,目前为止多平台的开发方法主要有两种:第一种方法就是以Web 应用为内核,填充到原生app中(PhoneGap提供的解决方案)。这种方法能够吸引那些想要转到移动开发的Web开发人员,使用这种方法开发的应用就是将网站包装的像移动应用。第二种方法就是使用跨平台的开发工具,这种工具提供一种通用语言开发原生App(Xamarin 提供的解决方案)。Xamarin(Xamarin.Forms)可以让开发人员用C#开发,再使用Xamarin.Forms转换生成 iOS,Android, Windows Phone应用,Xamarin 比较受.Net 开发人员的喜爱。

两种工具采用不同的解决方法,面向不同技术背景的开发人员,来实现跨平台应用开发。随着两大平台的流行,很多控件厂商也开发出支持这两种平台的工具,如为PhoneGap 提供的Wijmo 5,为 Xamarin.Forms提供的Xuni 等,从而使移动开发更加快速高效,当然尽管有很多工具支持这两种平台,但是无论是PhoeGap或是Xamarin没有绝对的好与坏,因此如何选择,主要取决于哪种工具能够更有利于企业。下面我们就详细对比PhoneGap 与Xamarin。

PhoneGap

开发人员使用PhoneGap 时,可使用 JavaScript,HTML5,CSS来开发。PhoneGap 提供了访问移动设备特征的通用API接口,如传感器,摄像头等。这些应用程序称为混合应用,既不是原生的(在WebView中渲染)也不是纯Web的应用(需要访问原生设备API,是安装包的形式)可使用其他插件扩展PhoneGap 功能。最重要的是PhoneGap 是免费开源的。

Xamarin

Xamarin 提供利用.Net(Mono) 的开源实现的一个平台,开发人员可使用C#开发一次,Xamarin.Form就可同时生成iOS,Android,及Windows Phone 应用程序。Xamarin开发即可以使用Visual Studio,也可以使用其自有的 Xamarin Studio。Xamarin提供了高效的性能,提升了代码的复用,可以充分利用C#语言和.Net 平台的优势。

Xamarin VS PhoneGap

   

Xamarin.Forms   PhoneGap
使用C#或XAML语言编码 使用 JavaScript,HTML,CSS 编码
开发iOS ,Android,WindowsPhone  应用 支持iOS, Android,WindowsPhone,Blackberry,Symbian,Bada,WebOS
需要Xamarin许可证 免费开源
生成原生应用 应用程序不完全是原生的
高效 性能一般
应用程序在每个平台上都具有好的用户界面 需要其他辅助工具才能在每个平台上实现好的用户界面
大量的共享资源 开源库,框架,相关平台优化的碎片
   

总结

每个开发人员需要选择一款适合他们开发的解决方案。PhoneGap能够提升web开发的技能,而Xamarin 致力于.NET 技术,是最直接的解决方法。尽管有很多工具支持这两种平台,但是 PhoeGap 与 Xamarin 之间没有绝对的好与坏之分。

工具选择

无论选择哪种解决方案,都有一些两大平台的开发工具,来更好地帮助开发人员进行移动应用的开发。
PhoneGap -- 可利用触控优先的 Wijmo 控件集进行开发。Wijmo 快如闪电,触控优先,为企业应用提供更灵活的操作体验,并全面支持Angular 2!
Xamarin -- 借助 Xuni (本地化、跨平台移动控件集),使用本地编程技术,可以在 IOS、Android 和Xamarin平台上使用相同的 API。无论需要Android 图表、Xamarin.Form 仪表盘还是IOS表格控件,Xuni 都高质量的创建适用于所有设备的企业级应用。

原文链接:http://stage.goxuni.com/xamarin-and-phonegap-comparison/

移动开发下Xamarin VS PhoneGap的更多相关文章

  1. .NET跨平台开发之Xamarin.Android介绍与生命周期【2】

    前言 不同于IOS,Xamarin在Visual Studio中针对Android,可以很直接的去设计使用者界面,在本系列中,子浩会针对Android目录结构以及基本控制项进行介绍,包括TextVie ...

  2. 多项目开发下的dll文件管理

    阅读目录: DS01:为什么要对生成的dll文件进行管理? DS02:首先介绍以下两个DOS命令 DS03:第一种实现方法(xcopy) DS04:第二种实现方法(attrib) DS05:分享一个有 ...

  3. [0] WCF开发下,提示HTTP 无法注册 URL 进程不具有此命名空间的访问权限

    Visual Studio以管理员的身份运行就可以了.

  4. svn协同开发下的dll版本管理最佳实践

    作为一名开发人员,常常碰到的一个问题是,当使用svn签出一份最新代码时,经常不能一次编译通过,导致花费大量时间去解决编译问题,这里碰到的问题一般可以分为三类: 1. 由于提交代码的开发人员失误,忘记提 ...

  5. iOS开发下对MVVM的理解

    最近看到新浪微博上以及iOS开发的论坛里面谈到MVVM设计模式,所谓MVVM就是Model-View-ViewModel的缩写,关于MVVM的概念,这里我不想过多的介绍,有很多介绍的很详细的博文,这里 ...

  6. Xamarin开发及学习资源

    入行文章指引 移动开发下Xamarin VS PhoneGap 跨平台开发 许多企业希望能够通过开发移动应用程序,来提升企业业务水平,开发原生App时往往又缺少专业的Objective C 或 Jav ...

  7. C#6新特性,让你的代码更干净

    前言 前几天看一个朋友的博客时,看他用到了C#6的特性,而6出来这么长时间还没有正儿八经看过它,今儿专门看了下新特性,说白了也不过是语法糖而已.但是用起来确实能让你的代码更加干净些.Let's try ...

  8. 使用VS2015开发跨平台APP

      VS2013开始就可以基于HTML5开发WEBAPP,并借助xamarin或者PHONEGAP实现原生APP 不过升级麻烦,直接下载VS2015CTP6,最好安装在同一个分区上,ANDROID S ...

  9. jdk(多版本)安装注意!

    ♣安装jdk和jre ♣jdk配置环境变量和测试 ♣安装多版本jdk和切换 ♣jdk下的jre和第二次安装的jre的区别 注意点: 1.jdk版本需要是64位 2.安装JDK 选择安装目录 安装过程中 ...

随机推荐

  1. HTTP返回值

    100 Continue:初始的请求已经接受,客户应当继续发送请求的其余部分. 101 Switching Protocols:服务器将遵从客户的请求转换到另外一种协议. 200 OK:一切正常,对G ...

  2. codeforces731C Socks

    C. Socks time limit per test 2 seconds memory limit per test 256 megabytes input standard input outp ...

  3. linux 实用知识整理

    http://www.apelearn.com/study_v2/ 查看端口占用 netstat -apn

  4. 网络请求框架----HttpClient的get,post和图片上传服务器

    HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议.HttpCli ...

  5. PHP--目录处理

    __file___ dirname(): dirname()与__file__的组合:dirname(__file__)

  6. PHP安装rrdtool扩展

    首先,我的环境是Centos 6.5 PHP版本是5.51.首先安装rrdtool需要的依赖库文件   yum -y install pango* 2.先服务器安装rrdtool  wget http ...

  7. good excel website

    http://www.codematic.net/excel-tools/free-excel-tools.htm

  8. Unicode explorer

    It can be cumbersome to work out some of the details of this by hand, so you can use the little Java ...

  9. SQL Server 判定时间是否在某个时间区间内

    * FROM sys.objects WHERE name=N'uF_IsRange_Date' AND [type]='FN') DROP FUNCTION uF_IsRange_Date GO S ...

  10. 使用apache和htaccess对目录访问设置密码保护配置教程

    对目录设置密码保护配置说明我们有时候访问某些网站的时候,要求输入用户名和密码才能访问.这是为了保护隐私,只让经过许可的人访问.在本教程中主要介绍两种方法,一种是通过apache httpd.conf配 ...