Xamarin 介绍

  Xamarin 是一个允许开发人员有效创建可跨 iOS、Android、Windows 应用程序的开发工具集。Xamarin是免费开源的,遵循 MIT (麻省理工学院许可证)协议,在github上的地址为:https://github.com/xamarin 。官方网站为:http://xamarin.com

  简单的来说,Xamarin 使我们可以使用 C#,F#,VB.NET 等语言开发原生 iOS、Android、Windows 应用程序

传统移动开发流程

  开发一个传统的移动开发程序都会有一些流程。比如像打开IDE,拖一些控件,编写逻辑,然后测试,发布。这些非常简单一两个小时就可以折腾完成。

  但是,如果要开发一些大型的,商业级的移动应用程序就需要一些专业的开发流程。比如需求分析,UX 设计,UI 设计,开发,可用性测试,性能测试,以及数以千计的设备进行测试,再使用不同部署方式完成部署。

创建 UX 原型时,需要考虑应用所面向的各种平台的界面指南,这一点十分重要。

iOS 使用左滑编辑,Android 使用长按弹出编辑框,不同平台的设计语言都有差异。

设备有不同的规格,平板,手机,尺寸等,设备也需要进行适配。

  确定了 UX 之后,下一步是创建 UI 设计。 虽然 UX 通常只是黑白原型,不过在 UI 设计阶段中会引入并最终完成颜色、图形等。 在良好的 UI 设计上花费时间是非常重要的,通常情况下,最受欢迎的应用具有专业的设计。
  与 UX 一样,务必要了解每种平台都具有自己的设计语言,因此设计良好的应用程序在每种平台上的外观可能仍有所不同。

  确定了 UI 之后,下一步就是开发。iOS,Android,Windows 分别需要使用不同的语言或编程方式进行实现,因此需要三种不同的开发人员,来承担特定平台的开发任务。


  测试是应用得到交付过程中一个重要的环节,一个没有经过测试的应用,质量是很难得到保障。所以尤为关键。传统开发过程中,各个平台下单元测试,集成测试,性能测试都是不同的实现细节。因此跟传统开发相似,同样也需要三种平台的测试人员角色,来承担特定平台的测试任务。

Xamarin 架构

  

Xamarin 的核心包含以下及部分:

  xamarin-android : 提供 Android SDK的原生开发包,用.NET托管语言如C#,F#等可以进行 Android 应用程序开发。github地址为:https://github.com/xamarin/xamarin-android
  xamarin-macios : 提供 Mac,iOS,tvOS和watchOS的原生开发包,用.NET托管语言如C#,F#等可以进行 Mac,iOS,tvOS和watchOS 应用程序开发。github地址为:https://github.com/xamarin/xamarin-macios
  Xamarin.Forms : 提供完整的跨平台UI工具包。用C#可以进行完全原生的 Android,iOS 和通用Windows平台应用程序开发。github地址为:https://github.com/xamarin/Xamarin.Forms

通过Xamarin 能减少应用程序总代码量

  从上图我们看到,Xamarin 通过 .NET标准库实现业务逻辑层,模型层,服务访问层,数据访问层,接口层,数据层。一套代码被不同平台引用。即:多个项目共享代码,重构操作始终更新所有受影响的引用。

 
        据统计,大部分使用Xamarin技术开发的应用程序。共享代码占比高达75%。
 

Xamarin Forms 将共享代码量提升为95%

  下图是 使用 Xamarin Native 和 使用 Xamarin Forms 开发同一宽App的代码对比示意图:

  很显然使用Xamarin Forms 技术进行跨平台应用开发,将共享代码比率提升20%,达到非常恐怖的95%。

总结

使用 Xamarin 开发应用程序的优点:
1.所有平台都可以使用C#编写,加速开发周期、节约成本
        Xamarin 使用C#和.Net框架来为任何移动平台创建应用程序。因此,您可以重复利用多达95%的源代码加速开发周期。Xamarin 也不需要在开发环境之间切换:您可以在 Visual Studio 中构建完全取代Android Studio , XCode 等开发环境。跨平台开发工具作为IDE的内置部分提供,无需额外费用。同时,我们使用 Xamarin 将无需再招聘Android、iOS、MacOS,Windows Phone 等开发人员,可以在一定基础上节约人力成本。
 
