java - 从同一后端支持移动应用程序和网站的最佳技术堆栈是什么?

标签 java ruby-on-rails json rest mobile

<分区>

我将拥有 native iPhone 和 Android 应用程序,然后是一个移动网站(用于其他移动平台),所有这些都与管理用户、设置、视频、社交图谱等的后端对话。我还将拥有一个动态的具有大量视频、图片和社交图管理的网站。该网站基本上将是手机应用程序的一个更具特色的版本。后端包括视频存储、转码、视频推荐引擎、与您的网络共享视频的选项。

我的想法是,我应该构建一个公共(public)应用程序服务层,该层公开一个返回 JSON 的 RESTful api,并让应用程序和网站都与该 api 通信。

我的问题是,我应该将网站和服务层都保留在一种技术中,还是将 Java 用于服务层,将 Rails 或 Python 用于网站,以利用它们声称的更快的开发时间。该网站将有大量的 JavaScript 和 AJAX 来支持动态行为。如果我使用 Rails 或 Python,他们是否也应该将 REST/JSON 与服务层通信?在部署和扩展管理方面,似乎对所有后端部分坚持使用一种技术(如 Java)可能会更好;但另一方面,Rails 和 Python promise 更快的 Web 层开发和维护时间。如果我将 Rails 用于 Web 层,将它部署在与服务层相同的 JVM 中的 JRuby 中是否有意义,以便在 Web/应用程序服务器上管理更少的移动部件?

该站点可能会增长到数百万用户和视频。开发团队在 Java 方面经验丰富,会一些 Python,但很聪明,可以快速学习其他技术。

请随时提出您选择的技术堆栈的建议。

最佳答案

根据我的经验,这里有一些建议:

  • 为您的 JSON API 创建一个单独的 API 层。在那里使用 Spring MVC 或 JAX-RS
  • 对于 Web 前端,您可以使用 grails - 它结合了 ruby​​ 和 python 等动态语言的优势与 JVM 和 java 堆栈的强大功能。
  • 您可以选择仅使用您网站中的 API,或仅通过 API 公开部分功能并在内部使用其余功能。
  • 对于内部通信,尽量不要增加开销 - 您可以从简单的服务类(例如 spring bean)开始。将它们作为 Web 服务公开是有害的,imo。是的,您的模块似乎是分离的,但这会妨碍灵 active 。由于服务是无状态的,它们可以从任何地方调用,因此您可以轻松地使它们生效并在与 grails 应用程序相同的 JVM 中被调用。

关于java - 从同一后端支持移动应用程序和网站的最佳技术堆栈是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6245322/

相关文章:

ios - 关闭不使用 Rabbitmq 的连接

ruby-on-rails - 更新时唯一性的 rails 验证

json - 如何使用 serde_json 将 "NaN"反序列化为 `nan`?

java - 从 LinkedHashMap 转换为 Json 字符串

java - 有没有办法缩短这段代码?也许是三元表达式?

java - SFTP非空文件夹递归删除

java - 在android中滚动时如何调整图像大小?

java - 为什么我的 TCP 连接在运行命令后关闭? - java

ruby-on-rails - 我可以将 cassandra 与 heroku 一起使用吗?

javascript - 如何通过 JQuery/Javascript 将选定的下拉菜单值正确传递给 JSON 函数