现在开发app也好,桌面程序也好,有很多不同的技术可以选择。那么,什么时候应该选用Xamarin呢?

5 questions to consider before choosing Xamarin

1 是否需要跨平台?

根据公司情况、团队大小。如果每个平台有足够的开发人员,那么就不需要跨平台了。如果一共也就那么一两个人,需要开发安卓、iOS app,那么跨平台可能是一个比较好的选择。如果还要开发uwp程序,Xamarin就又有优势了。

如果不需要跨平台,就不必选用Xamarin了。

2 是否同时还要开发桌面程序,Windows? Mac?

如果同时还需要开发桌面程序(Windows或Mac),跨平台的概念也就更大了。这时Xamarin会是个比较好的选择。因为Xamarin的xaml和Windows很接近,和Windows 10 UWP中Xaml更接近。而且Xamarin还有支持wpf的计划,Xamarin在mac上的预览版也已经出来。详见  Glimpse the Future of Xamarin Forms 3.0

所以如果还跨平台到Windows Mac,Xamarin的优势就彻底发挥出来了。

当然这里还得提一下JavaScript的的electron

3 已有的技术储备是什么,熟悉什么编程语言平台?

有的人说编程语言不重要,2个星期任何语言都搞定。这里说的是泛义上的编程语言,包括它的各种lib支持,思考方式。各种模块是否已经有成熟的实现,网上是否有各种例子。真正熟悉到相关的编程生态,2-3年不为过。

如果是从c#过来的,和Xamarin会天生好感,里面async await用的很溜啊。网上各种跨平台的c#库也很多。如果还有很多既有的模块是c#开发的,比如通讯协议,商业逻辑,那么选Xamarin想都不用想。

如果是从web技术过来的,熟悉javacript,react native倒是个不错的选择。好像javascript老是被提及啊?是的。javaScript在问题1 2 3 4里都是个不错的选项,就看你喜不喜欢这个语言了。

从java过来的呢?老老实实研究android专一平台,就不要趟跨平台的水了。研究kotlin也行啊。

c++过来的呢?回到第一个问题,先回答那个问题。

python 和 go呢?这么高大上的,往AI、cloud看看吧,别走弯路了。

那么Xamarin适合谁呢?熟悉或者愿意学习c#语言的,大多也就是原Windows程序员或asp.net程序员,团队不大,必须跨平台开发。现有一些c#开发的代码或者库可以复用。

下面还有两个问题,可以考虑一下。如果有共鸣,也算加分项。

4 Declarative UI

什么是declarative ui呢?就是UI的编写是申明一样的。Android的axml/xml是,web中的html、css都是;MFC严格的说不算,wpf的xaml算;iOS里面那个啥storyboard, xcode的Interface Builder都不算。qt的qml算。

其实UI的发展,web是走在前面的,wpf android qt都跟上了,xcode原地踏步,听说很多人都是用代码直接写UI的,高手啊。

Xamarin.Forms是用的xaml, 编写的时候是申明式的,后台会用原生的控件来显示。这也是为什么Xamarin强调自己是native app的原因之一。

另外,使用Xamarin,不一定要用Xamarin.Forms,完全可以用native的Xamarin,继续使用Android的xml文件来写UI,或者继续用interface builder。这种情况下,Xamarin只起到了一个编译语言的作用,然后把java class/api搞了一个一一对应的c#版本。熟悉Android api的可以用这种方式写。一一对应的哪种程度呢?看文档查好java api,直接写Xamarin c#代码没任何问题。objective c麻烦一点,swift的api文档转c#基本可以看懂。

iOS写UI是最烦的,没有之一,比mfc还烦。最敬仰iOS里写UI的大拿们。

如果UI需要更复杂一些,甚至每个版本都要变,就像常用的jd taobao,用web技术的react native就有优势了。

5 MVVM

没听说过的可能不知道它的强大,一旦熟练使用后,在更换任何一个技术时都会查一下新技术是不是支持mvvm。它和declarative UI是同时发威的,利用bingding,把ViewModel独立出来更好的跨平台,简化UI的编写工作,是跨平台程序写平台无关代码的利器。

MVVM由wpf开创,Xamarin.Forms很好的继承了这一点。现在Android也在学data binding哦。

选一门技术,要分析要开发的产品的特点,如何提高开发效率。不同的选择,可能是成倍的效率差别。Xamarin可以在某些场合是个不错的选择。

