站点图标 江湖人士

使用Xamarin实现跨平台移动应用开发

作为国内领先的云处理方案企业,腾讯云在改革云端手艺的同时,也肩负着包管互联网平安次序、抵御黑产黑客的义务和任务。2018 QCon 北京“人工智能与深度进修实践”专场,腾讯云专家级研究员王国印分享了腾讯云在互联网平安防御上的系列处理方案和办法。本文拾掇了次要王国印教员的次要演讲内容。

Microsoft收购Xamarin,这使得那些专注于Microsoft手艺的企业收获颇丰。

自从Xamarin插手到Visual Studio中之后,其利用日益普遍。当然,这也要归因于它目前是开源和免费的。

Xamarin是“近乎原生”的。它将源代码编译为原生的iOS和Android。

Xamarin。Forms、Test Cloud和Xamarin University使Xamarin平台对开辟人员更具吸引力。

Xamarin曾是一种利基产物,售价高贵。此刻,它正逐步成为一种广为利用的挪动使用开辟东西(拜见链接给出幻灯片的第4张和第6张)。出于一些缘由,Xamarin并不合用于某些类型的使用,其本身也具有着不少错误谬误。对此,本文将做细致的引见。同时,Xamarin也是一种跨平台的开辟东西。因而,我们还将在本文中衡量跨各类平台与原生开辟上的一些优错误谬误。下面,我们起首简述Xamarin的推出及成长汗青。

Miguel de Icaza是Gnome项目标创始人,他同时也是一位开源项目冠军(Open Source Champion )。在他看来,要闪开源项目获得公共的承认,必需使该项目与Microsoft、Novell等公司供给的贸易软件毫无二致。出于此考虑,de Icaza于1999年起头和Nat Friedman合作。他们曾在1997年有过短暂的接触,那是在de Icaza的一次不成功的Microsoft面试期间。其时,de Icaza对Microsoft办理层指出,xamarin安卓他们公司的软件该当走上开源之路。此次面试进展的并不成功,但此后Friedman和de Icaza创立了Ximian项目,此中最次要的项目是Mono。Ximain于2003年被Novell收购,其时Novell正试图从Microsoft赢回它们日益萎缩的收集市场份额。此后,Novell于2011年被Attachmate收购,而Attachmate裁剪掉了Mono项目标大部门资本。

原生开辟利用特定于设备平台的编程言语和API。例如在iOS上,利用的是Objective C或Swift。虽然利用这种体例,开辟人员能推出最合用于设备的产物,但此中也具有着一些严峻的问题:

对于开辟原生使用,可能至多需要维护两个团队。一个团队具备在iOS平台上的Swift/Objective C开辟技术,另一个团队具备在Android上的Java开展技术。以至很有可能还需要维护第三个团队,即具备Windows平台开辟技术的团队。我们还需要确保团队能连结最新的技术,而且人员不会被其它公司挖走,由于当前对这些技术的需求量很大。若是利用跨平台的方式,并不克不及消弭这个问题。可是该方式降低了开辟人员入职所需的技术要求,问题获得了必然程度上的缓解。

在开辟代码和测试代码时,若是需要维护多个根基上在做统一工作的团队,这最终将会对开辟成本发生影响。

消费类电子产物企业出于维持本身客户群的考虑,喜好不竭地推出新款手机,并不竭地对操作系统推陈出新。响应地,使用也需要做不竭地升级和更新。这使使用开辟团队忙于在新设备上测试使用、发布新版本和补丁法式。若是利用跨平台体例,那么我们能够在单个代码库上测试大部门或全数设备和更改。若是我们选择的是独立原生使用,那么维护工作和发布时间放置会更为复杂。在一起头开辟时,若是我们建立了一个原生使用,那么时间和开销将连结增加。公司将需要维护一个更大规模的开辟团队。

可在Xamarin Test Cloud供给的两千多台设备上做实地测试;

