数据密集型应用程序的电话差距与单点触控
Posted
技术标签:
【中文标题】数据密集型应用程序的电话差距与单点触控【英文标题】:phone gap vs monotouch for data intensive app 【发布时间】:2012-02-29 18:53:44 【问题描述】:我们正在寻求为移动设备开发数据密集型应用程序。我们的核心问题是
-
我们将不得不在客户端存储大量数据
客户希望应用离线工作
我们的技能集非常多的 Web 开发 C# ASP.Net。绝对不是Objective C
我们为开发者考虑了三种可能性
使用 html5 本地存储并利用离线应用程序缓存的 Web 应用程序。 我们的本地存储限制为 5MB,但对于某些浏览器,这可能会降至 2.5MB
Web 应用程序通过PhoneGap 创建原生应用程序。 这里最大的优势是我们可以使用文件系统进行存储。不利的一面是,它必须通过 App Store(尤其是 ios)——Apple 订阅应用的收入会减少 30%
我们使用 MonoTouch 为 android 和 iOS 构建应用程序。 好 - C# 和 .Net 我们可以做到这一点。不好 - 没有黑莓
问题
在这种情况下,我很难看到使用 MonoTouch 优于 PhoneGap 的任何真正优势。这些是什么?有吗?
作为本例中的示例,将数据保存到文件系统中非常有用,但我相信电话间隙可以通过File object 做到这一点。显然 monoTouch 会利用 System.IO。
MonoTouch 中是否存在明确的附加功能 - 特别是对移动开发人员有用的功能,例如地理位置或相机类型功能?。或者电话差距几乎涵盖了所有这些。
厚颜无耻的附加问题
对于我已经忘记的三种方法,我是否遗漏了任何其他选项或任何其他主要优点/缺点?
感谢大家的专业知识
【问题讨论】:
您可以看看 AdobeFlex (adobe.com/de/products/flex.html)。它还声称能够编译为原生 iOS 二进制文件。 @chiffre。谢谢 - 但使用的语言是什么。它看起来像 ActionScript,所以它像 Flash 变体。对吗? 它是 ActionScript 和 MXML。只要您只使用预先给定的控件,一切都相当容易。 FlashBuilder 有 60 天的试用期,因此您可以尝试一下。通过尝试创建自己的用户控件/组件,我有点自我卡住了。 我认为 MobileAIR 不会编译到原生 iOS,而是在现在可用于 iOS 的 AIR 运行时中运行。无论如何,您仍然使用 ActionScript 和 Flex API 进行编程。 @ColinE 你可以看看flex.org/flexgame 我试过了,我的iPad上没有安装任何其他东西。也许 AIR 以某种方式打包到应用程序或类似的东西中,但用户不知道/看到它:) 【参考方案1】:我们刚刚完成了一个用 MonoTouch 编写的数据密集型应用程序。该应用程序通过中间层访问 SAP 数据,并将其公开在应用程序上。它还允许从应用程序直接更新到 SAP,同样通过同一中间层。
我们正在使用 MonoDroid 将其移植到 Windows Phone 和 Android。
我花了一段时间才让老板相信 MonoTouch 是前进的方向,我们事先尝试了一些不同的产品,包括 jQuery mobile、ExtJS 和 Obj C。
我试图说服他的时候是收购 Attachmate 的时候,它有时看起来就像 MonoTouch 注定要失败一样。对我们(我)来说幸运的是,Xamarin 就像传说中的凤凰一样从火焰中崛起,他们继续将 Mono* 发展成今天的样子。
作为一名 C# 开发人员(和 Mono 爱好者),我战胜 Obj C 或任何 HTML/javascript 的主要优势在于我可以使用 C# 来完成工作。文档非常好,当 doco 没有完全删减它(最近更新)时,社区做到了。
IRC 频道非常活跃,Xamarin 员工和社区布道者总是愿意帮助或提供对问题的见解。和邮件列表一样。
另一个优点是围绕 MT 发展的生态系统。与 XCode 等效项相比,MT.Dialog 使开发基于表的 UI 变得轻而易举。再加上 .Net BCL,它无疑是基于 Silverlight 的子集,但它包含从序列化、电子邮件到密码学等的所有内容……如果 .Net 没有涵盖它,或者没有特定的 Mono* 项目,您仍然可以在 MT 代码中使用 ObjC 插件。
我不同意 MT 作为一个经过验证的平台“尚未证明自己”。我们正在使用它,虽然我们是一家相对较小的公司,但也有很多大公司也在使用它。据报道,Apple 在澳大利亚的电视广告中展示的一些应用程序是用 MT 编写的。
为了保持客观,MonoTouch 的两个“缺点”对我来说是你仍然需要能够阅读 ObjC(不过,tbh,我不认为这是一个缺点......作为一个' C#' 开发人员无论如何我都必须能够读写大量语言),而且从历史上看,MonoDevelop 有点错误。主要错误似乎已被消除,由于它是一个开源项目,您可以随时修复它们并帮助我们其他人!
回答您的疑虑:
-
我们将不得不在客户端存储大量数据
在 C# 中使用 .Net 的 System.IO 类。如果您不确定这些,MSDN 有大量示例(MT 隐藏了文件存储的 iOS 实现)
-
客户希望应用离线工作
他们都可以做到这一点,但在我看来,原生应用总是会感觉更好。
-
我们的技能集非常多的 Web 开发 C# ASP.Net。绝对不是Objective C
MonoTouch 是 C# - 发挥你的长处,在几周而不是几个月内就拥有一个应用程序!
我的 2 便士!我会毫不犹豫地一次又一次地选择相同的路线。
【讨论】:
不错的答案。给你一个问题,当移植到 MonoDroid 时,我猜你必须从 UI 代码重新开始?但是可以共享业务逻辑吗? 如果您以足够的远见设计解决方案,您将能够重用应用程序之间的所有业务逻辑。在 MonoDroid 和 MonoTouch 之间,有一些分别名为 MD.Dialog 和 MT.Dialog 的开源项目 - 这两个库之间有相当多的重用,因此您可以重用 UI 的某些部分 - 不是全部,但是在这种情况下,您可以使用 M*.Dialog 编写自己的元素。 @JD 这是一个很好的答案。谢谢你,这对融入某人的真实世界体验非常有用。以文件系统和 System.IO 为例 - 电话间隙不会为您提供与文件对象相同的功能。与 monoTouch 相比,phone gap 是否存在明显的功能差距?那些会产生实际影响的?或者,您使用 C# 而不是 JavaScript 进行开发真的有优势吗(至少对我们来说)。当然,你会得到一个真正的原生应用,而不是包装中的 Web 应用 谢谢。我没有尝试在电话间隙访问文件系统,对你来说的好处是你是 .net 开发人员,因此你知道如何操作文件系统、发送电子邮件、使用 Web 服务、创建/使用iOS 等上的对象已经存在。【参考方案2】:我已经使用 PhoneGap 一段时间了(在 WP7 上)但没有使用 MonoTouch,但是我是一位经验丰富的 C#/Silverlight 开发人员。
MonoTouch 的一些优点:
您在本机 UI 中编写代码,从而在所有平台上提供最佳体验 C# 是一种“有进取心”的编程语言。它非常适合开发数据密集型应用程序 您当前的技能将在这里很好地为您服务 应用商店有numerous applications written with MonoTouch。MonoTouch 的一些缺点:
您再次使用 iPhone API 编写 C# 代码,因此要移植到 Android,您需要为 MonoDroid 提供单独的 UI 层。PhoneGap 的优势:
它开始看起来像一个相当成熟的框架,numerous applications written using PhoneGap 涵盖所有受支持的操作系统。 PhoneGap 获得了良好的社区支持 它使用 HTML5,许多人认为这是未来的技术。这是一个相当广泛的声明,但是,大多数大公司(微软、Adobe 等)都支持它。PhoneGap 的缺点:
它使用 JavaScript,可能是 most misunderstood language in widespread use! 用户界面是用 HTML 编写的。尽管 jQuery Mobile 等框架尽了最大的努力,但它永远不会感觉是原生的。 因为它具有特定于平台的“shim”代码来提供一致的 API,所以您会发现特定于平台的问题。不过,我发现 PhoneGap 团队很快就解决了这些问题。总之,这是一个艰难的选择!
我个人会使用 PhoneGap,但不会尝试模拟任何特定操作系统的外观和感觉,而是创建适合您的应用程序的您自己的 UI,并在所有平台上使用它。
【讨论】:
感谢您的回答。信息量很大。我问的是 MonoTouch xamarin.com/monotouch 不是 monCross - 你是说 MonoTouch - 它只是一个错字吗? @ColinE:你见过使用PhoneGap 的数据密集型应用吗?我也会对该主题感兴趣,但我能找到的都是相当“简单”的应用程序。 您没有在 AppStore 上四处寻找 PhoneGap 应用程序,而是访问了 PhoneGap 的网站。如果你给予 MonoTouch 相同的待遇,你很快就会发现:xamarin.com/apps - 数百个使用 MonoTouch 和 Mono for Android 构建的应用程序。 很好的答案。关于PhoneGap的用户界面“它永远不会感觉原生”。 Kendo UI 与 PhoneGap 相结合可以帮助解决这个问题。 @ColinE 这篇文章对我帮助很大。但是我仍然不确定您更喜欢哪一个来使用此类应用程序:Pose at iTunes。它似乎是用 HTML5 开发的,但哪种工具和技术会更好。请帮助我。【参考方案3】:昨天(2012 年 2 月 8 日)发布了 MonoTouch 的新版本 - 5.2。许多新功能使开发 iOS 应用程序更容易和更快。有关它的详细信息可以从这里访问:http://blog.xamarin.com/
使 MonoTouch 成为一项特别有趣的技术的一个原因是能够开发一些非常复杂的应用程序,这些应用程序无需互联网连接即可运行。这可能是个大问题。
【讨论】:
以上是关于数据密集型应用程序的电话差距与单点触控的主要内容,如果未能解决你的问题,请参考以下文章
UISplitView 上的 UITableViewController。为啥向下钻取留在第一张桌子上? (使用单点触控)