微软宣布跨平台已经有几个年头,当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的学习的更多相关文章

  1. 浅谈我的MongoDB学习(二)

    上一篇简单讲了mongodb的安装,mongo的windows服务安装,这样服务器重启windows服务会自动重启mongodb的server,然后我们就可以用客户端去管理数据了.mongodb客户端 ...

  2. 浅谈我的MongoDB学习(一)

    这是第一次写博客,不当之处敬请见谅,最近由于项目需要,对mongodb略有研究,网上也有一些相关资料,下面是我自己摸索的一些东西,希望能跟大家分享一下当然,这也是我自己第一次在项目中使用,若理解有误, ...

  3. 浅谈Java的主要学习要点_上海尚学堂java培训课程思维导图

    Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言.Java 技术具有卓越的通用性.高效性.平台移植性和安全性,广泛应用于PC.数据中心.游戏控制台.科学超级计算机.移动电话和互联网,同时拥 ...

  4. 浅谈:从为什么学习python到如何学好python

    虽然目前的编程语言有很多,但是基础语法上的概念,本质上都是相通的.可以做到一通百通.所以没有必要为了学哪门语言纠结太多. python是目前市面上,我个人认为是最简洁&&最优雅& ...

  5. [2009国家集训队]小Z的袜子(hose) 浅谈莫队

    浅谈莫队 推荐学习博客 http://foreseeable97.logdown.com/posts/158522-233333 借用题目: bzoj 2038 2009 国家集训队 小Z的袜子htt ...

  6. scrapy分布式浅谈+京东示例

    scrapy分布式浅谈+京东示例: 学习目标: 分布式概念与使用场景 浅谈去重 浅谈断点续爬 分布式爬虫编写流程 基于scrapy_redis的分布式爬虫(阳关院务与京东图书案例) 环境准备: 下载r ...

  7. 浅谈配置chrome浏览器允许跨域操作的方法

    浅谈配置chrome浏览器允许跨域操作的方法 一:(Lying人生感悟.可忽略) 最近有一天,对着镜子,发现满脸疲惫.脸色蜡黄.头发蓬松.眼神空洞,于是痛诉着说生活的不如意,工作没激情,工资不高,一个 ...

  8. 浅谈C++三层架构

    浅谈C++三层架构 三层架构并不是MVC,MVC是一个很早就有的经典的程序设计模式,M-V-C分为三层,M(Model)-V(View)-C(Control). web开发中的三层架构是指:数据访问层 ...

  9. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

随机推荐

  1. Django--Auth 模块

    1 Auth模块是什么 Auth模块是Django自带的用户认证模块: 我们在开发一个网站的时候,无可避免的需要设计实现网站的用户系统.此时我们需要实现包括用户注册.用户登录.用户认证.注销.修改密码 ...

  2. .net core内部分享ppt

    Microsoft .NET 自 2002 年发行 v1.0 以来,已经过了近 14 个年头,在这 14 年里面,.NET 日渐成熟并成为 Microsoft 的重要开发平台之一,只要是在 Windo ...

  3. SQL 必知必会·笔记<9>使用子查询

    子查询(subquery),即嵌套在其他查询中的查询. 1. 利用子查询进行过滤 SELECT 语句中,子查询总是从内向外处理.示例: SELECT cust_name, cust_contact F ...

  4. spring boot整合JMS(ActiveMQ实现)

    pom依赖如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="ht ...

  5. Java 使用 happen-before 规则实现共享变量的同步操作

    前言 熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen-before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结 ...

  6. layui 文字滚动

    将消息标题滚动 上面是效果 <li class="layui-nav-item"> <div class="layui-carousel" i ...

  7. ILSpy

    今日为找泛型序列的一个Select方法源码,就去找了个ILSpy反编译工具. 工具下载地址:http://www.fishlee.net/service/softarchive/57,一般选择较新的. ...

  8. U盘基本处理,U盘与移动固态硬盘

    一.辨别 USB2.0 和 USB3.0 1.从USB外观上来看,USB2.0通常是白色或黑色,而USB3.0则改观为“高大上”的蓝色接口. 目前,部分笔记本电脑USB接口,已同时提供对USB2.0及 ...

  9. js 日期格式转换(转载)

    1.当前时间转为 “yyyy-MM-dd HH:MM:SS” function getNowFormatDate() { var date = new Date(); var seperator1 = ...

  10. Receiver 和 Direct方式的区别

    Kafka direct 跟receiver 方式接收数据的区别? Receiver是使用Kafka的高层次Consumer API来实现的.Receiver从Kafka中获取的数据都是存储在Spar ...