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



我一直在研究几个提供平台独立应用程序创建的框架。最好是基于网络的。Xamarin, JQuery mobile, PhoneGap和Apache Cordova都是我们感兴趣的。

最大的兴趣落在Xamarin上(因为它们是使用c#/Visual studio创建的)。但是,问题是,既然xamarin创建的是原生应用,它似乎并不能很好地与html5一起工作。我发现了这篇文章:html5和xamarin之间的区别是什么?但是我没有得到我想要的答案。似乎有可能使用html5与Xamarin,但这是没有太多的头痛吗?

如果没有,是否有可能创建一个应用程序(与Xamarin),将允许离线工作,如果没有互联网连接?我的意思是,我希望能够在离线工作时保存数据,一旦有了互联网连接,我就可以上传数据。HTML5通过本地存储实现了这一点。

Thanks in advance

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

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

然而,这与纯原生应用的关键区别之一是,你有更多的选择来解决这个问题。

  1. 如果你对。net和它提供的所有奇特的东西一无所知,那么你最好使用他们的组件商店https://components.xamarin.com/中的Xamarin组件。然而,组件库中的东西通常是现有本机库的特定于平台的包装器(或者Xamarin称之为"绑定")。所以,如果你的目标是尝试和共享尽可能多的后端和中端代码,那么这个可能不适合你的需要。

  2. 如果您熟悉。net,那么事情会变得非常有趣。您可以尝试从Nuget或Component store中找到可移植库,它们可以放置到共享项目中,以便每个平台特定的项目都可以引用。http://developer.xamarin.com/guides/cross-platform/application_fundamentals/building_cross_platform_applications/sharing_code_options/展示了代码共享的一些方式

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

我相信还有更多的方法,但这恰好是我个人试验过的3种方法。每当我想到HTML5,我立刻想到JSON序列化,有很多序列化器已经变成了Xamarin组件,或者有Nuget包。这实际上取决于你计划如何共享你的代码,以及你计划使用什么框架(如果有的话)。

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

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

然后你必须了解平台之间的细微差异,比如使用Path.Combine(),这是平台的默认工作文件夹,添加外部存储的权限,共享设备的文件系统,最终使用原生api,如WP中的IsolatedStorage,或Android中的Assets等…

最新更新