什么时候该选用Xamarin?的更多相关文章

  1. 1、 小白带你入坑xamarin系列之环境搭建和准备

    重点提示 由于xamarin发展更新很快 目前教程部分内容已经过时 请注意下载最新版本   2018.05.23 www.xamarin.com 1. 小白带你入坑xamarin系列之环境搭建和准备 ...

  2. [Architecture Design] 跨平台架构设计

    [Architecture Design] 跨平台架构设计 跨越平台 Productivity Future Vision 2011 在开始谈跨平台架构设计之前,请大家先看看上面这段影片,影片内容是微 ...

  3. 老司机学新平台 - Xamarin开发环境及开发框架初探

    随着被微软收购,最近一年间,Xamarin的火爆程度与日俱增.免费.更好的VS2015集成.更好的模拟器,甚至,在windows上运行和调试iOS平台程序,让我这样接触了十几年.NET平台的老司机,即 ...

  4. Mono、Unity和Xamarin三者关系

    1.Mono: .net是微软出的标准.如果站在Mono的角度来说,这套标准能规定编译器产生一些符合一定条件的文件出来,这些中间文件最后在目标平台上被解析成跟机器相关的东西.问题是,开始只有Windo ...

  5. 使用Xamarin实现跨平台移动应用开发(转载)

    刚在朋友圈看到张善友,转发的一条分享“使用Xamarin实现跨平台移动应用开发”,写的确实很详细得体,从收费到开源,这段时间xamarin受到不少质疑,如此文http://blog.csdn.net/ ...

  6. 教程:如何手动安装Xamarin与Xamarin for VisualStudio

    [2016/4/17更新:如果你下载后发现仍然需要付费才能编译Android/iOS APP,请到文章最下面更新Xamarin for VS和Xamarin Studio到最新的版本.Build201 ...

  7. Xamarin.Forms之XAML

    官网参考 XAML基础知识 XAML(eXtensible Application Markup Language)可扩展应用程序标记语言,允许开发者在Xamarin.Forms应用中采用标记而不是代 ...

  8. Xamarin+Prism开发详解六:DependencyService与IPlatformInitializer的关系

    祝各位2017年事业辉煌!开年第一篇博客,继续探索Xamarin.Forms… 为什么我做Xamarin开发的时候中意于Prism.Forms框架?本章为你揭晓. 实例代码地址:https://git ...

  9. xamarin DependencyService源码阅读

    xamarin在面对PCL无法实现的各平台特有功能时使用了一种叫[DependencyService]的方式来实现.它使得xamarin能像原生平台一样做平台能做到的事情!主要分四个部分 接口:定义功 ...

随机推荐

  1. RabbitMQ基础

    上一博客把RabbitMQ的安装配置介绍了下,今天主要是介绍下RabbitMQ的一些基础名词. 一.什么是RabbitMQ?用它能做什么? 1.简介 AMQP,即Advanced Message Qu ...

  2. cmd中关闭windows2008错误弹窗

    net stop sharedaccess reg add HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Windows /v ErrorMode / ...

  3. [Cake] 0.C# Make自动化构建-简介

    0.Cake是什么? Cake是C# Make的缩写,是一个基于C# DSL的自动化构建系统.它可以用来编译代码,复制文件以及文件夹,运行单元测试,压缩文件以及构建Nuget包等等. 熟悉大名鼎鼎的M ...

  4. __call()和__callStatic()实例详解

    <?php class Demo { //第一个参数是方法名,第二个参数是方法参数,以数组形式传入 public function __call($method,$args) { //遍历参数$ ...

  5. 2017最新最稳定的彩票源码PHP+mysql 新增彩种+全新界面

    网站后台管理系统:新闻资讯系统 用户管理系统用户登录日志彩种规则说明玩法时间设置彩票期号管理足球对阵管理彩票方案撤单彩票出票管理开奖号码管理彩票方案查询彩票中奖查询 彩票追号查询服务支持中心财务中心管 ...

  6. Microsoft Windows 2003 SP2 - 'ERRATICGOPHER' SMB Remote Code Execution

    EDB-ID: 41929 Author: vportal Published: 2017-04-25 CVE: N/A Type: Remote Platform: Windows Aliases: ...

  7. CVE-2014-0038内核漏洞原理与本地提权利用代码实现分析 作者:seteuid0

    关键字:CVE-2014-0038,内核漏洞,POC,利用代码,本地提权,提权,exploit,cve analysis, privilege escalation, cve, kernel vuln ...

  8. docker对cpu使用及在kubernetes中的应用

    docker对CPU的使用 docker对于CPU的可配置的主要几个参数如下: --cpu-shares CPU shares (relative weight) --cpu-period Limit ...

  9. jquery之效果操作

    jQuery操作之效果 效果一共分五大类 一.基本 二.滑动 三.淡入淡出 四.自定义 五.设置 咱们先来看一下基本类 一.基本又分为 show() hide() toggle() html代码 &l ...

  10. 自定义ScriptableObject属性显示

    自定义ScriptableObject属性显示的三种方式 1. 继承Editor,重写OnInspectorGUI方法 Editor官方文档 需求 将TestClass中intData属性和strin ...