代码之家  ›  专栏  ›  技术社区  ›  JohnIdol

给定wsdl+xds类型的文件,如何创建一个存根wcf webservice?

  •  7
  • JohnIdol  · 技术社区  · 15 年前

    我理解这是一个基本的主题,但在从WSDL开始之前从未这样做。

    我收到了一个WSDL文件和一组带有类型定义的XSD。如果它们是从WCF服务创建的(我想是因为拆分格式),我不知道,但我确实需要创建一个实现契约的WCF服务。

    问题: 如何获取服务合同接口?

    我知道wsdl.exe和svcutil.exe——但不太熟悉什么是什么。 我想在那之后剩下的就是实现服务合同了。

    感谢您的帮助!

    另外,我还有一个关于这个的问题,但我试图在同一个问题中放太多东西——所以现在让我们简单点。

    1 回复  |  直到 12 年前
        1
  •  13
  •   Marek Grzenkowicz    12 年前

    您有两个选择:

    选项1: 在命令行上使用 svcutil.exe utility。它应该安装在您的 c:\program files\microsoft sdks\windows\v6.0a\bin 目录(或类似的目录,取决于您拥有的机器和操作系统)中。

    使用svcutil-?所有参数的列表。基本上,以最简单的形式,使用:

    svcutil(服务名).wsdl(数据文件名).xsd
    < /代码> 
    
    

    这将创建一个对应的(服务名称).csc file with the service and data contracts,and a sample config file.

    生成的*.cs文件(或*.vb,如果您需要vb.net)将包含您的服务的服务约定(方法,由WSDL生成)和数据约定(数据部分,来自xsd)。

    选项2:在Visual Studio中使用“添加服务引用”对话框(在解决方案资源管理器中的“引用”节点上),然后只需输入WSDL文件的文件名:

    这将创建一个服务引用,基本上与来自Visual Studio的svcutil.exe的输出相同。utility-加上一些助手类和文件。

    不幸的是,在这两种情况下,导入都会创建一个严重过载的配置文件,这可能是许多程序员认为wcf非常复杂的原因之一——实际上不是,但这两个导入工具在为您创建基本配置方面做得非常糟糕……别让那吓跑你!

    如果WSDL的添加服务引用没有自动转换所有相关和必需的XSD文件,则可能需要将这些文件添加到项目中,然后使用类似于xsd2codexsd2code的内容将这些文件转换为c(或vb.net)类。

    wsdl.exe是不推荐使用的实用程序,用于将WSDL文件转换为asmx(a s p.net webservice)存根-不要再使用它,请使用svcutil.exe或Visual Studio的“为wcf添加服务引用”。

    关于如何创建一个适当的和最小的wcf配置,请查看Dotnet Rocks电视节目122,Miguel Castro的标题为extreme wcf.>Miguel提供了一种很好的方法来构建您的WCF项目,并根据实际需要创建尽可能多的配置(因此可以比svcutil生成的混乱更好地理解)。

    命令行上的实用程序。它应该安装在您的C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin目录(或类似的东西,取决于您拥有的机器和操作系统)

    使用VCuTIL?所有参数的列表。基本上,以最简单的形式,使用:

    svcutil  (name of your service).wsdl (name of your datafile).xsd
    

    这将创建一个(name of your service).csc与服务和数据协定一起使用的文件,以及一个示例配置文件。

    生成的*.cs文件(或*.vb,如果您需要vb.net)将包含您的服务的服务约定(方法,由WSDL生成)和数据约定(数据部分,来自XSD)。

    选项2:使用Visual Studio中的“添加服务引用”对话框(在解决方案资源管理器的“引用”节点上),只需输入WSDL文件的文件名:

    Add Service Reference dialog

    这将创建一个服务引用,基本上与svcutil.exe文件实用程序-外加一些用于Visual Studio的帮助程序类和文件。

    不幸的是,在这两种情况下,导入都会创建一个严重过载的配置文件,这可能是许多程序员认为wcf非常复杂的原因之一——实际上不是,但这两个导入工具在为您创建基本配置方面做得非常糟糕……别让那吓跑你!

    如果WSDL的添加服务引用没有自动转换所有相关和必需的XSD文件,您可能需要将这些文件添加到项目中,然后使用XSD2Code将它们转换为C(或vb.net)类。

    这个wsdl.exe是用于将WSDL文件转换为ASMX(ASP.NET WebService)存根的已弃用实用程序-不再使用该实用程序,请使用SvCuTel.EXE或Visual Studio的“为WCF添加服务引用”。

    至于如何创建一个适当的和最小的wcf配置,请查看miguel castro标题为的dotnet rocks电视节目122。Extreme WCF. Miguel提供了一种很好的方法来构建您的WCF项目,并创建尽可能多的实际需要的配置(因此可以比svcutil生成的混乱更好地理解)。