我知道这个问题已经被问过几次了,但似乎没有明确的答案……我在过去三天或更长时间里一直在寻找这个问题。
似乎有 2 种方法可以从 iOS 应用程序连接到 Oracle 数据库:
ODBC 客户端 我需要使用 gcj for ARM 编译 ODBC(哪个 ODBC?)。我认为这是一条艰难的道路,虽然有错误,但只要付出相当大的努力就有可能实现。
使用网络服务 从应用程序连接到 Web 服务,从 Web 服务连接到 Oracle DB。
这两种方法可用还是其他方法?
关于这两种方法的几个问题: 一个。哪个更安全? b.我公司的安全部门会反对上述任何一项吗? c.哪个性能更好? d.通常使用以上哪一个?
Web 服务就是答案,您不希望人们从移动设备直接连接到数据库。网络服务器将增加一层额外的安全性以及处理并发请求的能力,而不会直接给数据库带来压力
a.哪个更安全? 如上所述的网络服务
b.我公司的安全部门会反对上述任何一项吗? 是的,安全部门会坚持不打开 oracle 端口直接连接,除非他们已经打开了。
c.哪个性能更好? Web服务,在Web服务器中设置正确的缓存策略可以将资源节省到数据库。
d。通常使用以上哪一项? Web 服务,因为它们在安全性和性能方面为您提供了巨大的优势,不仅如此,Web 服务是可重用的并且可以由许多不同的平台访问,考虑一下将来您可能希望稍后在 Android 设备上为您的应用程序提供服务,Web 服务将为您节省大量的开发时间。
当今市场上的许多顶级应用程序都使用 Web 服务,想一想。
Google 地图是网络服务强大功能的一个很好的例子!
直接从应用程序连接到数据库不是一个好主意。如果您创建的帐户除了 SELECT 之外什么也不做,那么它可能是安全的,但还有一些其他事情需要考虑。
为什么要给应用程序增加 Oracle 客户端的负担?
如果您有很多用户,您就必须担心 Oracle 处理大量并发连接。使用 Restful API 请求是无状态的。
如果您决定更改您的架构。您还必须更改您的应用程序。当您将服务置于两者之间时,应用程序不再依赖于架构。
ODBC 连接将要求 Oracle 端口向 Internet 开放,但出于安全和性能原因,在绝大多数情况下不允许这样做。即使是这样,或者即使您建立了安全的 VPN,直接数据库访问也需要连接保持打开状态,当移动设备进出网络覆盖范围时,这可能会出现问题。
HTTP 对不可靠网络的容忍度要高得多,并且可以使用 SSL (HTTPS) 进行加密。 HTTP 的问题是数据库不直接支持这种传输,因此大多数人开发专用的 Web 服务。
我从事一个名为 SlashDB 的项目,该项目自动从数据库构建 RESTful API。对于公共 API,您可以将 /db 安装在所谓的 DMZ(两个防火墙之间的网段)中,如此博客文章中所述。
SlashDB 可以配置为允许公共用户限制数据访问,或者您可以定义具有不同数据权限的特定用户。它被设计为无状态服务,这意味着您可以轻松地在负载均衡器和反向 HTTP 代理后面设置多个节点,以实现高可用性 Web 规模部署。
无论您是手动开发 Web 服务还是使用我们的产品,与使用直接客户端/服务器方法相比,您的解决方案都将获得更好的可扩展性、性能和安全性。我什至认为 REST API 应该用于内部企业数据集成解决方案,但这是一个全新的话题。
我要重复其他人所说的,Rest API 是正确的出路。不要直接连接到数据库。但是,可能有一种方法可以连接到您的数据库,但我自己从未尝试过。
http://odbcrouter.com/iosvsweb#hn_iOS_Open_Database_Connectivity_SDK
我自己多年来一直遇到这个问题,所以我刚刚发布了一个名为 Dodona for Oracle 的 iOS 数据库客户端。目前它只是一个查询工具,但我计划在未来的更新中引入其他 DBMS 功能。新的 OracleNIO Swift 框架以及更广泛的 Swift 并发使这一切成为可能。