我在一个我无权访问开发和测试的系统上继承了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创建的。
答案 0 :(得分:5)
使用/serverInterface
选项可能会发现.NET的command line utility wsdl.exe
很有用。根据文件:
为服务器端生成接口 ASP.NET Web的实现 服务。为其生成接口 WSDL文档中的每个绑定。 WSDL单独实现WSDL 合同(实施该合同的类) 界面不应包括任何一个 关于类方法的以下内容: Web服务属性或 更改的序列化属性 WSDL合同)。简称是 '/ SI'。
答案 1 :(得分:1)
我们正在使用Thinktecture的WSCF - Web Services Contract First工具进行Web服务开发,首先创建XSD架构,然后使用此工具生成服务接口。从WSDL生成服务接口可能很有用,但我自己还没有尝试过。
答案 2 :(得分:1)
是 - 您可以使用WSCF(如上所述)生成服务器端代码。然后可以覆盖实际的URL以指向您要使用的测试URL。
但是,这只会生成一个存根。你仍然需要编码实际的例如GetCustomers()方法有点怀疑,因为你不知道实际的实现是如何工作的。
然后你可以模拟它或创建一个简单的ASP Web服务器来运行它。
答案 3 :(得分:0)
尝试使用RhinoMocks和StructureMap模拟包装器界面。
答案 4 :(得分:0)
不确定这是否有帮助,
我最近做的是:
然后我在我的情况下使用了Mocking框架(Moq)来模拟WebService,然后我使用了差的mans依赖注入(将mock传递给被测试的类的构造函数)..它可以处理IWhatever的一个实例
测试..
希望有所帮助