java - 将 Web 应用程序和 native 应用程序指向同一数据库/后端?

标签 java android amazon-web-services web-applications service

我正在创建一个带有 Java 后端的 web 应用程序。我打算将它放在 Amazon Web Services 上。

理想情况下,在未来,我想创建一个原生 Android 应用程序,它具有与 Web 应用程序相同的功能。

如何实现我当前的应用程序,以便 Native AppWeb App 都可以使用相同后端数据库和服务?

我一直在阅读 Service Orientated Architecture , 这是正确的做法吗?

最佳答案

面向服务的架构 (SOA) 是一种已经存在了一段时间的方法,它肯定能满足您的要求。但是,我要提醒您,当您搜索有关 SOA 的信息时,您将遇到许多“企业”设计,这对于您正在进行的开发类型来说确实是过大的杀伤力。

一般来说,我只建议您关注以下几点:

  • 将您的用户界面 (HTML/JS/CSS) 放在独立于 Java 后端的项目中。这种做法将迫使您将 UI 和后端问题分开。
  • 让您的后端公开一个通过 HTTP/HTTPS 发送和接收 JSON 的 API。
  • 使您的后端服务无状态。使用 JSON 网络 token 进行身份验证是实现此目的的好方法(我喜欢为此使用 Auth0)。换句话说,不要依赖 HTTP session 从您的 Java 代码中跟踪您的用户。这样做的额外好处是让您的应用程序真正易于扩展。

如果您执行了这些操作,那么在构建 Android 应用程序时,您根本不需要接触后端。您只需在 native Android 中再次实现 UI。


由于您使用 AWS 标记了这个问题,我假设您计划在 AWS 上实现您的后端。如果是这样,我强烈建议您考虑使用亚马逊的 API Gateway服务。该服务位于您的 UI 层和后端之间。这提供了几个优势,例如速率限制和缓存以保护您的 API 免受 DDOS 攻击,一个可选的 API key 以增加安全性,以及 API 版本控制以帮助您在不破坏现有客户端的情况下部署新版本的 API。此外,通过使用 API 网关服务定义您的 API,您可以为您的 API 生成一个 SDK,以便在 JavaScript、Android 和 iOS 中使用。

使用 API 网关的另一大优势是它允许您将后端分解为单独的服务器、Lambda 函数等。这提供了极大的灵 active ,我怎么强调使用 AWS Lambda 的能力都不为过在您的后端将减少管理工作以及托管成本。这使您能够开始根据 Microservices 考虑您的后端.

关于java - 将 Web 应用程序和 native 应用程序指向同一数据库/后端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36133494/

相关文章:

java - 可以从 JVM 调用 execve() 吗?

android - 如何在 android XML 中连接多个维度?

android - 无法解析符号 ReactApplication/ReactNativeHost

amazon-web-services - Mechanical Turk 中的多个 HIT 或外部问题?

c# - 在用 C# 编写的 AWS Lambda 函数中读取 SNS 消息

java - 对象化 GAE/J Google App Engine : Understanding asynchronous load

Java Swing : JScrollPane dosen't expand to fit JPanel in it

java - 在第 1 行的 'update, stock_id) values (0, 0.0, 10018, 1, null, 0, null, 0)' 附近使用正确的语法

java - Android:应用程序在模拟器上运行,但在我的手机上崩溃

email - Amazon Simple Email Service (SES) - 我应该使用 SMTP 接口(interface)还是 SES API?