什么时候该选用Xamarin?

现在开发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可以在某些场合是个不错的选择。

时间: 2024-10-15 22:57:02

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

[Architecture Design] 跨平台架构设计

[Architecture Design] 跨平台架构设计 跨越平台 Productivity Future Vision 2011 在开始谈跨平台架构设计之前,请大家先看看上面这段影片,影片内容是微软在2011年所描绘的未来生活蓝图.在观看的过程中,请大家以「软件开发人员」的角度来思考,想想软件开发人员在其中扮演甚么样的角色. 「Productivity Future Vision 2011」 这段影片里面所描绘未来产品,把时间轴拉到现在来看,其实有许多概念已经悄悄融入我们的生活之中.像是影片

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

[2016/4/17更新:如果你下载后发现仍然需要付费才能编译Android/iOS APP,请到文章最下面更新Xamarin for VS和Xamarin Studio到最新的版本.Build2016后发布的版本移除了付费的限制(真正完全免费随便用啦)] 虽然现在Xamarin已经合并到VS2015 Update2安装包里面了,但是实际上被合并进去的仍然只是个Online installer而已,对于广大天朝.NET码农来说,成功下载安装仍然是可望而不可及的. 而手动安装所有组件可以将Xama

Mono、Unity和Xamarin三者关系

1.Mono: .net是微软出的标准.如果站在Mono的角度来说,这套标准能规定编译器产生一些符合一定条件的文件出来,这些中间文件最后在目标平台上被解析成跟机器相关的东西.问题是,开始只有Windows上才能运行.net标准的代码.因为其他如Linux之类的机器上没有相应的基础库和相关的执行文件来解析这种标准下的东西.所以,就产生了Mono.Mono的目标是在尽可能多的平台上使.net标准的东西能正常运行的一套工具,叫framework也好,叫库也好,核心在于“跨平台的让.net代码能运行起来

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

刚在朋友圈看到张善友,转发的一条分享“使用Xamarin实现跨平台移动应用开发”,写的确实很详细得体,从收费到开源,这段时间xamarin受到不少质疑,如此文http://blog.csdn.net/aofengdaxia/article/details/41891945/.当然这篇随笔也是转载的(如果不写成随笔,大伙可能看不到这篇文章).希望那些已经入坑xamarin的开发者能有一个新的认识 原文链接:http://www.infoq.com/cn/articles/mobile-cross-

Xamarin Android 应用程序内图标上数字提示

最近在用 Xamarin 做一个 Android 应用,打开应用时,如果有新消息,需要在应用内的 Toolbar 或者首页的图标上显示数字提示.在这里和大家分享一下实现方法,如果你有更新好的实现方法,欢迎分享. 类似推特客户端的新消息提醒 解决思路:把图标和数字提示文本放在 RelativeLayout 或 FrameLayout 内,把文本放在右上角. 实现代码: 新建一个 Xamain Android 项目,打天 Main.axml 文件,首先添加一下 Toolbar,<android.su

用Xamarin和Visual Studio编写iOS App

一说开发 iOS app,你立马就会想到苹果的开发语言 Objective C/Swift 和 Xcode.但是,这并不是唯一的选择,我们完全可以使用别的语言和框架. 一种主流的替换方案是 Xamarin,这是一个跨平台框架,允许你开发 iOS.Android 和 OSX.Windows app,它使用的是 C# 和 Visual Studio.最大的好处在于,Xamarin 允许你在 iOS 和 Android app 间共享代码. Xamarin 与其他跨平台框架相比有一个最大的好处:使用

Xamarin入门浅析

1. 安装 1) 使用标准安装流程(JDK1.6 -> Android SDK -> NDK -> Xamarin Studio -> Xamarin Visual Studio) 2) Android SDK Manager更改源,可时刻保持最新,一个镜像源地址:mirrors.neusoft.edu.cn:ubuntu.buct.cn:Port: 80,Android SDK的目录结构介绍,Android的一些相关资源 (http://ubuntu.buct.edu.cn/an

如何解决Xamarin for VS:Disconnected from layout renderer

最近学习Xamarin for Android,我用的是for VS2013版本.由于开始使用的Xamarin是低版本的,所以在和VS2013配合后,可以编译,可以release,但是不能查看layout文件的布局文件.总是出现: Disconnected from layout renderer.后来从Xamarin的官网论坛上查到是因为Android SDK tools的版本过高才导致的此问题.?当时论坛的信息比较老,没有给出我当时使用版本的对应解决方案.于是我就只能自己试验了.最后结合论坛

Xamarin.Android开发音乐播放器

最近.Net开源着实让C#火了一把,好久就听说Mono for Android一直没静下心来看,上周末找来看看,确实不错,前台界面axml编写跟Java安卓开发毫无区别,后台用C#其实很多windows下的方法都可以用,做一个安卓音乐播放器,主要实现音乐播放,上一曲下一曲,音乐播放列表,随机播放,扫描SD卡内所有音乐. 先show一组界面啊,话说有图有真相啊: 项目结构如图: Lrc是歌词处理方法 MusicService是安卓服务播放音乐,服务Broadcast,以及界面接收Receiver