Xamarin:与原生SDK和基于JS的框架进行比较

Chr*_*sco 8 c# android xamarin.ios ios

因此,使用所提供的原生SDK编码的主要特征之一Android,并iOS是,你得到的不仅是更好的性能,而且每个平台的外观和感觉的事实:比如,上iOS,一个选项卡的导航栏会位于屏幕的底部,而Android它位于顶部(是的,我知道它也可以是顶部底部,但你得到了我的观点),或者导航抽屉底座是一种Android导航风格(到目前为止)据我所知)在iOS原生sdk中没有类似的东西.我的观点是,您可以通过设计指南感受平台的不同,这是一件好事,因为它使您的应用看起来很专业.

因此,考虑到性能和保持应用程序的感觉,使用基于JS的框架(如TitaniumPhoneGap)将无法做出明智的选择.

然后来了Xamarin.正如我在这里读到的那样:Xamarin如何获得原生的外观和感觉?它似乎是C#原生SDK 的包装器,据我所知,它不应该影响性能.但是外观和感觉部分在哪里.由于XML布局并不完全是它们给出的感觉AndroidiOS应用程序的感觉,而且导航(来自控制器类)的Xamarin如何处理这些?据说在他们的网站上你可以在平台之间共享代码,但这也意味着我必须共享导航系统和类似的?

最后,为了"不为每个平台编写代码",不值得使用原生SDK并且Xamarin(我在为iOS和Android编写代码时没有问题),或者这个框架的目标是C#开发人员因此他们不必学习Objective-C或Android.

任何额外的解释都会很棒,并提前感谢.

asp*_*net 13

我在去年(2013年)内使用不同的组件构建了一个大型应用程序:主要是API(ASP.NET Web API => C#),网站(ASP.NET MVC => C#+ AngularJS),以及Android应用程序(Xamarin.Android => C#)和iOS(Xamarin.iOS => C#).使用Xamarin的决定有其优点和缺点,但总而言之,我对此感到非常满意.

正如您在上面的列表中所看到的,几乎所有内容都是使用C#完成的(好吧,网站主要使用JavaScript编写;-)).它是一种非常好的成熟语言,具有非常好的功能(如LINQ).在我的场景中,它变得清晰:我不需要学习和完善四种语言(Swift/Objective-C,Java,C#,JavaScript),但只有两种:C#和JavaScript.

关于代码共享方面尤其如此:我们的客户端应用程序并不是真正的瘦客户端,因为某些离线功能需要大量的同步逻辑,因此两个应用程序的UI部分只是奖牌的一面.事实证明,我真的可以在iOS和Android上使用90%的非接口代码.这是一个非常巨大的好处,因为它不仅涉及Swift/Objective-C或Java的一些语言原创性,还涉及您在iOS和Android上使用的不同框架.要使用.NET Framework/Mono作为每个Xamarin应用程序的基础,您可以从底层操作系统中抽象出数据访问或网络通信等内容.

在速度和UI方面,您没有任何缺点,因为您使用本机API 1:1.无论在iOS还是Android上都可以通过Xamarin获得.每当Apple发布新版本的iOS时,Xamarin将在几天内发布更新,因此您无需等待Apple能够使用新推出的功能.

Xamarin在iOS上使用了一种名为Ahead of Time Compiling的技术,因此您在C#中编写的所有内容在部署到您的设备之前都会编译为本机iOS内容.这意味着"本机"Objectice-C应用程序和Xamarin应用程序之间执行的操作没有区别(除了一些小的开销,这是我的经验中不值得注意的).

在Android上即时编辑也可以与任何其他"原生"Android应用程序一起使用.

如果您使用Objective-C或Java,那就意味着您拥有所有完全相同的API和可能性.您甚至可以使用相同的对象来构建具有完全相同类型和名称的UI(有时稍微优化;)).因此,如果您想为应用程序选择标签栏 - 您可以使用UITabBarController.请参阅iOSXamarin.

在与Xamarin合作多年后,我只有一个缺点:

可能的内存泄漏.他们的整个样本都有一堆关于防止内存泄漏的基本知识的废话.如果您正在使用应用程序中的媒体文件等"昂贵的资源",那么您应该从第一天开始就注意.当我的应用程序已经增长到多达35个不同(复杂)的对话框时,我不得不摆脱所有这些问题.这花了我差不多两个月,换句话说花了几千美元.他们提供了一些关于它的文档,但是这个工具很差.并且可能出现错误并且很难找到(例子).

但总而言之,这是我与Xamarin一起做出的最佳决定之一.


lea*_*ist 5

我已经和Xamarin一起编写了一段时间.到目前为止一直很棒.我遇到的任何问题都是因为c#是我的母语.Xamarin站点为所有平台上的许多功能提供了许多示例和API参考.

  1. 性能 - 使用Xamarin可以获得原生性能.无话可问.我一直在用它为我正在开发的新应用程序创建音频,视频和照片录制功能.Xamarin将c#代码处理为所有平台的本机字节代码.这是如何实现的.

  2. 看 - 你的应用程序的外观将是原生的.你必须使用Android xml格式来制作用户界面和IOS的Goes.您仍然可以像在每个平台上一样设置元素的样式.所有Xamarin都会为您提供一个事件视图.

  3. Api - Xamarin的魅力在于API.他们将整个Android和IOS名称空间移植到c#.看看他们的文档.

  4. 昂贵 - 我唯一的问题是Xamarin是昂贵的.如果你检查他们的定价,那就太离谱了.但是你得到你付出的代价.由支持支持的优质产品.

  5. C# - 夏普是一种很棒的语言,有很多支持.新的async/await可以解决整个线程管理问题.Json处理在平台上非常容易.我在Github上传了几个可用于许多应用程序的类.

如果你来自java背景,那么刷新你的c#技能将是轻而易举的.

rdio应用程序是用Xamarin创建的.在Android和IOS上下载并测试其性能并享受其原生外观.

最好的运气