Xamarin是无懈可击还是鸡肋?浅谈对Xamarin的学习

微软宣布跨平台已经有几个年头,当C#代码可以在其他平台运行时,我相信对于每个热爱.net的程序猿还是十分欣慰的,最近工作需要在一直研究和学习.net的跨平台开发Xamarin,网上对其优点总结也是一大堆,什么真正的实现跨平台、什么无缝的api集成能力、丰富的UI组件等等,但经过一段时间的研究和学习,发现要学习好.net的跨平台开发Xamarin相关知识,学习成本还是挺高的,特别是对于我这种已经出来工作的人,并不是之前想象的只要会C#,就能简简单单开发出可以在Windows,IOS,Android各个平台运行的APP,目前所谓的.net跨平台开发,只是把所有java(Android)和object c,swift(IOS)替换成了C#的版本,其次把各平台能公用的代码、api都共享。各个平台之间也还是有需要单独维护的部分的。要学习.net的跨平台开发,对于一个合格的.net程序猿来说,首先要学习xaml,其次良好的MVC,MVVM设计模式相关的技术思想也是必不可少的,然后对Android,IOS,Linux相关的运行机制以及基础原理的学习也都是很重要的(想想国内都有Android,IOS专门的程序猿,光这两块的入门学习就可想而知),因此有人说相比较目前国内主流APP——Android,IOS,Windows都由各自的团队开发而言Xamarin其实是个鸡肋,因为对于个人而言它的学习成本并不会太低,而且由于起步较晚,目前国内主流公司APP都是各平台各自团队单独维护,用Xamarin.Froms开发的很少,开发时遇到坑了,学习和讨论的社区相对也会较少,对于企业而言如果企业有能力支持更多的团队、更多的技术各自维护自己平台的APP当然更好。
那是不是就没有学习它的必要了呢?其实我个人还是很喜欢而且也很乐意学习它的。
原因如下:
1,学习它在同类型的.Net程序员中更具有竞争优势。
2,分分钟转型其他技术 (如果真有一天因为公司需要或者其他外部因素影响真需要转为其他语言的开发,如果你之前有学习过Android,IOS,Linux相关的运行机制以及基础原理,那么我想上手另一门语言的开发也会是很容易上手的,毕竟技术其实是相通的)
3,对于一个企业而言,所有的平台尽可能的用同一门语言开发未必是件坏事,这样可以极大的提高开发人员的易用性,老板也是乐意的,这也许没准是未来企业开发软件的一种趋势。
Xamarin是无懈可击还是鸡肋?浅谈对Xamarin的学习的更多相关文章
- 浅谈我的MongoDB学习(二)
上一篇简单讲了mongodb的安装,mongo的windows服务安装,这样服务器重启windows服务会自动重启mongodb的server,然后我们就可以用客户端去管理数据了.mongodb客户端 ...
- 浅谈我的MongoDB学习(一)
这是第一次写博客,不当之处敬请见谅,最近由于项目需要,对mongodb略有研究,网上也有一些相关资料,下面是我自己摸索的一些东西,希望能跟大家分享一下当然,这也是我自己第一次在项目中使用,若理解有误, ...
- 浅谈Java的主要学习要点_上海尚学堂java培训课程思维导图
Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...
- 浅谈:从为什么学习python到如何学好python
虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...
- [2009国家集训队]小Z的袜子(hose) 浅谈莫队
浅谈莫队 推荐学习博客 http://foreseeable97.logdown.com/posts/158522-233333 借用题目: bzoj 2038 2009 国家集训队 小Z的袜子htt ...
- scrapy分布式浅谈+京东示例
scrapy分布式浅谈+京东示例: 学习目标: 分布式概念与使用场景 浅谈去重 浅谈断点续爬 分布式爬虫编写流程 基于scrapy_redis的分布式爬虫(阳关院务与京东图书案例) 环境准备: 下载r ...
- 浅谈配置chrome浏览器允许跨域操作的方法
浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...
- 浅谈C++三层架构
浅谈C++三层架构 三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control). web开发中的三层架构是指:数据访问层 ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
随机推荐
- C# winform嵌入unity3D
最近做项目需要winform嵌入unity的功能,由于完全没接触过这类嵌入的于是在网上搜,有一种方法是UnityWebPlayer插件,也开始琢磨了一段时间,不过一会发现在5.4版本以后这个东西就被淘 ...
- Linux_CentOS-服务器搭建 <三> 补充
今天 才发现,服务器上 JDK 都没有好好的安装下.在这里补充说下. 1.看看机子上JDK的安装了多少 $ rpm -qa |grep java 会出现类似: java-1.6.0-openjdk-1 ...
- maven自动部署项目以及常见问题解决
Maven自动部署war到Tomcat1. 在maven项目的pom里配置如下信息 <build> <finalName>dianxiao</finalName> ...
- TensorFlow学习笔记(1):variable与get_variable, name_scope()和variable_scope()
Variable tensorflow中有两个关于variable的op,tf.Variable()与tf.get_variable()下面介绍这两个的区别 使用tf.Variable时,如果检测到命 ...
- 将文件内容隐藏在bmp位图中
首先要实现这个功能,你必须知道bmp位图文件的格式,这里我就不多说了,请看:http://www.cnblogs.com/xiehy/archive/2011/06/07/2074405.html 接 ...
- netty源码解解析(4.0)-5 线程模型-EventExecutorGroup框架
上一章讲了EventExecutorGroup的整体结构和原理,这一章我们来探究一下它的具体实现. EventExecutorGroup和EventExecutor接口 io.netty.util.c ...
- 新建 .NET Core 控制台项目
1. 安装 .NET Core SDK 1.0 参考微软官方网站 https://www.microsoft.com/net/download/windows 2. 打开命令提示符:输入以下代码验证S ...
- c# Datatable导出Excel
using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; ...
- 如何在 ASP.NET Core 测试中操纵时间?
有时候,我们会遇到一些跟系统当前时间相关的需求,例如: 只有开学季才允许录入学生信息 只有到了晚上或者周六才允许备份博客 注册满 3 天的用户才允许进行一些操作 某用户在 24 小时内被禁止发言 很显 ...
- Java集合之LinkedList源码分析
概述 LinkedLIst和ArrayLIst一样, 都实现了List接口, 但其内部的数据结构不同, LinkedList是基于链表实现的(从名字也能看出来), 随机访问效率要比ArrayList差 ...