3

我在系统上为 Web 服务继承了一个 WSDL 文件,我无权访问该文件以进行开发和测试。

我需要生成一个遵循该 WSDL 的 Web 服务。包装器是 .NET,但如果有一种简单的方法可以在另一个平台上执行此操作,我们也许可以看看。生产 Web 服务是基于 Java 的。

这样做的最佳方法是什么?

注意:继承的 wsdl 似乎与wsdl.exe不兼容,因为它不符合 WS-I Basic Profile v1.1。特别是,传递它的小组提到它使用了微软工具不支持的另一个标准,但他们没有澄清。该错误与必需的“名称”字段有关:

错误:在中声明的元素引用“{namespace}/:viewDocumentResponse”
来自命名空间 '' 的架构类型 ''
       - 缺少必需的属性“名称”

为清楚起见,我知道我可以轻松地从 WSDL 文件创建一个 .NET 包装类,但这不是我需要的。就像这样:

更新:最初的 Web 服务是使用 Axis 创建的。

显示不可用 Web 服务和模拟 Web 服务的系统图 http://paulw.us/blog/uploads/SO-WSDL-Question2.gif

4

5 回答 5

5

通过使用该选项,您可能会发现 .NET 的命令行实用程序很有用。wsdl.exe/serverInterface根据文档:

为 ASP.NET Web 服务的服务器端实现生成接口。为 WSDL 文档中的每个绑定生成一个接口。WSDL 单独实现 WSDL 契约(实现接口的类不应在类方法中包含以下任何一种:Web 服务属性或更改 WSDL 契约的序列化属性)。缩写形式是“/si”。

于 2008-10-24T19:40:44.197 回答
1

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

于 2008-10-25T01:06:56.050 回答
1

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

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

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

于 2008-10-28T21:22:51.390 回答
0

尝试使用RhinoMocksStructureMap模拟包装器接口。

于 2008-10-24T19:45:31.910 回答
0

不确定这是否会有所帮助,

我最近做的是:

  • 使用 wsdl 工具或 Visual Studio 生成 .cs 文件
  • 我已将其更改为部分课程
  • 我创建了另一个部分类,它所做的只是添加一行来说明该类实​​现了 IWhatEver
  • 我创建了一个与生成的代理类相同的接口(因此代理完全实现了该接口)

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

测试一下。。

希望有帮助

于 2008-10-24T19:52:26.840 回答