我有一个来自已发布的ASMX Web服务的WSDL文件。我在追求什么 正在创建一个模拟服务,模仿真实服务以进行测试。
从WSDL中,我使用SvcUtil.exe生成代码。显然它也会产生 服务器端接口。
问题是它会产生很大的接口。例如,一种方法
int Add(int, int)
在生成的.cs文件中显示为AddResponse Add(AddRequest)
。 AddRequest
和AddResponse
有AddRequestBody
和AddRequestResponse
等等。
问题在于,要实现,我需要为每个方法创建正文和响应实例,即使我只想返回一个简单的int
结果。
为什么不能正确生成方法签名?是否有更好的方法从WSDL生成WCF服务器端接口/契约?
答案 0 :(得分:4)
您描述的消息结构由两件事引起:
你不是the first抱怨它,或the last。它是一种通常称为文档/文字包装模式的WSDL绑定样式。它生成文档/文字Web服务,但也支持RPC编程风格。它非常“WS interoperability友好”,可以这么说......
WS-I Basic概要文件指定soap:body
必须只有一个子元素,在这种情况下,它是要调用的操作名称的包装器。作为最佳实践,调用的参数仅被打包到一个元素中,因为它是more flexible to later changes。在WCF的情况下,你通常会得到包含所有参数的a MessageContract which has one MessageBodyMember。
基本上,你看到很久以前网络服务战斗的结果。
以下是关于这个主题的一些额外阅读(这只是冰山一角):