Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从同一后端支持移动应用程序和网站的最佳技术是什么?_Java_Ruby On Rails_Json_Rest_Mobile - Fatal编程技术网

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

Java 从同一后端支持移动应用程序和网站的最佳技术是什么?,java,ruby-on-rails,json,rest,mobile,Java,Ruby On Rails,Json,Rest,Mobile,我将拥有原生iPhone和Android应用程序,以及稍后的移动网站(用于其他移动平台),所有这些都与管理用户、设置、视频、社交图等的后端进行对话。我还将拥有一个动态网站,其中包含大量视频、图片和社交图管理。该网站将基本上是一个更具特色的手机应用程序版本。后端包括视频存储、转码、视频推荐引擎、与网络共享视频的选项 我的想法是,我应该构建一个公共应用程序服务层,该层公开一个返回JSON的RESTful api,并让应用程序和网站都与该api对话 我的问题是,我应该将web站点和服务层都放在一种技术

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

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

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

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


请随意推荐您选择的技术堆栈

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

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

这是非常主观的,而且过于宽泛;你问的问题是很多公司的整个业务都是基于这些问题的,并且经过了十年的发展;手机并没有出现在iPhone上,只是因为它变得更复杂了。不过我知道阿奇来自哪里。尽管其他公司已经对此进行了改进,但从一开始就尝试正确地实施它是有帮助的。建筑错误需要花费大量的金钱来修复。两年后我来到这里,寻找同一个问题的答案。波佐,谢谢你的回答。根据您的回答,我有一些后续问题:您说使用SpringMVC或JAX-RS。它必须是一个还是另一个?它们是等效技术吗?我考虑过使用Jersey使用JAX-RS从Java公开REST api。Spring MVC也允许公开REST JSON api吗?对于该站点,您建议我只调用Grails中的SpringBean?为什么您认为将它们作为web服务公开会妨碍灵活性?如果移动设备和网站都需要使用服务,我会有一个服务bean和REST包装器吗?你觉得jRuby怎么样?是的,SpringMVC允许公开RESTJSONAPI。您可以将spring与jersey一起使用,将spring与SpringMVC一起使用(SpringMVC是一个单独的框架)