database - 为什么我们使用 REST 连接到移动应用程序上的数据库?
问题描述
我目前正在研究如何制作跨平台移动应用程序(使用 xamarin 表单),并且我听说连接到非语言环境服务器(在我的情况下位于 Azure)中的数据库的“正确”方法是使用休息服务(或休息 API,或者无论如何被调用),而不是像在 Windows 窗体中那样使用 VS 的服务器资源管理器选项直接连接到数据库(使用 SQL 连接、数据集等。我认为他们在第一种情况下没有必要,我不确定)。
我收到的唯一答案是,在移动应用程序中“它们不是永久连接。它会连接,为您提供数据并断开连接。它们是异步连接。”,并且这样做是“为了优化连接资源。手机被挂起或用户将App转到后台。”。
但是我仍然不知道这是否是真正的原因,如果是我不明白它是如何优化连接资源的。因此,如果有人有时间解释这一点,我将不胜感激。
感谢您的宝贵时间,我希望我已经正确解释了自己,并且你们都度过了美好的一天。
解决方案
正如 Jason 所说,安全问题,通过适当的授权,拥有中介绝对比让用户直接访问数据库更安全,因为你将他限制在只运行你想要的查询的端点。并且从平台独立性和维护,如果应用程序是用不同的语言和不同的平台开发的,创建一个通用的 REST 接口以允许共享数据模型、缓存等可能会有好处。为了性能和可伸缩性,REST API 的 HTTP 层提供了另一个有价值的缓存机制。您的 REST API 服务器可以将缓存标头放在其响应中,并且这些响应可以缓存在网络层,其扩展性非常好。
您可以阅读此链接为什么人们使用 REST API 而不是 DBAL?,我觉得答案还不错
推荐阅读
- python-3.x - Python 包失败,因为它没有看到 setuptools
- arrays - 如何使 ColdFusion 数组中的项目独一无二?
- audio - FFMpeg 将特定时间的视频和音频合并到另一个视频中
- octave - 假设输入是 Octave 中的矩阵,如何将函数的输出变量的值格式化为矩阵
- google-colaboratory - 当我为 colab 使用本地运行时时,张量板不渲染
- autodesk-forge - Forge Viewer:如何使用单位?
- angular - Bootstrap 模态在 Angular 8 的 stackblitz 中不起作用
- postgresql - 如何使用 POSTGRESQL 将选择放入整数
- sql-server - 使用格式文件批量插入不显示不正确记录的行号
- python - 如何从前几个月的中位数计算每个月的百分比变化