ios - iphone 应用程序应该直接与 cassandra 后端通信吗?

标签 ios json cassandra

显然,实现这样的事情有多个步骤和阶段。

我想我最终会拥有一个网络服务器,它从 ios 应用程序获取 http json 请求,然后查询 cassandra 后端并将结果发回。我仍然可以负载平衡和所有花哨的东西,还在服务器端提供一个逻辑层,并保持客户端应用程序的轻量级。

不过,我不确定我是否了解 cassandra 客户端的适用性。似乎 cassandra objective c 客户端可以消除对上述方法的需求。

我看到了另一个问答,但不是很清楚,可能是因为它因需求而异。

最佳答案

iPhone 应用不应直接连接到 Cassandra 后端或任何其他数据库存储。

首先,与数据库对话通常需要采用非常具体的二进制协议(protocol)(特别是对于 Cassandra,二进制 CQL 或 Thrift)。编写一个适配器让您的 Objective-C 应用程序在此二进制协议(protocol)中进行通信是一项主要工作,并且很容易比您的应用程序的其余部分花费更多。但是,如果您将数据库隐藏在 Web 服务器后面,您将能够从以不同服务器端语言提供的各种现有适配器中进行选择,这意味着您不需要重做所有这些低级工作。您只需负责一小段服务器端代码,这些代码将转换您的 REST 查询并将它们转发到其中一个 Cassandra 适配器(公开易于使用的接口(interface))。

其次,如果您想从手机连接到远程数据库,您的数据库服务器将不得不打开其通向互联网的端口,这是一种非常糟糕的安全做法,即使您使用 SSL 和用户凭据也是如此。同样,如果您隐藏在网络服务器后面,您将置入一个已经发展了几十年的技术层,以在公共(public)互联网上保持安全。

最后,让你的手机直接与 Cassandra 对话是一种糟糕的架构模式。当您编写在 Internet 上通信的应用程序时,您希望它们彼此了解得尽可能少,只知道如何相互交谈(最好采用标准协议(protocol))。这样您就可以更换或升级单个组件,同时保持其他一切不变。这听起来可能不是很多,但实际上是手机或网络浏览器不直接与数据库对话的主要原因。 (如果这种设置在原则上是个好主意,那么只要有足够的工程努力,前两个问题就可以轻松解决。)


您首先建议使用 JSON 和 Web 服务器的方法是唯一正确的方法。

关于ios - iphone 应用程序应该直接与 cassandra 后端通信吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22059068/

相关文章:

java - JSON 到 XML 的转换而不改变序列

java - GSON 从 JSON 解析对象异常数组

zend-framework - Zend 框架 Cassandra

Cassandra 因任意命令而挂起

json - 如何使用 swift Codable 协议(protocol)解码以 "["开头的 JSON

cassandra - 如何生成查询来克隆现有表

ios - 错误!找不到iPhoneSimulator SDK 9.0 RubyMotion

ios - JSON数据解析异常 "objectForKey unrecognized selector"

javascript - 绕 z 轴旋转时 iOS 陀螺仪错误

ios - 设置 Rails 4 SSL Webrick 本地主机以与 iOS 9 一起工作