觉得 rails 大大简化了 web mvc 的开发,但有一些比较复杂的业务还是用到一些 java 代码来实现,比如我们的数据库就是 oracle,并且要处很复杂的 report。请问高手们,有没有一种方案,可以前台使用 Ruby,后台使用 Java。让 rails 做前台的 web 页面和 controller,后面的业务交给 java 中间件。
稍微复杂一点的网站一般都会采用不同架构的组件来拆分业务,比如 rails 来做前台页面,后台用 java 等做服务端,之间用 rest/soap 服务作 api,也可以考虑做数据库层面的数据交换。
#4 楼 @evil850209 现成的开源项目比较难找,普通的开源项目只关注功能实现,单一架构就可以实现了,一般有异构系统需求的都是较大规模或者较复杂业务场景的地方才会有。其实并不复杂,最简单的,java 写个后台 daemon,在写个 rest api 接口,rails 调用接口获取数据渲染显示就可以。
以前我做过... 就是起了个 web service, 通过 jdbc 访问 oracle, 然后 ruby 里直接 curl 这个 web service 做远程调用...
不过当时环境特殊,数据库连接完全是另外一帮人管的,必须开 jboss 才能连,oracle 密码也是加密存在发布机器,通过 jboss 的一个数据库插件读出来建立连接的,费了点劲破解了密码才能在 jetty 连接... 弄好这个大后门以后在 ruby 拼 sql 送给 web service 执行,就完成和遗留系统间的对接了 -__-
我来帮楼主分析几点:
你说:“觉得 rails 大大简化了 web mvc 的开发,但有一些比较复杂的业务还是用到一些 java 代码来实现,” 现成 JAVA 代码已经存在。但要求不使用 jruby 的情况下希望能有解决方案,既然不能再一个 JAVA 容器调用,那就需要考虑 SOA 的架构,使用消息中间件来隔离语言的独立性。
你的场景既然如此复杂,不如全部使用 JAVA. seam 的全套 solution 可以提供你需要的特性。Rails 无法达到你的环境条件。
#4 楼 @evil850209 可以看看 thrift,thrift 就是专门做这种不同语言之间通讯的,可以 java 做 server , ruby 做 client。我们就是 erlang server, rails client.