【发布时间】:2009-07-14 07:13:27
【问题描述】:
我需要构建一个客户端服务器 iphone 应用程序。想在服务器上存储数据库并将其保存在客户端的 iphone 上。我必须使用什么策略以及什么 dbms 和工具?因为我的数据库已经够重了
【问题讨论】:
-
还告诉服务器和客户端如何通信?
标签: iphone
我需要构建一个客户端服务器 iphone 应用程序。想在服务器上存储数据库并将其保存在客户端的 iphone 上。我必须使用什么策略以及什么 dbms 和工具?因为我的数据库已经够重了
【问题讨论】:
标签: iphone
这很简单。如果您控制系统的两个部分。
这里的神奇词是 PLIST 的。
IBM 有一个很好的例子,其中包含一个 iPhone 源项目和一个有效的谷歌应用引擎部署。 http://www.ibm.com/developerworks/web/library/wa-aj-iphone/
这是一些超基本的代码。
// SaveOnline.
NSMutableArray *myArray = [NSMutableArray arrayWithObjects:@"one",@"two",nil];
NSURL *url = [NSURL URLWithString:@"http://www.hurl.ws/api/"];
ok = [myArray writeToURL:url atomically:NO];
if(ok) NSLog(@"saved worked");
您还可以从 URL 加载此 PLIST 并将其加载回您的对象中也很容易。整个 PLIST 系统非常酷。它有点冗长,但我不会担心,因为它非常灵活,从长远来看,它可以为您节省数小时的调试时间。
我还注意到服务器上有很多库可以将 PLIST 转换为 PHP、Python 的本地对象,并假设您可以找到 Java 或 .Net 的库。
不要想着自己用 XML 来做这件事,它会很快变得一团糟,而且当你不需要时,你会浪费很多时间来修复它。
PLIST 是你的朋友,所以请使用它们。约翰。
【讨论】:
要保存到服务器,您可以尝试 Parse:http://www.parse.com,他们似乎有一个简单的系统来存储数据(无需您设置任何服务器)。
最重要的是,您可以将数据作为 plist 文件在本地保存。以下是不同类型存储选项的一个很好的概要:http://doganberktas.com/2010/10/16/data-storage-alternatives-on-ios-in-a-nutshell/
如果您想要简单,您应该只在 plist 中存储数据,最好使用 NSCoding 协议,这将允许您轻松存储任意对象。
【讨论】:
如果您的数据库对象很复杂,您可能希望使用核心数据并在 iphone 中以您自己的方式对对象进行建模。当然,当您从服务数据库转到存储在核心数据中时,您必须对它们进行某种翻译,但这应该不会太难。如果您从您的服务获得 XML 或 Json 响应,您应该能够轻松地解析它们并在 iphone 上构建您的对象,并且只需使用核心数据来存储它们。
【讨论】:
您在服务器端使用的数据库无关紧要,它只是 iPhone 应用程序的黑匣子。该应用程序可以使用 XML 或 PLIST 或 JSON 通过 HTTP 与此服务器通信,正如 John 和 Daniel 推荐的那样。
就最简单的方法而言,只需使用您已经知道的服务器端语言即可。我想,在类似于 Google 应用引擎的东西上运行它可能是最简单的。
【讨论】:
bpapa,您注意到“应用程序可以使用 XML 通过 HTTP 与此服务器通信”,我假设您的意思是 Web 服务?
我之所以这么问,是因为我试图揭开从 iPhone 向数据存储(例如由 Google App Engine 提供的数据存储)获取数据并返回的神秘面纱。
谢谢 // :)
P.S.)更重要的是,谷歌有一个很好的解决方案,可以在没有大量资本投资的情况下创建可扩展的数据存储。我一直在关注它、Amazon Web Services 和 Windows Azure。看来,除非你对.net有很强的依赖或者有很强的能力,否则谷歌的解决方案是有道理的。
【讨论】: