Java后端和Rails前端

问题描述 投票:10回答:6

我有一个创业公司考虑建立一个Java后端和一个Rails前端。 Java后端将负责为数据库创建缓存层并提供其他附加服务。 Rails前端主要用于创建webapp和监视工具。

有哪些初创公司/公司使用这种设置? 在开发速度,部署,可伸缩性和集成方面有哪些问题?

(对我来说有用的是个人经验或非正式的案例研究。我想优先解决Grails或JRuby等替代方案的答案,除非事实证明这是等式中的一个重要部分)

谢谢!

java ruby-on-rails grails jruby startup
6个回答
6
投票

我从未做过轨道开发,但这是我的想法。 为什么不使用Grails? 我做了大量的Grails开发,它适用于快速原型设计。 它还提供Java,Spring和Hibernate的所有功能。 您可以利用Grails使用Spring和Hibernate来处理缓存以及这些技术支持的任何其他要求,而不是处理两种不同技术之间的通信。 如果你有Java开发人员,Grails不应该很难接受。 grails插件故事很不错。 所有这些都存储在一个中心位置,很容易获得,但质量因插件作者而异。 您还必须记住,由于Grails使用Groovy,它在语法上类似于Java并在JVM上运行,因此很容易使用现有的Java代码,包括大量可用的Java库。 我不确定这一点,但我认为有更多的库可供Java使用,而Grails则可用于Ruby语言和Rails。 我不能为你做一个资源使用调用,但我的问题是你有多少人有经验设计在后端使用Java的Rails系统,所有的问题都会随之而来? 您可能会发现,当两种技术之间的通信出现问题时,您没有精通调试的人员。


4
投票

我在我的一个项目中使用了类似的对,但是我使用的是Python而不是RoR。 我不认为有很大的不同。

一般来说,这种编程没有具体的内容。 你必须关心的两件最重要的事情:

  • 良好的模块化;
  • RoR和Java之间经过深思熟虑的协议。

首先是关于系统各部分之间的确切功能分解。 我们遇到了一些麻烦,因为不了解Java必须完成哪些工作,以及Python的哪一部分。 通常,您必须将所有彼此靠近的函数绑定在一起,并且必须在很少的地方连接远处的函数。 我想你知道良好模块化的规则,但是在编写不同语言的情况下,必须更仔细地考虑这一点。 您还可以对创建几个不同的Java服务感兴趣(例如,一个用于数据库缓存,另一个用于所有其他服务),以便能够自由组合它们,甚至可以在以后的其他项目中使用。

其次是关于你的部分之间的沟通。 我可以看到两种沟通方式:通过数据库和纯网络协议。 前者需要一些网络通信,所以我们使用纯网络协议,没有任何其他方式连接部件。
我们已经用SOAP进行了很多实验,但它给出了数百个错误:这个协议可以很好地连接用一种语言编写的服务(id Java到Java),但是用于连接不同语言的服务很糟糕 - 用于生成WSDL的自动工具给出了不同的Java和Python的结果,以及手动创建方案是困难和劳动密集型的。
所以我们习惯了REST 。 它使用HTTP协议的所有功能,例如所有四种主要的HTTP方法(POST,GET,PUT,DELETE),错误代码和许多其他内容,因此它几乎涵盖了您可能想要的所有内容。 REST的唯一限制是它不能保持状态,因此您可能需要实现自己的会话机制。
如果您对REST不太满意并寻求一些真实的例子,请参阅Facebook Graph API并使用Java实现REST服务,您可以使用Restlet


2
投票

也许我在这里说明显而易见,但这里最大的问题是你将两种技术结合起来的实际情况。 开发不仅速度慢--Rails和所有Java框架都希望拥有完整的Ruby / Java应用程序 - 但是对于您提到的其他问题(部署,可伸缩性,集成),现有的工具和解决方案将无法工作,或至少不是很好。

如果您有充分的理由将这两者结合起来,那么请继续,但希望花费更多的时间来解决这些问题,而不是单一的技术解决方案。 如果不这样做,请选择Rails或Java。


2
投票

出于性能原因,我强烈建议您考虑在同一JVM中使用前端和后端。

对于Rails,JRuby可以运行Rails,您可以将它放在Java EE容器中,以提供组件之间的快速通信。

拥有多个不在同一进程中运行的架构需要您进行基于网络的通信,这比仅仅传递对象的引用需要更长的时间(我不希望您想要使用共享内存)。


1
投票

我们使用Ruby on Rails作为前端,使用Core-Java SOAP Api作为后端。 它工作得很好。

主要问题不在于绩效,而在于人民。 在Ruby on Rails中聘请专家非常困难,而不是雇用少数人,或者你可以很容易地学习Rails UI。

从创业的角度来看,这是最好的策略。 很多人认为ROR最适合初创公司......但很少有人知道它,因为在大多数MNC中我们都使用Java,因此学习Rails和Code或者雇用极少数ROR开发人员的压力很大。 因此,您可以使用ROR作为前端(只有少数人这样做,或者很容易学习)并使用经验丰富的Java开发人员来进行数据库更新和业务逻辑。


1
投票

Twitter.com应该使用Java后端,并使用Rails作为其Web界面。 以下是一些资源:

http://www.radicalbehavior.com/5-question-interview-with-twitter-developer-alex-payne/

http://blog.adsdevshop.com/2008/05/02/twitter-is-not-abandoning-rails/

http://twitter.com/#!/ev/status/801530348

更具体地说,他们在后端使用Scala(编译为Java字节代码):

http://www.artima.com/scalazine/articles/twitter_on_scala.html

我不认为这种方法有任何问题。 但是,您将支持两个不同的平台/ VM。 我看到这种情况导致组织内部的专业知识破裂。 而且你最终需要付出很多钱来拥有两套专业知识。

如果分割专业知识的问题涉及到你,我建议运行JRuby of Rails。 它现在非常成熟 - 并且在Ruby 1.8.x上运行得比Rails更好。

© www.soinside.com 2019 - 2024. All rights reserved.