gpt4 book ai didi

c# - Xamarin : comparison to native SDK and JS-based frameworks

转载 作者:可可西里 更新时间:2023-11-01 03:05:32 26 4
gpt4 key购买 nike

因此,使用 AndroidiOS 提供的原生 SDK 进行编码的主要特点之一是,您不仅可以获得更好的性能,而且每个平台的外观和感觉:例如,在 iOS 上,选项卡导航栏位于屏幕底部,而在 Android 中,它位于顶部(是的,我知道它也可以是顶部 底部,但你明白我的意思),或者 Navigation Drawer dock 也是一种 Android 导航样式,而(至于我知道)在 iOS 原生 sdk 中没有类似的东西。我的意思是,您可以通过平台的设计指南感受到平台的差异,这是一件好事,因为它让您的应用看起来很专业。

因此,考虑到这一点,就性能和保持应用的感觉而言,使用基于 JS 的框架,如 TitaniumPhoneGap 不会做出明智的选择。

然后是 Xamarin。正如我在这里读到的:Xamarin how it is getting the Native Look and Feel?它似乎是原生 SDK 的 C# 包装器,据我所知,它不应该影响性能。但是外观部分在哪里。由于 XML 布局 并不完全是赋予 AndroidiOS 应用程序感觉的因素,而且导航(来自 Controller 类)如何Xamarin 处理这些?在他们的网站上说你可以在平台之间共享代码,但这是否也意味着我必须共享导航系统和类似的东西?

最后,为了“不为每个平台编写代码”,不使用原生 SDK 而使用 Xamarin 是否值得(我真的不为 iOS 和 Android 编写代码时遇到问题),或者这个框架是针对 C# 开发人员的,这样他们就不必学习 Objective-C 或 Android。

任何额外的解释都会很棒,在此先感谢。

最佳答案

我在去年(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 而言,您没有任何劣势,因为您正在 1:1 使用 native API。 iOS 或 Android 上可用的任何内容也可通过 Xamarin 获得。例如,每当 Apple 发布新版本的 iOS 时,Xamarin 都会在几天内发布更新,因此您无需等待即可使用 Apple 新引入的功能。

Xamarin 在 iOS 上使用一种称为提前编译的技术,因此您在 C# 中编写的所有内容都会在部署到您的设备之前编译为 native iOS 内容。这意味着“ native ”Objectice-C 应用程序和 Xamarin 应用程序之间执行的内容没有区别(除了一些根据我的经验并不值得注意的小开销)。

在 Android 上,即时编译也与任何其他“ native ”Android 应用程序一样使用。

这一切都意味着您拥有与使用 Objective-C 或 Java 时完全相同的 API 和可能性。您甚至可以使用相同的对象来构建具有完全相同的类型和名称的 UI(有时会稍微优化 ;))。因此,如果您想要为您的应用程序提供标签栏导航 - 您可以为此使用 UITabBarController。参见 iOSXamarin .

在使用 Xamarin 多年之后,我只有一个缺点:

可能的内存泄漏。他们的整个样本都是关于防止内存泄漏的基本知识的一堆废话。如果您在应用程序中使用诸如媒体文件之类的“昂贵资源”,则从第一天起就应该小心。当我的一个应用程序已经发展到多达 35 个不同(复杂)的对话框时,我必须摆脱所有这些问题。这花了我将近两个月的时间,换句话说,花费了数千美元。 They provide some documentation关于它,但是这方面的工具很差。错误很可能会出现并且很难被发现 ( example )。

但总而言之,使用 Xamarin 是我做出的最佳决定之一。

关于c# - Xamarin : comparison to native SDK and JS-based frameworks,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23419741/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com