【发布时间】:2013-05-18 11:12:33
【问题描述】:
我想了解基本机制:据我所知,.net 解析 wsdl(使用 ServiceDescription 类)并生成将进行调用的代理类。
但是这些代理类是如何生成的呢?通过 CodeDom 或其他方式?
【问题讨论】:
标签: c# asp.net .net web-services
我想了解基本机制:据我所知,.net 解析 wsdl(使用 ServiceDescription 类)并生成将进行调用的代理类。
但是这些代理类是如何生成的呢?通过 CodeDom 或其他方式?
【问题讨论】:
标签: c# asp.net .net web-services
我使用 dotPeek 反编译了 wsdl.exe,据我了解,它使用 CodeDomProvider 进行代码生成。这就是GenerateCode 方法签名的样子。
private void GenerateCode(DiscoveryClientDocumentCollection[] documents,
CodeDomProvider codeProvider, WsdlParameters parameters, string outputFileName)
{
...
}
【讨论】:
代理类是从元数据生成的。通常,服务会公开它的公共合约和元数据合约。
在 WCF 服务中,元数据会以类似的方式公开
<endpoint address="mex"
binding="mexHttpBinding"
contract="IMetadataExchange"/>
您可以阅读有关元数据标准 here 和 WCF import-export metadata docs 的更多信息。
如果没有公开元数据合约,则无法生成代理。
【讨论】: