我们正在寻求为移动设备开发数据密集型应用程序。我们的核心问题是
- 我们必须在客户端上存储大量数据
- 客户端希望应用程序能够离线工作
- 我们的技能主要是 Web 开发 C# ASP.Net。绝对不是 Objective C
我们已经想到了
- 使用 HTML5 本地存储利用离线应用程序缓存的开发 Web 应用程序的三种可能性。
浏览器,此限制可能会降至 2.5MB
- 我们对本地存储有 5MB 的限制,但对于某些浏览器
通过 PhoneGap 创建本机应用程序的 Web 应用程序, 应用程序。
这里的一大优点是我们可以使用文件系统进行存储。缺点是它必须通过 App Store(尤其是 iOS) - 订阅应用程序的 30% 收入
-
我们使用 MonoTouch 适用于 Android 和 iOS。
很好 - C# 和 .Net 我们可以做到这一点。不好 - 没有黑莓
问题
在这种情况下,我很难看到使用 MonoTouch 相对于 PhoneGap 的任何真正优势。这些是什么?他们有吗?
作为本例中的一个示例,将数据保存到文件系统中非常有用,但我相信电话间隙可以通过 文件对象。显然 monoTouch 会利用 System.IO。
MonoTouch 中是否存在明确的附加功能 - 特别是对移动开发有用的功能,例如地理位置或相机类型功能?或者手机差距几乎已经涵盖了所有这些。
厚颜无耻的附加问题
是否还有我错过的任何其他选择,或者我已经忘记的三种方法的任何其他主要优点/缺点?
感谢大家的专业知识
We are looking to develop a data intensive application for mobile devices. Our central problem is
- We will have to store quite a lot of data on the client
- The client wants the app to work offline
- Our skill set is very much web development C# ASP.Net. Definitely not Objective C
We have thought of three possibilities for dev
-
Web application using HTML5 local storage leveraging the offline application cache.
We are on a 5MB limit for local storage but this might be down to 2.5MB for certain browsers
-
Web application through PhoneGap to create a native app.
Big advantage here is that we can use the file system for storage. The down side is that it will have to go through App Store (for iOS especially) - 30% chuck of revenue for a subscription app to Apple
-
We build out the app using MonoTouch for Android and iOS.
Good - C# and .Net we can do this. Bad - no Blackberry
Question
I'm struggling to see any genuine advantages of using MonoTouch over PhoneGap in this instance. What are they? Are they any?
As an example in this instance it would be really useful to save data onto the file system but I believe that phone gap can do this through the File object. Obviously monoTouch would leverage System.IO.
Is there instances where there is definite additional functionality in MonoTouch - particularly functions that are useful to mobile dev e.g. Geolocation or camera type functions?. Or does phone gap pretty much have all these covered.
Cheeky Additional Questions
Is there any other options I have missed or any other major advantages/disadvantages for the three approaches I have outlined that I have forgotten about?
Thanks for everyone's expertise
发布评论
评论(3)
我们刚刚完成了一个用 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 编写的。
为了保持客观,MonoTouch 对我来说有两个“缺点”,那就是你仍然需要能够阅读 ObjC(不过,说实话,我不认为这是一个缺点...作为一名“C#”开发人员无论如何,我必须能够阅读和编写多种语言),而且事实上,从历史上看,MonoDevelop 一直存在一些问题。主要错误似乎已被消除,并且由于它是一个开源项目,您可以随时修复它们并帮助我们其他人!
回答您的问题:
在 C# 中使用 .Net 的 System.IO 类。如果您不确定这些,MSDN 有大量示例(MT 隐藏了文件存储的 iOS 实现)
他们都可以做到这一点,但在我看来,本机应用程序总是感觉更好。
MonoTouch 是 C# - 发挥您的优势,在几周而不是几个月内拥有一个应用程序!
我的2便士!我会毫不犹豫地一次又一次选择同一条路线。
We have just finished a very data intensive app written in MonoTouch. The app accesses SAP data, through a middle tier, and exposes this on the app. It also allows direct updates from the app to SAP, again through the same middle tier.
We are in the process of porting this to Windows Phone and Android using MonoDroid.
It took me a while to convince the boss that MonoTouch was the way forwards, and we tried a few different products beforehand including jQuery mobile, ExtJS and Obj C.
The time I was trying to convince him was the time of the Attachmate acquisition and it looked, at times, like MonoTouch was doomed. Luckily for us (me), Xamarin rose like the proverbial Phoenix from the flames, and they have continued to develop Mono* to what it is today.
As a C# developer (and Mono enthusiast) the main win over Obj C or any of the HTML/JavaScript was the fact that I could use C# to get the job done. The documentation was very good, and when the doco didn't quite cut it (recently been updated) the community did.
The IRC channel is very active, with Xamarin employees and community evangelists always willing to help or provide insight into a problem. As are the mailing lists.
Another plus are the Eco-systems which are growing around MT. MT.Dialog makes developing Table based UI's an absolute breeze compared to the XCode equivalent. Couple with this the .Net BCL which is, admittedly a subset based on Silverlight, but it has everything from Serialization, Email to Cryptography etc... If .Net doesn't cover it, or there isn't a specific Mono* project, you can still use ObjC plugins with your MT code.
I disagree that MT has 'yet to prove itself' as a proven platform. We are using it, and whilst we are a relatively small company, there are lots of larger companies also using it. A few of the apps showcased by Apple in the TV ads here in Aus are, reportedly, written in MT.
In order to remain objective, the 2 'cons' of MonoTouch for me have been that you still need to be able to read ObjC (though, tbh, I don't see this as a con... As a 'C#' developer I have to be able to read and write a plethora of languages anyway) and the fact that, historically, MonoDevelop has been a bit buggy. The major bugs appear to have been squashed and, with it being an open source project, you can always fix them and help the rest of us!
To answer your concerns:
Use the System.IO classes of .Net in C#. If you are unsure of these, MSDN has oodles of examples (MT hides the iOS implementation of file storage)
they can all do this, but a Native app is always going to feel better in my opinion.
MonoTouch is C# - play to your strengths and have an app in weeks, not months!
My 2 pennies! I would not hesitate to choose the same route again, again and again.
我已经使用 PhoneGap 一段时间了(在 WP7 上),但没有使用 MonoTouch,但我是一名经验丰富的 C# / Silverlight 开发人员。
MonoTouch 的一些优点:
MonoTouch 的一些缺点:
PhoneGap 的优点:
PhoneGap 的缺点:
总结一下,一个艰难的选择!
就我个人而言,我会选择 PhoneGap,但不会尝试模拟任何特定操作系统的外观和感觉,而是创建适合您的应用程序的自己的 UI,并在所有平台上使用它。
I have used PhoneGap for a while now (on WP7) but not used MonoTouch, however I am an experienced C# / Silverlight developer.
A few advantages of MonoTouch:
A few disadvantages of MonoTouch:
Advantages of PhoneGap:
Disadvantages of PhoneGap:
In summary, a tough choice!
Personally I would go PhoneGap, but not try to emulate the look and feel of any specific OS, rather, create your own UI that works well for your application and use that across all platforms.
昨天(2012 年 2 月 8 日)发布了 MonoTouch 新版本 - 5.2。许多新功能使开发 iOS 应用程序变得更容易、更快捷。有关它的详细信息可以从这里访问: http://blog.xamarin.com/
使 MonoTouch 成为可能的一件事一项特别有趣的技术是能够开发一些非常复杂的应用程序,这些应用程序无需互联网连接即可运行。这可能是一件大事。
There's a new release of MonoTouch that came out yesterday (Feb 8, 2012) - 5.2. Lots of new features to make developing iOS apps easier and faster. Details about it an be accessed from here: http://blog.xamarin.com/
One thing that makes MonoTouch a particularly interesting technology is the ability to develop some pretty darn sophisticated apps that can run without requiring internet connectivity. That can be a biggie.