将Web应用程序和本机应用程序指向同一个数据库/后端?

时间:2016-03-21 14:19:06

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

我正在使用web application后端创建Java。我打算把它放在Amazon Web Services上。

理想情况下,我希望将来能够创建一个本地Android应用程序,该应用程序具有与Web应用程序相同的相同的功能。

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

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

1 个答案:

答案 0 :(得分:2)

面向服务的体系结构(SOA)是一种已经存在一段时间并且当然可以满足您的需求的方法。但是,我会提醒您,当您搜索有关SOA的信息时,您会遇到很多“企业”设计,而这些信息对于您正在进行的开发类型来说实在是太过分了。

一般情况下,我建议您专注于以下内容:

  • 将您的UI(HTML / JS / CSS)保存在与Java后端不同的项目中。这种做法将迫使您将UI和后端问题分开。
  • 让您的后端公开一个通过HTTP / HTTPS发送和接收JSON的API。
  • 使您的后端服务无状态。使用JSON Web令牌进行身份验证是实现此目的的一种好方法(我喜欢使用Auth0)。换句话说,不要依赖HTTP会话来跟踪Java代码中的用户。这样可以使您的应用程序非常容易扩展。

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

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

使用API​​网关的另一大优势是它允许您将后端分解为单独的服务器,Lambda函数等。这样可以提供极大的灵活性,而且我无法强调如何使用AWS Lambda的能力在你的后端将减少管理工作以及托管成本。这使您可以根据Microservices开始考虑后端。