【问题标题】:How does .net internally call wsdl webservice method?.net 内部如何调用 wsdl webservice 方法?
【发布时间】:2013-05-18 11:12:33
【问题描述】:

我想了解基本机制:据我所知,.net 解析 wsdl(使用 ServiceDescription 类)并生成将进行调用的代理类。

但是这些代理类是如何生成的呢?通过 CodeDom 或其他方式?

【问题讨论】:

    标签: c# asp.net .net web-services


    【解决方案1】:

    我使用 dotPeek 反编译了 wsdl.exe,据我了解,它使用 CodeDomProvider 进行代码生成。这就是GenerateCode 方法签名的样子。

      private void GenerateCode(DiscoveryClientDocumentCollection[] documents, 
         CodeDomProvider codeProvider, WsdlParameters parameters, string outputFileName)
      {
       ...    
      }
    

    【讨论】:

    • 感谢您的信息,也将查看 dotPeek。
    【解决方案2】:

    代理类是从元数据生成的。通常,服务会公开它的公共合约元数据合约。

    在 WCF 服务中,元数据会以类似的方式公开

    <endpoint address="mex" 
        binding="mexHttpBinding" 
        contract="IMetadataExchange"/>
    

    您可以阅读有关元数据标准 here 和 WCF import-export metadata docs 的更多信息。

    如果没有公开元数据合约,则无法生成代理。

    【讨论】:

    • 我对 WCF 不熟悉,但我对 asmx 和 wsdl 的了解更多,但谢谢,我想我也需要这些信息。
    猜你喜欢
    • 1970-01-01
    • 2018-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-14
    相关资源
    最近更新 更多