2.性能接近原生
        与基于Web技术的传统混合解决方案不同,Xamarin 构建的跨平台应用程序仍然可以归类为原生应用程序。性能指标与 Android的Java(如此处所述)和 Objective-C或 Swift 的性能指标相当,可用于本机iOS应用程序开发。而且,Xamarin 的性能不断得到改进,完全符合原生开发的标准。
 
3.本地用户体验
        Xamarin 本身就是原生技术,因此通过 Xamarin 编写的 UI 能够达到跟原生一模一样的 UI 体验。
 
4.全面的硬件支持
        Xamarin 消除了所有硬件兼容性问题,使用插件和特定的API,以便在平台上使用通用设备功能。随着访问平台特定的API,Xamarin 支持与本地库链接。这可以提供更好的定制和原生级功能,而且开销很小。
 
5.开源技术与强大的企业支持
        Xamarin 于2016年2月被微软收购后,Xamarin 许可政策发生了根本性的变化。包括运行时,库和命令行工具在内的 Xamarin SDK 已经成为开放源码,并且作为Visual Studio的一部分,可以在 MIT 许可下使用。通过消除许可证的主要障碍和成本,微软为平台的进一步发展铺平了道路。另外,由微软领导,并受到Unity,JetBrains和Red Hat,.NET基金会和 Xamarin 的支持,特别是已经成为一个可靠和强大的技术堆栈。
 
6.如果你穷又想自己搞创业项目选择Xamarin吧
        Xamarin的牛B之处就在于,只要你是一个高级C#开发人员,当你想创业的时候,你再也不用去求Android开发人员帮你写代码,iOS开发人员帮你写代码,你自己就可以搞定。求别人帮你写,你总要付出成本的。按照北京Android,IOS开发人员的工资来说。一个月3万块吧。对于个人创业者来说,已经是很多钱了。当你的项目融到资了,如果你觉得Xamarin是垃圾,再换平台也都来得及。
 
使用 Xamarin 开发应用程序的缺点:
1.稍微延迟支持最新的平台更新
        Xamarin 是否能及时支持各个平台,完全取决于 Xamarin 开发团队。第三方工具不可能为最新的 iOS 和 Android 版本提供即时支持:实施这些更改和/或引入新的插件等需要一些时间。尽管 Xamarin 声称提供当天的支持,但仍然可能有些延误。
 
2.对开源库的访问受限
        使用 Xamarin,您只能使用平台提供的组件和一些.Net开源资源。尽管选择并不像Android和iOS移动应用程序开发那样丰富,但Xamarin组件提供了数千个自定义UI控件,各种图表,图形,主题和其他强大的功能,可以仅添加到应用程序中点击次数很少。这包括内置支付处理(如Stripe),信标和可穿戴设备集成,开箱即用推送通知服务,云存储解决方案,多媒体串流功能等等。
 
3.生态系统问题
         显然,Xamarin 社区比iOS或Android的小得多。因此,找到一个有经验的Xamarin开发人员可能是一个挑战。虽然该平台在微软的支持下正在增长。根据不同来源的信息,Xamarin社区占全球移动开发社会的10%,在中国的比例更少。尽管Xamarin工程师的数量与iOS或Android本地社区无法比较。但是有经验丰富的C#/ .Net工程师学习Xamarin的曲线是很小的。
 
4.应用程序安装包稍微会大一些
         根据其类型和复杂性,Xamarin应用程序通常比本地应用程序大(后者可能是Xamarin应用程序的一半大小)。Android的一个简单的“hello,world”应用程序最多可能需要16 MB,其中大部分应用于关联的库,内容,Mono运行时和Base Class Library(BCL)程序集。
 

参考资料:

[1] Xamarin官方英文文档  来源:https://docs.microsoft.com/en-us/xamarin/

如果你觉得本篇文章对您有帮助的话,感谢您的【推荐】。

如果你对 .NET 或 Xamarin 有兴趣的话可以关注我,我会定期的在博客分享我的学习心得。

本文地址:http://www.cnblogs.com/hexu6788/p/9916038.html

作者博客:何旭

欢迎转载,请在明显位置给出出处及链接

