Xamarin,因为客户公司要节省成本,想提高开发效率,这样,我接触了这东西。
很早就听说这家伙了,那是做Android开发的时候,这家伙把广告打得好响,去看了一下,貌似愿景很美好,可是一看见授权费用这么惊人之后,立马摇头,再也没看过。而这段时间因为客户公司的要求,想在技术成本及开发上取得一些便利,于是听了微软推销人员的话,想在这上面做一些尝试,于是乎自己便再次接触这东西。
Xamarin设想得想当美好,它的意思就是,无论是iOS平台亦或是Android平台,它们在业务方面都是一致的,只是因为Android和iOS开发语言的不同,而使用C++的话会使得开发这些共用的业务逻辑的代码成本过高,于是它想利用Mono可移稙性,统一所有平台都使用C#这种语言,将共用的业务逻辑统一写在一个模块中,而各个平台的应用另写模块,却共用这个业务模块,这样可以省下大量的开发工作,特别是Android和iOS开发时因为业务理解不一或实现不一导致的不一至的业务行为和结果。这是相当理想化的设想,而且很多工作都可并行合作。
但是这个想法太不切实际。这里就列几点吧。
Android或iOS平台上该要学习的知识点,你都得学习一遍。也就是说,别以为你懂个C#就行,你如果想进行Android开发,你还得会Java语言,并且了解Android开发环境里的一切,包括API,相关运作机制。这样的话,你得了解更多的东西,你才能在Xamarin上开发你想要的东西,也就是说,你得先是一个Android开发人员,然后才能是使用Xamarin开发的人员。
API虽然做了一对一的映射,可是却是迟滞的,也就是说,你使用的API不可能立即和官方同步。而且因为Xamarin的实现机制,有些东西并没有很好地实现,比方说iOS的已经使用了ARC,而Xamarin使用的还是自行释方这些资源,虽然C#语言可以垃圾收集,可是关于UI这一块的实现却是老旧的自行释放方式。再比方说iOS排版,Xamarin仍是使用Frame这样的方式,而不是使用Autolayout。
第三方库支持的不行。开发惯iOS的程序员都知道个cocoapods这个东西,它可以帮我们管理第三方库,而在iOS上开发效率上,这些第三方开发库起到了决定性的作用,Android也是同样的。然,在Xamarin中,你必须要抛弃这些,也就是说,某种程度上你是在废了自己武功之后再去和高手较量。当然,如果你在Xamarin上积累了大量的Xamarin库,那还好,可是这毕竟是少数,Xamarin是绝对小众的东西,从某个意义上讲,这是不可能实现的。
从职业前途而言,你认为Android开发人员或者是iOS开发人员会SB到转到这个上面吗?
实在是无奈,年后就要实施这个东西,狗日的。