代码之家  ›  专栏  ›  技术社区  ›  paulwhit

从WSDL文件反向工程web服务接口的最佳方法是什么?

  •  3
  • paulwhit  · 技术社区  · 16 年前

    我继承了一个web服务的WSDL文件,但我无法访问该文件进行开发和测试。

    我需要生成一个遵循该WSDL的web服务。包装是。NET,但如果有一种简单的方法可以在另一个平台上实现这一点,我们或许可以考虑一下。生产web服务是基于Java的。

    做这件事的最好方法是什么?

    注意:继承的wsdl似乎与 语言工具 因为它不符合WS-I基本概要v1.1。 特别是,传递它的小组提到它使用了微软工具不支持的另一个标准,但他们没有澄清。该错误与必填的“name”字段有关:

    Error: Element Reference '{namespace}/:viewDocumentResponse' declared in
    schema type '' from namespace ''
           - the required attribute 'name' is missing

    为了清楚起见,我明白我可以很容易地创建一个。NET包装器类,但这不是我需要的。它是这样的:

    更新:原始web服务是使用Axis创建的。

    Diagram of system showing unavailable web service and mock web service http://paulw.us/blog/uploads/SO-WSDL-Question2.gif

    5 回复  |  直到 16 年前
        1
  •  5
  •   Panos    16 年前

    你可能会发现有用的 command line utility wsdl.exe 的。NET使用 /serverInterface 选项。根据文件:

    为服务器端生成接口 ASP的实现。NET Web 服务。为生成一个接口 WSDL文档中的每个绑定。 WSDL单独实现了WSDL 合约(实现 接口不应包括以下任何一项 类方法如下: Web服务属性或 更改序列化属性 WSDL合同)。简称为 “/si”。

        2
  •  1
  •   Vlad N    16 年前

    我们正在使用 WSCF - Web Services Contract First Thinktecture提供的工具,用于进行web服务开发,首先创建XSD模式,然后使用此工具生成服务接口。从WSDL生成服务接口可能很有用,但我自己还没有尝试过。

        3
  •  1
  •   rbrayb    16 年前

    是的,您可以使用WSCF(如上所述)生成服务器端代码。然后可以覆盖实际的URL,以指向您要使用的测试URL。

    然而,这只会生成一个存根。您仍然需要编写实际的代码,例如GetCustomers()方法,这有点可疑,因为您不知道实际的实现是如何工作的。

    然后,您可以模拟它,也可以创建一个简单的ASP web服务器来运行它。

        4
  •  0
  •   user1144 user1144    16 年前

    尝试使用模拟包装器接口 RhinoMocks StructureMap .

        5
  •  0
  •   danswain    16 年前

    不确定这是否有帮助,

    我最近做的是:

    • 使用wsdl工具或visual studio生成.cs文件
    • 我把它改成了部分课程
    • 我创建了另一个分部类,它所做的就是添加一行,说明该类实现了IWhatEver
    • 我创建了一个与生成的代理类相同的接口(因此代理完全实现了该接口)

    然后,在我的例子中,我使用了一个模拟框架(Moq)来模拟WebService,然后我使用了穷人依赖注入(将模拟传递给被测类的构造函数)。.它可以处理IWhatever的实例

    测试走。。

    希望能有所帮助