快速开发跨平台应用之Xamarin技术的更多相关文章

  1. EMIS快速开发平台 - 微服务版技术选型

    http://demo.zuoyour.com/system/login EMIS快速开发平台 - 微服务版技术选型 开发框架:Spring Boot 2.1.3.RELEASE 微服务:Spring ...

  2. Sublime插件库新成员基于APICloud快速开发跨平台App

    互联网时代强调用户体验,那什么是HTML5跨平台App开发者的编程体验?“不剥夺.不替换开发者喜欢的开发工具,就是人性化的用户体验”,APICloud给出了这样的答案! 重磅发布“多开发工具支持策略” ...

  3. 开发者必知的8款App快速开发工具

    开发者必知的8款App快速开发工具 “我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了.” “APP版本迭代更新,都是企业的一道难关,没有一个一劳 ...

  4. 开发者必知的8款App快速开发工具开发者必知的8款App快速开发工具

    "我有一个好创意,就差一个CTO……" "原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了." "APP版本迭代更新,都是企业的一道难关 ...

  5. Visual Studio跨平台开发实战(1) - Hello Xamarin!

    原文 Visual Studio跨平台开发实战(1) - Hello Xamarin! 前言 应用程式发展的脚步, 从来没有停过. 从早期的Windows 应用程式, 到网路时代的web 应用程式, ...

  6. Visual Studio跨平台开发(1):Hello Xamarin!

    前言 应用程序发展的脚步, 从来没有停过. 从早期的Windows 应用程序, 到网络时代的web 应用程序, 再到近几年相当盛行的行动装置应用程序(Mobile Application), 身为C# ...

  7. Xamarin技术文档------VS多平台开发

    此技术业余时间研究,仅供大家学习参考,不涉及深入研究,有一定开发基础的人员,应该都能较快上手. 一.简介 Xamarin始创于2011年,旨在使移动开发变得难以置信地迅捷和简单.Xamarin的产品简 ...

  8. 快速打造跨平台开发环境 vagrant + virtualbox + box

    工欲善其事必先利其器,开发环境 和 开发工具 就是 我们开发人员的剑,所以我们需要一个快并且好用的剑 刚开始做开发的时候的都是把开发环境 配置在 自己的电脑上,随着后面我们接触的东西越来越多,慢慢的电 ...

  9. Sublime用户如何快速高效开发跨平台App

    2015年9月15日,APICloud举办了一周年开源分享会,发布开源插件支持Sublime用户开发跨平台App,APICloud 开源技术负责人周兴海分享了Sublime关于插件方面相关的内容. S ...

随机推荐

  1. Python 中的object takes no parameters错误

    Python是一门面向对象的语言,中我们首先创建一个类: class Student(object): def _init_(self,name,score): self.name = name se ...

  2. 人脸识别&ORC的Demo

    一.用到的jar包: face_sdk-1.3.4.jar json-20160810.jar ocr_sdk-1.3.4.jar 下载地址:https://files.cnblogs.com/fil ...

  3. "i=i++"在java等高级语言的解释

    前言 最近学习我在的团队招人,面试.我出了一道c的题. int main(){ ; i+=++i; printf("%d",i); } 别喷!今晚学长们说,java,c#中完全不同 ...

  4. Chapter 4 Invitations——3

    Edward was never surrounded by crowds of curious by standers eager for his firsthand account. Edward ...

  5. web进修之—Hibernate 类型(4)

    本片包含Hibernate的两种类型的简单介绍和集合类型的映射. Hibernate中的两种类型: Entity 自己掌控自己的生命周期,比如Person有addrss属性(关联到另外一张表).age ...

  6. 【SqlServer系列】远程访问

    1   概述 已发布[SqlServer系列]文章如下: [SqlServer系列]SQLSERVER安装教程 [SqlServer系列]数据库三大范式 [SqlServer系列]表单查询 [SqlS ...

  7. shell中$后加引号有什么用($"string"和$'string')

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 有些时候在某些服务管理脚本中看到$"$string& ...

  8. spark之JDBC开发(连接数据库测试)

    spark之JDBC开发(连接数据库测试) 以下操作属于本地模式操作: 1.在Eclipse4.5中建立工程RDDToJDBC,并创建一个文件夹lib用于放置第三方驱动包 [hadoop@CloudD ...

  9. [android] 安卓进程优先级&为什么使用服务

    应用程序:一组组件(activity service provider receiver)的集合 一般情况下,一个应用程序对应一个进程 一般情况下,关闭掉应用,关闭掉所有界面,应用程序的进程还在后台运 ...

  10. Failed at the @ watch script 'cross-env NODE_ENV=development 使用cross-env解决跨平台设置NODE_ENV的问题

    今天在安装js依赖包时,根目录的package.json: { "private": true, "scripts": { "dev": & ...