在Xamarin中,有跨越70%的代码可重用。这意味着,很多针对Android开辟的功能,无需重写全数内容即可用于iOS。因而,开辟人员一旦完成了针对某个情况的编码和测试阶段(无论是Android、iOS仍是Windows),就能够将统一代码用于其它情况,并使影响最小化。比拟于利用原生开辟方式,使用能够更快地交付市场。

我们并非说要削减测试工作。无论应运转在何种设备上,无论选用何种开辟体例,软件测试都是任一使用开辟中的主要构成。可是,在一个操作系统(例如Android)上对大部门的功能测试和调试后,就会缩减在另一个操作系统(例如iOS)上的测试时间,由于部门功能曾经在一个平台上得以验证并测试。如许,开辟人员能够专注于一些特定于平台的事项。比拟起让两个团队以串联体例工作于两个分歧的系统上,这种体例无疑降低了测试时间和工作量。

Xamarin供给的IDE功能全面,开辟人员能够在IDE中施行建立最终产物所需的每个使命。Xamarin比来推出了Xamarin。Forms,进一步简化了开辟。但仍然需要开辟人员具有Xamarin经验,以决定是利用Forms,仍是对峙利用保守的Xamarin开辟。Xamarin官方保举从Xamarin。Forms起头。

Xamarin还供给了线上的Xamarin University,有助于开辟人员快速熟悉开辟所需的各个范畴。

Test Cloud供给了一种使用测试情况,支撑开辟人员在此中模仿实在世界环境对两千多种实在手机进行实地测试。Test Cloud并非免费的,可是对于受泛博使用方针受众青睐的多种方针机型,利用Test Cloud无疑物有所值。此外,采办了Visual Studio Enterprise许可的组织,能够获得Test Cloud的25%扣头。

在跨平台体例和夹杂开辟体例范畴中,没有合作者的表示可与Xamarin相匹敌。此中的缘由在于,Xamarin将源代码编译成二进制对象,而很多合作敌手(例如Sencha和PhoneGap)仅在运转时编译。 在2015年,一位开辟人员Harry Cheung在Android和Apple上做过一些对比测试。必必要认可的是,测试其时所用设备,此刻看来完全过时了。这对于Xamarin而言特别如斯,出格是在iOS上。

若是用户需要在使用中利用Beacons和地舆位置,那么Xamarin能够利用临近设备(此中包罗Beacons和地舆位置),支撑定位和物联网(IoT)。Xamarin与Estimote间有着优良的合作关系。Estimote制造设备,并供给可用于开辟的Xamarin SDK。虽然用户并非必然要局限Estimote的设备,可是Estimote设备简直能够使糊口更轻松,由于基于设备开辟的使用能够通过iBeacons(或其它和谈)领受现场消息,此中包罗了IoT设备的演讲和监控环境。

虽然上面我们曾经引见了跨平台开辟的多个长处,可是在此我们仍是要着重引见Xamarin的一个亮点。Xamarin对于iOS和Android来说都是“近乎原生”的。为实现这一点,Xamarin采用的一个方式是支撑间接从C#挪用开辟人员利用Objective C/Swift for iOS及Java for Android的所有API。原生开辟人员可用的尺度用户界面控件,也能够通过Xamarin拜候。如许,一旦使用运转在设备上,就会给出准确的观感。

虽然利用C#能够实现几乎所有的 特征,可是此中可能仍然需要少量的原生代码。对于一名经验丰硕的Xamarin开辟人员,这无疑是使用开辟中的一种福利,由于他们能够按照本身过往的经验决定挪用环境。

Xamarin具有健旺的后端架构,很是适合于开辟企业使用,以及任何需要做大量后端开辟的使用。虽然Xamarin在需要功能丰硕的用户界面方面有必然局限性,但Xamarin仍然能够生成一些很是有吸引力的使用。在本文稍后,我们将会给出一些案例研究。

