使用Xamarin进行本地存储的可能性

时间:2014-08-15 09:47:47

标签: xamarin

我一直在研究几个提供独立于平台的应用程序的框架。优选基于网。 Xamarin,JQuery mobile,PhoneGap和Apache Cordova是目前感兴趣的人。

最大的兴趣在于Xamarin(因为它们是使用C#/ Visual studio创建的)。但问题是,由于xamarin创建本机应用程序,它似乎与html5不能很好地协同工作? 我找到了这篇文章:What is the difference between html5 and xamarin? 但我没有得到我想要的答案。似乎可以将html5与Xamarin一起使用,但这是不是很多头痛?

如果没有,是否可以创建一个应用程序(使用Xamarin),如果没有互联网连接,它将允许脱机工作?我的意思是我希望能够在离线工作时保存数据,一旦我上网,我就可以上传数据。 HTML5允许使用localstorage。

提前致谢

2 个答案:

答案 0 :(得分:0)

是的,Xamarin应用程序可以脱机工作,它们就像本机应用程序一样。

就像本机应用程序一样,您必须决定如何处理网络序列化和本地存储的问题。

然而,这与纯粹的原生应用程序之间的主要区别之一是,您在解决该问题的方式方面有很多选择。

  1. 如果您对.Net及其所提供的所有花哨内容一无所知,那么最好使用其组件商店https://components.xamarin.com/中的Xamarin组件。 但是,组件存储中的东西通常是特定于平台的包装器(或者Xamarin将它们称为“Bindings”)的现有本机库。因此,如果您的目标是尝试尽可能多地共享后端和中端代码,那么可能无法满足您的需求。

  2. 如果您对.Net有一定的了解,那么事情会变得非常有趣。您可以尝试从Nuget或Component store中找到可移植库,这些库可以放入共享项目中,您可以引用每个特定于平台的项目。 http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/ 显示可以共享代码的一些方法。

  3. 您还可以使用依赖注入组合1.和2.(如果您绝对必须)。您的共享代码项目可以定义随后实现的接口,然后从您的平台项目中注入构造函数或属性,以实现代码共享。

  4. 我确信还有更多方法,但那些恰好是我个人尝试过的3种方法。每当我认为HTML5我立即进行JSON序列化并且有许多序列化器已经变成Xamarin组件,或者有Nuget软件包。这实际上取决于您计划如何共享代码,以及您计划使用哪些框架(如果有)。

答案 1 :(得分:0)

Xamarin工具生成本机应用程序,可以利用任何平台(操作系统)提供的文件系统操作。在这里,您需要了解不同的移动平台iOS,Android和Windows Phone之间的差异。

.net提供了可用于Xamarin应用程序的序列化,但还有许多其他序列化库,如Newtonsoft JSON.net,SharpSerializer等。为确保跨平台可移植性,请使用可移植类库实现 - 这些实现可以保证它们可以在iOS,Android和WP(以及更多)中使用。

然后你必须学习平台之间的微妙差异,比如使用Path.Combine(),其中是平台的默认工作文件夹,添加外部存储的权限,共享设备的文件系统,并最终工作使用WP中的IsolatedStorage或Android中的Assets等本机API ...