我继承了系统上 Web 服务的 WSDL 文件,但我无权访问该文件进行开发和测试。

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

执行此操作的最佳方法是什么?

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

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

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

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

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

有帮助吗?

解决方案

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

其他提示

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

  

为服务器端生成接口   ASP.NET Web的实现   服务。为其生成接口   WSDL文档中的每个绑定。   WSDL单独实现WSDL   合同(实施该合同的类)   界面不应包括任何一个   关于类方法的以下内容:   Web服务属性或   更改的序列化属性   WSDL合同)。简称是   '/ SI'。

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

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

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

尝试使用 RhinoMocks StructureMap

不确定这是否有帮助,

我最近所做的是:

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

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

测试一下..

希望有帮助

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top