【问题标题】:Best way to create WCF "server side code" service from existing WSDL从现有 WSDL 创建 WCF“服务器端代码”服务的最佳方式
【发布时间】:2015-11-04 17:58:55
【问题描述】:

我有一个现有的 wsdl 和 xsd 文件。现在,我想基于现有的 WSDL 创建 WCF“服务器端代码”服务。 我知道 svcutil.exe 生成主机(客户端)代码。我不想要客户端。请问,谁能帮帮我?

【问题讨论】:

  • WSDL 是一种 XML 格式,用于将网络服务描述为一组对包含面向文档或面向过程的信息的消息进行操作的端点。它不包含服务器端代码。如果您需要服务器端代码,则需要在 DLL 上使用反汇编程序。
  • 您需要在 WCF 服务库上使用 Disassembler。反光板:red-gate.com/products/dotnet-development/reflector; ILSpyilspy.net; DotPeek jetbrains.com/decompiler

标签: c# wcf wsdl


【解决方案1】:

为此,您可以尝试使用带有 /out: 选项的 svcutil。

还有一个old sample here

【讨论】:

    【解决方案2】:

    使用 xsd /c /l:cs /n:Namespace.You.Want FilenameRequest.xsd FilenameResponse.xsd

    使用约定的 XML 合同生成 c# 类。你会得到类似ResponseClass.cs 和RequestClass.cs

    然后创建您的服务,将生成的请求类作为消息参数传递。强制服务使用 XmlSerializer 而不是 DataContractSerializer。像这样的:

    [ServiceContract, XmlSerializerFormat(Style = OperationFormatStyle.Document, 
        Use = OperationFormatUse.Literal)]
    public interface IService
    {
        [OperationContract()]
        ResponseClass YourRequestOperation(
            [MessageParameter(Name="NameInAgreedContract")] RequestClass rq);
    }
    

    然后创建接口的实现。部署它。利润。

    【讨论】:

      【解决方案3】:

      在我的情况下,客户端会生成一个非常具体的 wsdl 文件,他给了我一个类定义所在的其他 xsd 文件。我只想要接口标头的结构(System.SerializableAttribute,XmlTypeAttribute ...),因为 DataContract 和 DataMember 未在 wsdl 文件中给出结果。 当我使用 svcutil 时,我只是与 wsdl 文件稍微对齐,但差异仍然是绑定、端口名称。还有像“intf”这样的前缀而不是“tns”。

      【讨论】:

      • 当我使用 svcutil 时,我只是稍微与 wsdl 文件对齐,但在绑定、端口名称和其他方面仍然存在差异。还有诸如前缀“intf”而不是“tns”之类的东西。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-09
      相关资源
      最近更新 更多