【问题标题】:Variables in SOAP endpointSOAP 端点中的变量
【发布时间】:2013-04-15 18:55:28
【问题描述】:

我正在为一些具有行业标准 wsdls 的服务编写代理。该项目的目标是让所有参与者将他们的请求发送到代理,无论格式如何,我们将包装消息并将其发送到预期的目标。

然而,弄清楚谁是预期目标已成为一个难题。我考虑过修改 WSDL 以包含一个额外的 SOAP 标头,但我想尽可能避免修改众所周知的行业 wsdls。

我的另一个选择是使用带有一些变量的端点。 /<network>/<service>/ 是现有的服务端点方案。我想做这个/<network>/<service>/<target>/,但只使用<target> 作为实际代码内部的逻辑。我不想为每个 <target> 设置单独的端点,因为它们是可变的,并且无论其内容是什么,它们都是相同的服务和 wsdl。

我无法找到以/<network>/<service>/*/ 有效的方式定义 SOAP 端点的方法。这可能吗?如果是这样,最好的方法是什么?

【问题讨论】:

    标签: soap wsdl endpoints


    【解决方案1】:

    我们使用标题部分来存储路由信息和用户 ID,以及一般元数据。

    但如果你不想这样做,也许WS-Addressing 是相关的?至少,它是标准化的。我认为你仍然必须有一个标题。

    “Web 服务端点是 Web 服务消息可以作为目标的(可引用的)实体、处理器或资源。端点引用传达了识别/引用 Web 服务端点所需的信息,并且可以以多种不同的方式使用: 端点引用适用于传递访问 Web 服务端点所需的信息,但也用于为发送到 Web 服务和从 Web 服务发送的单个消息提供地址。为了处理最后一个用例,本规范定义了一系列消息信息头这允许独立于底层传输的消息的统一寻址。这些消息信息标头传达端到端消息特征,包括源和目标端点的寻址以及消息身份。"

    【讨论】:

    • 我的印象是 WS-Addressing 是在 SOAP 消息中存储路由信息的标准方法。 WS-Addressing 的问题是我们的合作伙伴可能不知道他们打算发送到的确切地址。他们可能只知道组织的名称,并且似乎在 To: 字段中指定有效 URI 以外的任何内容都会违反规范。当您说您将路由信息放在 SOAP 标头中时,您是设计了自己的方法,还是使用了 WS-Addressing?
    • 不,我们不使用 WS-Addressing - 抱歉,我只是在阅读它并认为它可能有用。所以是的,我们只用 XSD 定义自己的 header,并在其中有一个 X 字段,用于从实体管理器中选择数据源。
    • 您使用什么语言提供服务?大概您可以配置多个端点以指向同一个服务,但您可能需要为每个目标创建一个端点。我怀疑你能否使用通配符技术。
    • 这件事还悬而未决,但我已经决定使用 Java 而不是 Python 来完成这项工作。我考虑过为每种可能的组合设置端点,但从代码的角度来看,这工作量太大,难以维护和理解。我决定不做动态端点,而是只使用查询参数。尽管它们通常出现在 REST 中,但我可以要求发件人发送我们路由所需的额外信息作为其请求 URL 的一部分。 http://foo.com/soap/endpoint?target='bar'&&moreData='baz'。提取查询参数并解析它们是一项更容易的任务。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多