我需要在使用 Ruby 还是 Java 进行 SOAP 集成之间做出决定。我的整个 Web 应用程序都是基于 Ruby on Rails 构建的,并且有一个重要的后端组件必须使用 SOAP 与遗留系统集成。
Java 拥有广泛的 SOAP 库,如 Apache Axis,并且似乎与这种类型的“遗留”网络服务集成得很好,而 Ruby 则拥有一些 gem ,如 Savon 和 handSOAP。
我偏向于使用 Ruby 库,但担心性能/可伸缩性问题。使用 Ruby 会带来哪些性能/可扩展性问题?
为了获得更多上下文,与遗留系统的集成有两个组成部分:日常流程,其性能不太重要,以及实时查询引擎,其性能非常重要,因为用户在处理查询时正在等待。
最佳答案
我最近遇到了同样的挑战。我最初使用 Java,但最终使用 Builder 将所有内容移植到 Ruby构造请求和Nokogiri用于解析响应。我也用 SoapUI帮助开发/调试请求。
为什么我最终选择了 Ruby 而不是 Java...
- 更简单的基础架构。如果不需要,为什么要在架构中使用两种不同的范例。如果您的站点是 Ruby on Rails,除非您需要,否则为什么要在其中引入 Java。
- Java 有一些很好的库,例如 Axis,可以将 SOAP 请求转换为对象。但这真的不是什么大问题,但当我的大部分逻辑都在 Ruby 中时,这真的不是什么大问题。对我来说,通过 Nokogiri 使用 DOM 比使用中间 Java 对象要容易得多。
- 我的所有逻辑(ActiveRecord 模型对象、验证等)都是用 Java 编写的。我最终不得不复制诸如数据库持久性之类的逻辑以在 Java 代码和 Rails 代码之间进行通信...嘘
- 性能问题似乎是在转移注意力。如果您正在发出 SOAP 请求,网络开销可能是您的瓶颈,而不是语言解析/执行。
关于Java 与 Ruby 的 SOAP 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5888510/