我有一家初创公司正在考虑构建一个Java后端和一个Rails前端。Java后端将负责为数据库创建缓存层,并提供其他附加服务。Rails前端主要用于创建will应用程序和监控工具。
有哪些初创公司/公司正在使用这种设置?在开发速度、部署、可伸缩性和集成方面有哪些问题?
(对我有帮助的是个人经验或非正式的案例研究。我想去优先解决像Grails或JRuby这样的替代方案,除非它被证明是等式中的一大部分)
谢谢!
发布于 2010-10-28 02:49:49
我从未做过任何rails开发,但以下是我的想法。为什么不直接使用Grails呢?我已经做了相当多的Grails开发,它对于快速原型设计很有效。它还提供了Java、Spring和Hibernate的所有功能。您可以利用Grails在幕后使用Spring和Hibernate来处理缓存以及这些技术支持的任何其他需求,而不是处理两种不同技术之间的通信。如果您有Java开发人员,那么Grails应该不难上手。grails插件的故事还算不错。它们都存储在一个中心位置,很容易获得,但质量因插件作者的不同而不同。您还必须记住,由于Grails使用Groovy,Groovy在语法上类似于Java,并且在JVM上运行,因此使用现有的java代码非常容易,包括大量可用的Java库。我不能确定这一点,但我假设有更多的库可以用于Java和Grails,然后可以用于Ruby语言和Rails。我不能给你打电话说明资源使用情况,但我的问题是,有多少人有设计Rails系统的经验,这些系统在后端使用Java,并伴随着所有伴随而来的陷阱?您可能会发现,当两种技术之间的通信出现问题时,没有人精通调试。
发布于 2010-10-28 02:23:52
我在我的一个项目中使用了类似的对,但我使用的不是RoR,而是Python。我不认为有很大的区别。
一般来说,这类编程没有什么特别之处。你必须关心的两件最重要的事情:
首先是关于系统各部分之间的精确功能分解。我们遇到了一些麻烦,因为我们不知道工作的哪一部分必须由Java完成,哪些部分必须由Python完成。通常,您必须将所有彼此接近的功能连接在一起,而距离较远的功能必须在很少的地方连接。我猜你知道好的模块化的规则,但在组合不同语言的情况下,这必须更仔细地考虑。您还可以对创建几个不同的Java服务感兴趣(例如,一个用于数据库缓存,另一个用于所有其他服务),以便能够自由组合它们,甚至在以后的其他项目中使用它们。
第二个是关于你的部件之间的交流。我可以看到两种通信方式:通过数据库和通过纯网络协议。前者无论如何都需要一些网络通信,所以我们使用纯网络协议,没有任何其他方式连接部件。
我们已经用SOAP做了很多实验,但是它给出了成百上千的错误:这个协议对于连接用一种语言编写的服务是很好的(i.d. )。Java to Java),但对于连接不同语言的服务来说很糟糕-自动生成WSDL的工具为Java和Python提供了不同的结果,手动创建方案既困难又费力。
所以我们习惯于使用REST。它使用了HTTP协议的所有功能,例如所有四个主要HTTP方法(POST、GET、PUT、DELETE)、错误代码和许多其他内容,因此它几乎涵盖了您想要的所有内容。REST的唯一限制是它不能保存状态,因此您可能需要实现自己的会话机制。
如果您对REST不太熟悉,并寻求一些真实的示例,请参阅Facebook Graph API,要用Java语言实现REST服务,您可以使用Restlets。
发布于 2010-10-28 02:17:16
也许我在这里陈述的是显而易见的事实,但这里最大的陷阱是您正在结合两种技术的实际事实。不仅开发速度会变慢-- Rails和所有Java框架都希望拥有一个完整的Ruby/Java应用程序--而且对于您提到的其他问题(部署、可伸缩性、集成),现有的工具和解决方案将无法工作,或者至少不能很好地工作。
如果你有一个令人信服的理由将两者结合起来,那就继续吧,但希望在这些问题上花更多的时间,而不是单一的技术解决方案。如果没有,可以选择Rails或Java。
https://stackoverflow.com/questions/4035999
复制相似问题