WCF 如何从 wsdl 和 xsd 生成服务 - 合同优先

Posted

技术标签:

【中文标题】WCF 如何从 wsdl 和 xsd 生成服务 - 合同优先【英文标题】:WCF How to generate service from wsdl and xsd - Contract First 【发布时间】:2014-07-14 21:05:04 【问题描述】:

我需要根据外部方定义的 wsdl 和 xsd 生成 Web 服务。这适用于医疗保健和 wsdl,xsd 由外部委员会定义,并且必须按照定义(www.caqh.org/SOAP/WSDL/CORERule2.2.0.wsdl www.caqh.org/SOAP/WSDL/CORERule2. 2.0.xsd)

是否有在 dot net 中生成 c# 类的工具?我正在使用 VS2012 和点网框架 4.0。我的背景是 Java,在使用带有适当开关的 Axis2 wsdl2java 之类的工具之前,我已经完成了这项工作。我的目标是获得一个骨架接口和类,并用 wsdl 和 xsd 中定义的所需注释进行修饰。然后我可以填写方法和业务逻辑。我看到一些在线帖子提到了 svcutil.exe 的使用,但它们都解决了如何生成客户端代码而不是 Web 服务代码。

【问题讨论】:

你可以看一下WSCF.blue,不过貌似3年没更新了。 可能重复 SO ***.com/questions/950150/… 如何使用 WSDL 文件创建 WCF 服务(不拨打电话) 【参考方案1】:

您也可以使用svcutil.exe。

我下载了 wsdl 和 xsd 并运行了这个命令

svcutil.exe /t:code /serviceContract /out:"c:\core\myservice.cs" "c:\core\*"

它生成接口和请求/响应类。唯一的事情就是创建一个实现这个接口的类。以默认 wcf 应用程序项目类型为例。

您可以进一步试验 svcutil.exe 参数。例如,它还可以生成带有绑定的 wcf 客户端和配置文件。看看我在文章开头提到的文档。

【讨论】:

谢谢。我运行命令 svcutil.exe /t:code "C:\core\CORERule2.2.0.wsdl" /out:"C:\core\myservice.cs" "C:\core*" 并生成了接口和类。我在类文件中缺少诸如 [ServiceContract] [OperationContract] [DataContract] [DataMember] 的注释。我是否必须为这些提供额外的开关,还是需要手动输入? 接口中的每个方法都设置了操作契约属性。 Servicecontract 属性也在接口上设置。 DataContract 和 datamember 属性不存在,因为 xmlserializer 用于请求和响应的序列化和反序列化。我认为使用 xmlserializer 不会有问题,在某些情况下使用它来代替 datacontract 序列化器甚至很有用。

以上是关于WCF 如何从 wsdl 和 xsd 生成服务 - 合同优先的主要内容,如果未能解决你的问题,请参考以下文章

能否结合来自 WCF 服务的 WSDL 和 XSD 数据?

如何从 wsdl 生成 xsd

XSD 第一个合约 - WCF Soap Web 服务

如何更改 WCf 服务的 wsdl 文件中的默认模式位置?

如何仅针对某些端点从 WSDL 生成 WCF 客户端?

如何从wsdl生成xsd