我正在开发将所有功能都使用php Web服务的iPhone应用程序。 我打算创建模型对象以在UI和Web服务之间进行通信。
在php上创建模型类以在iphone模型和数据库之间进行通信是否更好? 还是可以直接从数据库与iPhone的模型类进行通信?
以下哪一项是处理此通信的正确方法?
为什么要使用PHP? 只需使用相关的数据库库,然后直接从设备连接到数据库!
有很多原因使您可能需要在电话和数据库服务器之间放置一些东西:
完整的模型类似乎有点重量级(特别是因为PHP不缓存任何内容),但是您需要确定如何在服务器端执行操作。 特别是,您可能希望使用模型类和持久层,以避免直接处理Sqlite / MySQL / Postgres / ODBC / blah。
为什么PHP不是Web服务的最佳语言也有很多原因...
编辑:我在玩魔鬼的提倡者。
与数据库的“连接”通常只是TCP连接(尽管几乎所有现代POSIXish DB都支持通过Unix套接字进行连接,这在某种程度上更为安全)。 通常,您需要实现数据库的协议。 最简单的方法是使用数据库提供的C库(用于Postgresql 8.4的libpq5,用于MySQL 5.1的libmysqlclient16等)。 我敢肯定,iOS默认不包含它们(但Postgres附带有IIRC OSX旧版本)。
但是,出于安全原因,这非常糟糕:
再说一次,您很少希望电话直接与数据库通话。 这意味着您在更新架构时应用程序将停止运行(不可以;不应该强迫用户升级)。 可能可以将某些视图/触发器/等放在一起作为兼容性层。 恶心。
其次,关系数据库通常不适合真正的应用程序。 您要向下滚动表格视图。 每个单元格都从数据库行加载。 每行都通过网络加载。 (使用CoreData 一次之后 ,我再也不想回头了。它使我的生活变得更加轻松。虽然我不会在服务器端使用它(我们的服务器运行Debian,而我们的Web服务大多是用Python编写的),要使用Objective-C编写应用程序,Core Data不会再增加任何供应商锁定-我不知道有人认真对待GNUstep。
相反,它有助于考虑要提供给Web客户端的API。 大多数Web服务(Facebook,Twitter,可能还有其他)似乎都提供了一个相当“愚蠢”的扁平模型。 编写最简单的东西,使您可以实现所需的API。 如果这样做足够容易,这可能意味着使用模型类(Google App Engine的建模抽象很好;显然基于Django的建模抽象)。