我正在开发一个使用php web服务实现所有功能的iphone应用程序。 我正在计划创建模型对象以便在我的UI和Web服务之间进行通信。
在php上创建模型类以便在我的iphone模型和数据库之间进行通信是否更好?或者可以直接从数据库与我的iphone模型类进行通信吗?
以下哪一项是处理此通讯的正确方法?
答案 0 :(得分:0)
为什么要使用PHP?只需使用相关的数据库库,直接从设备连接到数据库!
为什么你可能想要在手机和数据库服务器之间放置一些东西有很多原因:
成熟的模型类可能看起来有点重量级(特别是因为PHP不会缓存任何东西),但是您需要决定如何在服务器端执行操作。特别是,您可能希望使用模型类和持久层来避免直接处理Sqlite / MySQL / Postgres / ODBC / blah。
还有很多理由说明PHP不是Web服务的最佳语言......
编辑:我在玩Devil的倡导者。
与数据库的“连接”通常只是一个TCP连接(尽管几乎所有现代POSIXish DB都支持通过Unix套接字连接,这有点更安全)。您通常需要实现DB的协议;最简单的方法是使用DB提供的C库(用于Postgresql 8.4的libpq5,用于MySQL 5.1的libmysqlclient16等)。我很确定默认情况下iOS不包含它们(但是IIRC旧版本的OSX曾经和Postgres一起使用)。
但是,出于安全原因,这非常糟糕:
同样,很少希望手机直接与数据库对话。这意味着当您更新架构时,您的应用程序将停止工作(禁止使用;您不应强制用户升级)。有可能将一些视图/触发器/等组合在一起作为兼容层。恶心。
其次,关系数据库通常不适合真正的应用程序。您想要向下滚动表格视图。每个单元格都从数据库行加载。每一行都通过网络加载......哎哟。 (使用CoreData 一次之后,我永远不想回头。它让我的生活变得更轻松。虽然我不会在服务器端使用它(我们的服务器运行Debian,我们的web服务大多是用Python),如果我要在Objective-C中编写应用程序,Core Data不再添加任何供应商锁定 - 我不认识任何认真对待GNUstep的人。
相反,它有助于考虑您要向Web客户端呈现的API。大多数网络服务(Facebook,Twitter,可能是其他网站)似乎都呈现出一种相当“愚蠢”的平面世界模型。编写最简单的东西,允许您实现所需的API。这可能意味着如果它足够容易使用模型类(Google App Engine的建模抽象很好;基于Django的建模抽象,显然)。