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

arc*_*e65 6 java rest mobile json ruby-on-rails

我将拥有原生的iPhone和Android应用程序,以及后来的移动网站(用于其他移动平台),所有人都在与管理用户,设置,视频,社交图等的后端交谈.我还将拥有一个动态网站,很多视频,图片和社交图管理.该网站基本上是手机上应用程序的一个功能更强大的版本.后端包括视频存储,转码,视频推荐引擎,与您的网络共享视频的选项.

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

我的问题是,我应该将网站和服务层保持在一种技术中,还是将Java用于服务层,而将Rails或Python用于网站,以利用其声称的更快的开发时间.该站点将有大量的JavaScript和AJAX来支持动态行为.如果我使用Rails或Python,他们是否应该将REST/JSON与服务层进行对话?在部署和扩展管理方面,似乎坚持使用像Java这样的技术,所有后端部分都可能更好; 但另一方面,Rails和Python承诺为Web层提供更快的开发和维护时间.如果我将Rails用于Web层,那么将它部署在与服务层相同的JVM中的JRuby中是否有意义,以便在Web/app服务器上管理更少的移动部件?

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

随意建议您选择的技术堆栈.

Boz*_*zho 1

根据我的经验,以下是一些建议:

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