Xamarin的最大劣势在于开辟时间以及跨平台工作的效率上。因为合作激烈,大大都挪动使用项目都给出了一个最初刻日,Xamarin开辟人员的开辟速度无疑占优。Xamarin的另一个劣势在于它能利用Estimote SDK,集成Beacons和智能眼镜等物联网设备。

若是使用面向的是最终用户,而且需要供给丰硕的前端功能,这时建议利用原生使用。Xamarin。Forms足以应对简单的用户界面,并能够受益于Xamarin优异的后端功能。可是面临需要复杂用户界面的使用时,Xamarin是无法与原生SDK相媲美的。这是由于iOS和Android的UI必需按照各自平台的观感别离进行设想和实现,最终可共享的使用代码将不足一半,达不到一般环境下的75%,或是近乎利用Forms100%。这完全违背了我们利用Xamarin的初志。因而,这时应利用Objective C或Java。

因为Xamarin是绑缚在Visual Studio中的,开辟人员会发觉需要Visual Studio Professional或Enterprise版才能利用所需的功能。虽然入门级产物是免费的,当然此中也不会具备所有的特征。

Xamarin供给了标答应可和云许可,它们的价钱可未便宜。下图显示了标答应可的报价,供读者参考。

Siemens PLM是由一些高贵的工程软件组合成的复杂产物,在全球具有跨越9百万席位和7。7万名用户。Siemens但愿能借助一款名为“Catchbook”的简便挪动画图和CAD使用,进一步扩展公司的市场。在使用中,用户能够利用手指或触笔绘制外形。考虑到公司具备Microsoft的开辟技术,却不具备iOS或Android的开辟技术,因而Siemens选择了Xamarin。Xamarin供给的第一个劣势,就是企业能够移植良多现有的代码。其次,企业避免了进修原生iOS和Android开辟言语的麻烦,就能让75%的使用运转起来。

世界银行有一个小开辟团队,由8位开辟人员构成。团队成员熟悉Visual Studio和C#开辟,因而团队可以或许利用Xamarin快速提超出跨越产力。他们开辟的一个复杂的查询拜访系统只针对Android设备使用。这是由于世界银行所面临的是成长中国度用户,Android系统他们次要选择的手机类型。

在短短的四个月时间内,全球最大的可口可乐装瓶公司就将“MarketPlace”使用投入运转。与前面引见的案例一样,公司具有具备C#技术的工作人员,他们十分熟悉Visual Studio,这就是公司对利用Xamarin有乐趣的缘由。公司引入了两名经验丰硕的Xamarin开辟人员来指点团队(趁便说一句,他们在团队合作中利用了Slack。Slack也是利用Xamarin的)。

Xamarin因为其火速性,使得产物可以或许在最短的时间内运转起来,因而在一些挪动使用开辟公司中广受好评。下面给出在Clutch Review论坛中的一些评论。

“对于具有。NET和C#经验的开辟人员而言,他们但愿开辟东西能集成Microsoft手艺栈后端。Xamarin无疑是一种极好的东西。”

“通过与Xamarin的合作,我们已成功地交付了大量的挪动使用。这些使用获得了我们客户的高度赞扬。例如,有一位客户但愿仅用一般时间的一半就交付一个使用,由于该使用将在一个大型勾当中展现。恰是因为Xamarin答应我们无缝地共享代码,这使得我们可以或许在最初刻日内完成使命。客户很是欢快。面临如斯时间上的压力,利用Xamarin老是更具劣势。”

虽然Xamarin并非合用于任一挪动使用,但它简直是公司在选择挪动使用开辟中的考虑对象。使用可能会相当复杂,正如上面给出的企业案例所示。在企业情况中,Xamarin中利用C#作为首选言语,这使得其在浩繁合作敌手中脱颖而出。自Microsoft收购Xamarin以来,市场也不断连结快速的增加。对于现有客户来说,这无疑是一个好动静。

退出移动版