新手问题 在不适用 jruby 的情况下,如何实现前台使用 Ruby,后台使用 Java?

evil850209 · 2013年01月13日 · 最后由 evil850209 回复于 2013年01月17日 · 3697 次阅读

觉得 rails 大大简化了 web mvc 的开发,但有一些比较复杂的业务还是用到一些 java 代码来实现,比如我们的数据库就是 oracle,并且要处很复杂的 report。请问高手们,有没有一种方案,可以前台使用 Ruby,后台使用 Java。让 rails 做前台的 web 页面和 controller,后面的业务交给 java 中间件。

可以用 Java 做个 API 层 让 Ruby 把自己处理不了的业务通过 HTTP API 发送到 Java 那边去 可行吗?

稍微复杂一点的网站一般都会采用不同架构的组件来拆分业务,比如 rails 来做前台页面,后台用 java 等做服务端,之间用 rest/soap 服务作 api,也可以考虑做数据库层面的数据交换。

#2 楼 @alucardpj java 的 orm 还是离远点吧

@alucardpj 是否有可参考的开源项目

#4 楼 @evil850209 现成的开源项目比较难找,普通的开源项目只关注功能实现,单一架构就可以实现了,一般有异构系统需求的都是较大规模或者较复杂业务场景的地方才会有。其实并不复杂,最简单的,java 写个后台 daemon,在写个 rest api 接口,rails 调用接口获取数据渲染显示就可以。

#3 楼 @shiren1118 java 的 orm 没怎么用过,很坑爹吗?

以前我做过... 就是起了个 web service, 通过 jdbc 访问 oracle, 然后 ruby 里直接 curl 这个 web service 做远程调用...

不过当时环境特殊,数据库连接完全是另外一帮人管的,必须开 jboss 才能连,oracle 密码也是加密存在发布机器,通过 jboss 的一个数据库插件读出来建立连接的,费了点劲破解了密码才能在 jetty 连接... 弄好这个大后门以后在 ruby 拼 sql 送给 web service 执行,就完成和遗留系统间的对接了 -__-

@luikore 那样的话是不是就不能利用 ActiveRecord 那些方便的特性了。

#8 楼 @evil850209 既然业务都交给 java 服务了,就和 activerecord 没关系了吧?

我来帮楼主分析几点:

  1. 你说:“觉得 rails 大大简化了 web mvc 的开发,但有一些比较复杂的业务还是用到一些 java 代码来实现,” 现成 JAVA 代码已经存在。但要求不使用 jruby 的情况下希望能有解决方案,既然不能再一个 JAVA 容器调用,那就需要考虑 SOA 的架构,使用消息中间件来隔离语言的独立性。

  2. 你的场景既然如此复杂,不如全部使用 JAVA. seam 的全套 solution 可以提供你需要的特性。Rails 无法达到你的环境条件。

#4 楼 @evil850209 可以看看 thrift,thrift 就是专门做这种不同语言之间通讯的,可以 java 做 server , ruby 做 client。我们就是 erlang server, rails client.

@luikore 说的也是, @xds2000 现在 java 代码还没有,只是写业务的人员只会 java,seam 就不考虑了,更新用 rails 用前台显示。方便快捷。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号