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. NIO/BIO

    NIO/BIO    BIO网络通信        概述            网络编程的基本模型是Client/Server模型,也就是两个进程之间进行相互通信,其中服务端提供位置信息(绑定的IP地 ...

  2. 【spring】从简单配置使用到深入

    一.使用前的配置 1.maven引入需要的jar包 <properties> <spring.version>4.1.6.RELEASE</spring.version& ...

  3. jsbridge的js封装

    /*注意:源生app需要配置jsbridge的环境,而在前端页面中需要下方封装代码,既可以达到调用app方法的功能和注册供app调用的方法1.注册方法:注册后,供app调用,注册时,同名函数,下一个会 ...

  4. linux运维工程师面试题收集

    面试必考 mysql5和mysql6 有什么区别 mysql-server-5.5:默认引擎改为Innodb,提高了性能和扩展性,提高实用性(中继日志自动恢复) mysql-server-5.6:In ...

  5. 浅谈《think in java》:一 对象导论总结

    清单1. 抽象机制,面向对象程序设计方式 java所基于Smalltalk的特性表现一种纯粹的面向对象设计方式: 万物都是对象 程序是对象的集合(容器),他们通过发送消息(发送请求)来告知彼此所要做的 ...

  6. 在Mac下连接阿里云服务器

    1.登录 ssh root@IP地址 eg:00.00.00.00 2.新建用户 useradd -d /home/用户名 -m 根目录名 (这条命令,就是创建一个新用户,并给该用户在home目录下创 ...

  7. python练习七—P2P下载

    最近有些事儿比较忙,python的学习就断断续续,这个练习来得比预期的晚,不过还好,不管做什么,我都希望能认真对待,认真做好每一件事. 引入 这个练习原书中称作“使用XML-RPC进行文件共享”,题目 ...

  8. c#调用c++ dll的一个例子

    1.创建一个简单的c++ 项目生成动态库. Vs 创建完工程后,打开SampleOperation.cpp文件,看到有个导出函数的例子. 复制这段代码, 修改函数(返回值, 参数列表, 函数的实现) ...

  9. RabbitMQ系列(六)你不知道的RabbitMQ集群架构全解

    前言 本文将系统的介绍一下RabbitMQ集群架构的特点.异常处理.搭建和使用中要注意的一些细节. 知识点 一.为什么使用集群? 二.集群的特点 三.集群异常处理 四.集群节点类型 五.集群搭建方法 ...

  10. 基于FineUIMVC的代码生成器(传统三层)v1.0

    三层我就不说了,主要是看框架思路可扩展.以前用FineUI开源版写过一版,修修改改自己用了,没有特意的整理,FineUIMVC开发还是比较快,移植了一下两天就弄完了,算是一个对新手有用的工具,先放出第 ...