使用WSDL从WCF托管服务 - SVCUtil为方法生成详细类型

时间:2012-02-21 01:35:27

标签: wcf web-services soap wsdl

我有一个来自已发布的ASMX Web服务的WSDL文件。我在追求什么 正在创建一个模拟服务,模仿真实服务以进行测试。

从WSDL中,我使用SvcUtil.exe生成代码。显然它也会产生 服务器端接口。

问题是它会产生很大的接口。例如,一种方法 int Add(int, int)在生成的.cs文件中显示为AddResponse Add(AddRequest)AddRequestAddResponseAddRequestBodyAddRequestResponse等等。

问题在于,要实现,我需要为每个方法创建正文和响应实例,即使我只想返回一个简单的int结果。

为什么不能正确生成方法签名?是否有更好的方法从WSDL生成WCF服务器端接口/契约?

1 个答案:

答案 0 :(得分:4)

您描述的消息结构由两件事引起:

  • 跨Web服务堆栈及其编程模型(RPC与消息传递)之间更好的互操作性;
  • 灵活地将新参数容纳到现有的Web服务中。

你不是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

基本上,你看到很久以前网络服务战斗的结果。

以下是关于这个主题的一些额外阅读(这只是冰山一角):