【发布时间】:2014-08-20 05:15:21
【问题描述】:
我是一名 Python 程序员,我们有一个用于 Web 项目的 Python 后端,我们使用 Python Web 服务器 (Tornado) 来提供 REST Web 服务。
几个月前,我们被要求为客户提供 SOAP,令我们惊讶的是 Python 3 的 SOAP 公开能力非常差。我们尝试了Ladon 和TornadoWS 包,但两者都有其局限性。甚至有些会产生不符合相应 WSDL 的无效响应。
所以现在我认为更好的方法是使用 Java 制作 SOAP 接口,这将使用我们的 Python 后端的 Web 服务。我有一些 Java 经验,但主要是使用 Struts 框架。我需要找到一个轻量级但高度可定制的解决方案。
我目前正在寻找的是:
- 完全按照我们客户现有的 WSDL 上显示的方式模仿 WSDL(客户将使用我们的服务,但他们希望进行最少的更改)。
- 100% 有效的soap/xml 响应和WSDL! (令人惊讶的是,我们尝试的一些第 3 方 Python 包会生成无效响应)。 .NET 平台将使用 SOAP 服务。
- 我们需要最大限度地控制生成的 WSDL 的元素名称和命名空间,以便客户端可以透明地切换到我们的 Web 服务。
- 一种用于在 Java 中公开 SOAP 1.1 和 1.2 服务的轻量级解决方案,可扩展到许多并发请求。
- 此 Java 接口将调用我们的 Python 后端的 REST Web 服务。所以我正在寻找特别适合此目的的东西。
- 现在我们将 nginx + tornado 用于我们的 REST Web 服务,我正在 Java 中寻找类似的东西。特别是解决c10k 问题的东西。基本上,Java 接口所做的只是接受 SOAP 请求,进行 HTTP 调用并返回这些响应。所以我认为期待类似Tornado 的东西是合理的,它提供非阻塞网络 I/O 并且可以很好地扩展。
我知道这个问题可能被认为没有建设性,但我真的在这里寻找一些好的意见,因为我没有在网络上找到信息(可能是由于我搜索不佳)。 em>
我也愿意接受其他可能的解决方案来解决我们的问题。
【问题讨论】:
-
简单使用spring-ws