【问题标题】:Best way to start Contract First WCF or Web Service?启动 Contract First WCF 或 Web 服务的最佳方式?
【发布时间】:2014-04-10 22:53:50
【问题描述】:

我得到了一个 WSDL 文件和几个 XSD 文件来构建一个 Web 服务。现在我正在尝试设置它以接收请求和响应。

我对 WebServices 的体验仅限于带有 asmx 文件等的旧 asp 版本。

XSD 文件中有很多信息,我不想手动构建这些类,我也不真正理解这到底会带来什么(我想只是一个 xml 可序列化类,但没有'没有调查它)。

我从哪里开始?我研究了 WCF,但它对我来说完全陌生,所以我宁愿使用旧风格,但我正在努力寻找有关如何设置它的任何信息,或者从 XSD 文件自动生成类开始.

我确实尝试了一点 WCF,但是当我尝试生成 WebService 代码时,WSCF blue 给了我错误 (Cannot import wsdl:portType)。 svcutil.exe 将生成一些 XSD 文件信息,但由于某种原因不会全部生成。

那么两个问题:

  1. 如何从 XSD 文件生成一些存根类来实现这一点

  2. 从 WSDL 和多个使用 wscf blue 的 XSD 文件生成 WCF 服务的教程/演练?

【问题讨论】:

    标签: c# xml web-services wcf xsd


    【解决方案1】:

    假设您有一个 WSDL 开始,您可以执行以下操作。当我负责在现有 Web 服务之上实现中间调度层时,我这样做了。新服务应公开与原始服务相同的接口,但在内部执行不同的功能。请注意,我在这里谈论的是“经典”WCF 服务(基于 SOAP)。

    第 1 步:从 WSDL 为服务接口创建代码

    wsdl.exe /si /out:<targetfolder> <url-to-wsdl>
    

    这会生成一个 .cs 文件,其中包含接口和其他数据类型(用于传输对象)。请注意,此文件尚未准备好 WCF,因为 wsdl.exe 似乎假定您要创建旧的 .asmx 服务。

    第 2 步:将界面代码导入您的项目

    将生成的文件添加到您的项目中。添加属性以使接口及其操作为 WCF 做好准备。您需要将 [ServiceContract] 添加到接口并将 [OperationContract] 添加到操作。

    第 3 步:创建 WCF 服务

    创建 WCF 服务(.svc 文件)并摆脱生成的接口。相反,让服务从生成的接口实现合同。现在,您可以实现新功能了。

    第 4 步:调整剩余的绑定、身份验证设置等以匹配原始 Web 服务。

    【讨论】:

      【解决方案2】:

      您可以使用 svcutil.exe 从 wsdl 和 xsd 文件为服务设置的客户端部分生成代理 .cs 类和 app.config 文件。

      以下是将从 Visual Studio cmd 行生成代理的 cmd:

      svcutil.exe c:\OutputFolder\ /o:serviceproxy.cs /config:app.config "C:\WSDL And XSD Folder\*.wsdl" "C:\WSDL And XSD Folder\*.xsd"
      

      【讨论】:

        【解决方案3】:
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-24
        • 1970-01-01
        • 2016-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多